glReadPixels不读取iOS上的深度缓冲区值

我似乎无法读取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,这将需要一段时间,并且确实会返回结果。 这个function在iOS的ES2上不被支持?

谢谢!

正如你所猜测的,在ES 2.x中不支持读取深度缓冲区。 根据glReadPixels手册页 (直接来自Khronos),ES 2中'格式'的唯一允​​许值是GL_ALPHA,GL_RGBA和GL_RGB。

从内存中,深度纹理在最新版本的iOS上受支持,所以应该可以运行像素着色器来将深度缓冲区转换为可以作为RGBA读取的内容,除非您处于死路一条。

Interesting Posts