【问题标题】:glReadPixels doesn't read depth buffer values on iOSglReadPixels 不读取 iOS 上的深度缓冲区值
【发布时间】:2011-09-27 16:07:40
【问题描述】:

我似乎无法在 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 是否不支持此功能?

谢谢!

【问题讨论】:

    标签: ios opengl-es depth-buffer


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-13
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2011-02-05
      • 2018-06-19
      相关资源
      最近更新 更多