glReadPixels在iOS上无法读取深度缓冲区的值

5

在iOS 4.3上,我似乎无法读取OpenGL ES2中的深度缓冲区数值。

afDepthPixels = (float*)malloc(sizeof(float) * iScreenWidth * iScreenHeight);
glReadPixels(0, 0, iScreenWidth, iScreenHeight, GL_DEPTH_COMPONENT, GL_FLOAT, afDepthPixels);

我的深度缓冲区已经绑定并且运行正常,但是这个函数只读取0值,并且似乎几乎立即返回。如果我给它一个GL_RGBA,那么它会花费相当长的时间,并确实返回结果。这个功能在iOS上的ES2中是否不支持?

谢谢!

1个回答

5
正如你所猜测的那样,在ES 2.x中不支持读取深度缓冲区。根据Khronos的glReadPixels手册(直接来自Khronos),ES 2中'format'的唯一允许值为GL_ALPHA,GL_RGBA和GL_RGB。
从记忆中得知,最近版本的iOS支持深度纹理,因此,如果您陷入了死胡同,可以运行像素着色器将深度缓冲区转换为可读取的RGBA格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接