当启用 MSAA 16x 时,我在渲染带纹理的全屏四边形时遇到问题。
场景是:
- 使用 MSAA 16x (A) 创建 FBO
- 创建没有 MSAA 的 FBO 以解决抗锯齿的 FBO (B)
- 将 FBO-A 与 MSAA 绑定
- 渲染全屏纹理四边形:
- 缩小过滤 GL_LINEAR
- 与 FBO (A & B) 大小相同
- 1:1 像素/纹素映射
- 使用 glBlitFramebuffer(0,0,w,h,0,0,w,h,color, GL_NEAREST) 将 FBO-A 解析为 FBO-B
FBO-B(没有 msaa)中的结果是模糊的。映射是按 1:1 像素/纹素完成的,因此过滤应该不会影响。
一些测试:
- 如果 MSAA 配置为 8 倍,则结果清晰,不存在模糊图像。我认为这是正确的,而 MSAA 16x 不会发生什么。
- 如果将过滤配置为 GL_NEAREST 结果是正确的。
- 使用 nvidia 480、580、680、780 和 980 进行测试
问题:
- 如果过滤是 GL_LINEAR,结果(模糊)是否正确?
- 可能是驱动程序失败?某种优化?