glDepthMask(GL_FALSE)会破坏某些GPU上的帧缓冲区

Ebo*_*ike 6 android opengl-es depth-buffer opengl-es-2.0

我有时会glDepthMask(GL_FALSE)在渲染帧期间禁用深度缓冲区写入.这在某些GPU(如摩托罗拉Droid的PowerVR)上完全正常,但在HTC EVO和Adreno GPU上,我最终得到的帧缓冲区是完全垃圾(我看到了我在某处渲染的网格痕迹,但是整个屏幕大部分被删除).

如果我强制glDepthMask在整个时间都是真的,那么一切正常.

我需要在alpha渲染的部分期间关闭glDepthMask.什么可以通过转动深度写入导致帧缓冲区被破坏?

Ebo*_*ike 6

问题是glDepthMask呼叫时需要成立glClearDepth.这显然仅适用于Adreno GPU,而不适用于PowerVR GPU.

  • 我遇到了同样的问题; 但我从来没有真正调用glClearDepth().相反,我只是确保glDepthMask在每帧结束时都为真,并且场景停止了被破坏.这似乎是Android或GPU驱动程序中的错误; 它发生在3个不同的Android设备上. (2认同)