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

发布于 2024-11-18 09:54:54 字数 365 浏览 2 评论 0原文

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

谢谢!

I can't seem to read the depth buffer values in OpenGL ES2 on iOS 4.3

afDepthPixels = (float*)malloc(sizeof(float) * iScreenWidth * iScreenHeight);
glReadPixels(0, 0, iScreenWidth, iScreenHeight, GL_DEPTH_COMPONENT, GL_FLOAT, afDepthPixels);

My depth buffer is currently bound in place and operational, however that function reads nothing but 0 values, and it seems to return almost immediately. If I give it a GL_RGBA, it will take quite a while, and will indeed return results. Is this functionality just not supported in ES2 on iOS?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

友谊不毕业 2024-11-25 09:54:54

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

根据记忆,最新版本的 iOS 支持深度纹理,因此如果您陷入困境,应该可以运行像素着色器将深度缓冲区转换为可以读取为 RGBA 的内容。

As you guess, reading the depth buffer isn't supported in ES 2.x. Per the glReadPixels man page (direct from Khronos) the only permissible values for 'format' in ES 2 are GL_ALPHA, GL_RGBA and GL_RGB.

From memory, depth textures are supported on recent versions of iOS, so it should be possible to run a pixel shader to convert a depth buffer into something you can read as RGBA if you're otherwise at a dead end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文