OpenGL如何解析多像素FBO附加颜色缓冲区,其像素格式是基于整数的?

时间:2015-05-06 05:35:34

标签: opengl integer fbo multisampling

假设我像这样格式化 renderbuffer

glRenderbufferStorageMultisample(GL_RENDERBUFFER, sampleCount, GL_R32UI, imageWidth, imageHeight);

where sampleCount >= 2.

假设我将它附加到FBO,将一些东西放入其中,将其blit到非多采样FBO以解析多重采样,最后调用glReadPixels从结果图像中取回一些无符号整数(每个像素一个)

我会得到什么整数?

它们中的一些可能是多个样本的混合,或者在这种情况下每个像素只选择一个样本(可能是因为基于整数的格式在此上下文中不被认为是可混合的),其他样本被丢弃?还是会发生其他事情?

1 个答案:

答案 0 :(得分:3)

在OpenGL 4.5规范的第511页上,在第18.3.1节" Blitting Pixel Rectangles"中,它表示(强调添加):

  

如果读取帧缓冲区是多重采样(其有效值SAMPLE_BUFFERS为1)且绘制帧缓冲区不是(其SAMPLE_BUFFERS的值为零),则对应于源中每个像素位置的样本在写入目标之前转换为单个样本。过滤器被忽略。如果源格式为整数类型或模板值,则为每个像素选择单个样本的值

因此,每个像素选择一个样本,而不指定哪个样本。