Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 我选择的GLFW_样本实际上有什么作用?_Opengl_Graphics_Glfw_Multisampling - Fatal编程技术网

Opengl 我选择的GLFW_样本实际上有什么作用?

Opengl 我选择的GLFW_样本实际上有什么作用?,opengl,graphics,glfw,multisampling,Opengl,Graphics,Glfw,Multisampling,设置此变量的作用是什么?例如,如果我将其设置为4,这意味着什么 我在glfw.org(参见此处:)的“帧缓冲区相关提示”部分中阅读了一篇描述。手册中说:“GLFW_SAMPLES指定用于多重采样的所需样本数。零禁用多重采样。GLFW_don_CARE表示应用程序没有首选项。” 我还阅读了多采样的一般描述(参见此处:Shawn Hargreaves) 我大致了解了多重采样的含义:在调整图像大小和重画图像时,用于重画图像的点数应该足够接近,以便我们看到的是图像的精确表示。数字示波器也会出现同样的想法

设置此变量的作用是什么?例如,如果我将其设置为4,这意味着什么

我在glfw.org(参见此处:)的“帧缓冲区相关提示”部分中阅读了一篇描述。手册中说:“GLFW_SAMPLES指定用于多重采样的所需样本数。零禁用多重采样。GLFW_don_CARE表示应用程序没有首选项。”

我还阅读了多采样的一般描述(参见此处:Shawn Hargreaves)

我大致了解了多重采样的含义:在调整图像大小和重画图像时,用于重画图像的点数应该足够接近,以便我们看到的是图像的精确表示。数字示波器也会出现同样的想法——假设你正在对正弦信号进行采样。如果采样率恰好等于波的频率(f),示波器显示恒定电压,这与您希望看到的输入信号大不相同。为了避免这种情况,奈奎斯特定理告诉我们应该以至少2f的速率采样。所以我看到了计算机图形学中的问题是如何产生的,但我不知道具体的功能是什么

glfwWindowHint(GLFW_样本,4)可以

设置此变量的作用是什么?例如,如果我将其设置为4,这意味着什么

GLFW_SAMPLES
用于启用多重采样。因此,
glfwWindowHint(GLFW_SAMPLES,4)
是在应用程序中启用4x的一种方法

4x MSAA表示窗口缓冲区的每个像素由4个子样本组成,也就是说,每个像素由4个像素组成。因此,大小为200x100像素的缓冲区实际上是800x400像素


如果要创建一个比屏幕大4倍的额外帧缓冲区。然后将其用作纹理采样器,并使用
GL_LINEAR
作为过滤器,将基本实现相同的结果。请注意,这仅适用于4x MSAA,因为
GL_LINEAR
仅采集距离所述像素最近的4个样本

说到抗锯齿,那么使用MSAA是一个非常有效但昂贵的解决方案。如果你想要一个非常干净和好看的结果,那么这绝对是一条路要走。通常选择4x MSAA,因为使用它可以在质量和性能之间取得很好的平衡

就性能而言,更便宜的选择是使用。这是一个后处理步骤,通常是免费的。不同之处在于,MSAA以更大的大小渲染,并将采样减小到所需的大小,而不会丢失任何质量。其中,as FXAA简单地按原样平均像素,基本上使图像模糊。FXAA通常会给出一个非常好的结果

此外,您的驱动程序很可能在默认情况下启用它。但如果没有,则使用
glEnable(GL\u MULTISAMPLE)



最后,若你们还并没有,那个么我强烈推荐你们阅读教程。它对所有这些都给出了非常深入的解释。

FXAA有GLFW提示吗?AA教程链接不包含“FXAA”,但它确实提到编写着色器来执行自定义AA。@TankorSmash FXAA是在着色器中完成的后期处理效果。维基百科页面上的一些参考资料详细阐述了它的工作原理。但本质上,对于每个像素,平均n个周围纹理。