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 是否不支持此功能?

谢谢!

4

1 回答 1

5

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

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

于 2011-07-04T02:19:00.090 回答