这对我来说没有任何意义,但是在设备上都用Apple iOS 7.x模拟器和iOS 6.x进行了确认:
设置1:
- 清除
- 禁用depth_test
- 绘制全屏Quad
- 启用depth_test
- 画很多几何
- 绘制Quad
...一切都渲染
设置2:
- 清除
- 禁用depth_test
- 绘制全屏Quad
- 启用depth_test
- 画很多几何
- 禁用depth_test
- 绘制Quad
...仅渲染第一个和最后一个项目
使用Apple的"分析框架"工具确认,该工具显示了所有内容。
另外:我尝试用"启用depth_test,但设置gldepthfunc(gl_always)"替换" disable depth_test"。毫不奇怪 - 一切都呈现。
发生了什么事?OpenGL文档没有提及此"您渲染的东西将神奇地消失"
啊!重新阅读问题...这是API中的偷偷摸摸的旧设计功能:
如果depth_test被禁用,则重新定义Glclear做某事 与正常人不同(它忽略了深度位) - 没有错误 报告。
查看我的设置... depth_test从上一个帧的末端仍然禁用,因此在第一个帧之后的所有帧中,深度缓冲区都无法清除。
也:我检查了苹果的框架分析仪,并意识到我正在错误地阅读它。苹果展示"黑色"表示" full"one_answers"白色"表示"空"(我认为这是相反的)。所以...深度缓冲区显示为"永不清除",但我愚蠢地误解了它。实际上,只有禁用深度的呼叫才能通过。