use*_*129 9 opengl multisampling
我对了解多重采样的工作原理非常感兴趣.我已经找到了关于如何启用或使用它的大量文献,但是关于它为了实现抗锯齿渲染它真正做了什么的信息非常少.在许多地方,我发现的是相互矛盾的信息,这些信息只会让我更加困惑.
请注意,我知道如何启用和使用多重采样(我实际上已经在使用它),我不知道的是多重采样渲染缓冲区/纹理中真正涉及的是什么类型的数据,以及如何在渲染管道中使用这些数据.
我可以很好地理解超级采样是如何工作的,但是多重采样仍然有一些我想要理解的模糊区域.
这是规格说的:(OpenGL 4.2)
像素样本值(包括颜色,深度和模板值)存储在此缓冲区(多重采样缓冲区)中.样本包含每种片段颜色的单独颜色值.
...
在多重采样渲染期间,像素片段的内容以两种方式改变.首先,每个片段包括具有SAMPLES位的覆盖值.
...
其次,每个片段包括SAMPLES深度值和关联数据集,而不是单样本渲染模式中维护的单个深度值和关联数据集.
因此,每个样本都包含不同的颜色,覆盖位和深度.与普通超级采样有什么区别?看起来像是对我的"加权"超级采样,其中每个最终像素值由其样本的覆盖值而不是简单平均值确定,但我对此非常不确定.那么样本级别的纹理坐标呢?
如果我在RGBF多重采样纹理中存储法线,我会在多边形的边缘上将它们"反锯齿"(即接近0)读回来吗?
每个片段调用一次片段着色器,除非它使用gl_SampleID,glSampleIn或具有"样本"存储限定符.如何为每个片段调用一次片段着色器并获得抗锯齿渲染?
Silicon Graphics Systems上的OpenGL:
http://www-f9.ijs.si/~matevz/docs/007-2392-003/sgi_html/ch09.html#LE68984-PARENT
提及:当您使用多重采样并回读颜色时,您将获得已解析的颜色值(即样本的平均值).当您回读模板或深度时,通常会返回单个样本值而不是平均值.该样本值通常是最接近像素中心的样本值.
这是来自OpenGL网站的技术规范(1994).它详细解释了如何启用MULTISAMPLE_SGIS:http://opengl.org/registry/specs/SGIS/multisample.txt
另请参阅此相关问题:多重采样时,如何在OpenGL纹理中解析深度值?
以及这个问题的答案,建议使用GL_MULTISAMPLE_ARB:GL_MULTISAMPLE定义在哪里?.GL_MULTISAMPLE_ARB(2002)的规范如下:http://www.opengl.org/registry/specs/ARB/multisample.txt