1

假设我renderbuffer像这样格式化:

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

where sampleCount >= 2.

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

我会得到什么整数?

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

4

1 回答 1

3

在 OpenGL 4.5 规范的第 511 页,在第 18.3.1 节“Blitting Pixel Rectangles”下,它说(强调添加):

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

所以它为每个像素选择一个样本,而不指定是哪个样本。

于 2015-05-06T06:12:31.803 回答