Mik*_*ell 10 opengl graphics multisampling glfw
设置此变量有什么作用?例如,如果我将其设置为4,那意味着什么?
我在"Framebuffer相关提示"部分下阅读了glfw.org上的描述(参见这里:GLFW窗口指南).手册中说"GLFW_SAMPLES指定了用于多重采样的所需样本数.Zero禁用多重采样.GLFW_DONT_CARE表示应用程序没有首选项."
我还阅读了一般的多重采样说明(参见此处: Shawn Hargreaves的多重采样).
我大致了解多重采样的含义:在调整图像大小和重新绘制图像时,用于重绘图像的点数应该足够接近,以便我们看到的是图像的精确表示.数字示波器也会出现同样的想法 - 比如你正在采样正弦信号.如果采样速率恰好恰好等于波的频率(f),则示波器显示恒定电压,这与您希望看到的输入信号非常不同.为了避免这种情况,奈奎斯特定理告诉我们,我们应该以至少2f的速率进行采样.所以我看到计算机图形学中会出现问题,但我不知道究竟是什么功能
glfwWindowHint(GLFW_SAMPLES, 4); 确实.
Val*_*tin 11
设置此变量有什么作用?例如,如果我将其设置为4,那意味着什么?
GLFW_SAMPLES用于启用多重采样.因此,在您的应用程序中glfwWindowHint(GLFW_SAMPLES, 4) 启用4x MSAA是一种方法.
4x MSAA意味着窗口缓冲区的每个像素由4个子样本组成,这意味着每个像素由4个像素组成.因此,尺寸为200x100像素的缓冲区实际上是800x400像素.
如果你要创建一个比屏幕大4倍的额外帧缓冲.然后将其用作具有GL_LINEAR滤波器的纹理采样器,基本上可以实现相同的结果.请注意,这仅适用于4x MSAA,因为GL_LINEAR只需要最接近相关像素的4个样本.
在抗锯齿方面,使用MSAA是一种非常有效但昂贵的解决方案.如果你想要一个非常干净和美观的结果,那么它绝对是你要走的路.通常选择4x MSAA,因为使用它可以在质量和性能之间取得良好的平衡.
性能方面更便宜的替代方案是使用FXAA.这是作为后处理步骤完成的,通常是免费的.不同之处在于MSAA以更大的尺寸呈现,并且下采样到所需的尺寸,而不是失去任何质量.FXAA只是按原样平均像素,基本上使图像模糊.FXAA通常会给出非常好的结果.
此外,您的驱动程序很可能默认启用它.但如果它没有那么使用glEnable(GL_MULTISAMPLE).
最后,如果您还没有,那么我强烈建议您阅读LearnOpenGL的抗锯齿教程.它对所有这些进行了非常深入的解释.
| 归档时间: |
|
| 查看次数: |
5009 次 |
| 最近记录: |