我无法在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是否不支持此功能?
谢谢!
答案 0 :(得分:5)
正如您猜测的那样,ES 2.x不支持读取深度缓冲区。根据{{3}}(直接来自Khronos),ES 2中“格式”的唯一允许值为GL_ALPHA,GL_RGBA和GL_RGB。
从内存来看,iOS的最新版本支持深度纹理,所以应该可以运行一个像素着色器将深度缓冲区转换为可以读取为RGBA的内容,如果你处于死胡同的话。