OpenGL 4.2规范(第3.3.1节)明确指出:
,因为每个示例都包含颜色、深度和模板信息,因此颜色(包括纹理操作)、深度和模板功能以等效的方式执行单个示例模式。--一个称为多样本缓冲区的附加缓冲区被添加到框架缓冲区中。像素示例值(包括颜色、深度和模板值)存储在该缓冲区中。样本包含每个片段颜色的单独颜色值。当框架缓冲区包含多样本缓冲区时,它不包括深度或模板缓冲区,即使多样本缓冲区不存储深度或模板值。然而,颜色缓冲区确实与多样本缓冲区共存。
但是,如果我需要深度/模板测试,我必须设置一个depth_stencil多采样渲染缓冲区。
这与规格不符还是我漏掉了什么?
发布于 2012-01-12 20:34:40
好吧让我想想。第4.4.4节规定:
一个框架缓冲区对象被认为是完整的帧缓冲区,如果它所附的所有图像,以及使用该帧缓冲区进行渲染和读取所需的所有帧缓冲区参数都是一致定义的,并且满足以下定义的要求。帧缓冲区完整性规则依赖于附加图像的属性和某些依赖于实现的限制。
在“下文”提到的许多规则中:
所有附加呈现缓冲区的RENDERBUFFER_SAMPLES值都是相同的;对于所有附加的tex-tures,TEXTURE_SAMPLES的值是相同的;如果附加的图像是渲染缓冲区和纹理的混合,则RENDERBUFFER_SAMPLES的值与纹理_-样本的值相匹配。
因此,如果您的深度/模板缓冲区不是多采样,而您的颜色缓冲区是多采样,那么您的FBO将不完整。并且不能将其呈现给不完整的框架缓冲区对象。
因此,是的,您不仅需要确保它们是多采样的,而且它们必须使用相同数量的样本。
https://stackoverflow.com/questions/8832902
复制相似问题