I sometimes disable depth buffer writing via glDepthMask(GL_FALSE)
during the rendering of a frame. That works perfectly fine on some GPUs (like the Motorola Droid's PowerVR), but on the HTC EVO with the Adreno GPU for example, I end up with the frame buffer being complete garbage (I see traces of the meshes I rendered somewhere, but the entire screen is mostly trashed).
If I force glDepthMask to be true the entire time, everything works fine.
I need glDepthMask to be off during parts of the alpha rendering. What can cause the framebuffer to get destroyed by turning the depth writing off?
The problem was that
glDepthMask
needs to be true when callingglClearDepth
. This apparently only applies to Adreno GPUs, not to PowerVR GPUs.