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

Kyl*_*yle 5 opengl-es depth-buffer ios

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

afDepthPixels = (float*)malloc(sizeof(float) * iScreenWidth * iScreenHeight);
glReadPixels(0, 0, iScreenWidth, iScreenHeight, GL_DEPTH_COMPONENT, GL_FLOAT, afDepthPixels);
Run Code Online (Sandbox Code Playgroud)

我的深度缓冲区当前绑定到位并且可操作,但是该函数只读取0值,并且它似乎几乎立即返回.如果我给它一个GL_RGBA,它将需要一段时间,并且确实会返回结果.iOS上的ES2是否不支持此功能?

谢谢!

Tom*_*mmy 5

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

从内存来看,iOS的最新版本支持深度纹理,因此应该可以运行像素着色器将深度缓冲区转换为可以读取为RGBA的内容,如果您处于死胡同的话.