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

时间:2011-07-03 15:31:11

标签: ios opengl-es depth-buffer

我无法在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 个答案:

答案 0 :(得分:5)

正如您猜测的那样,ES 2.x不支持读取深度缓冲区。根据{{​​3}}(直接来自Khronos),ES 2中“格式”的唯一允许值为GL_ALPHA,GL_RGBA和GL_RGB。

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