为什么在iOS *删除 *已渲染的几何形状上禁用深度测试



这对我来说没有任何意义,但是在设备上都用Apple iOS 7.x模拟器和iOS 6.x进行了确认:

设置1:

  1. 清除
  2. 禁用depth_test
  3. 绘制全屏Quad
  4. 启用depth_test
  5. 画很多几何
  6. 绘制Quad

...一切都渲染

设置2:

  1. 清除
  2. 禁用depth_test
  3. 绘制全屏Quad
  4. 启用depth_test
  5. 画很多几何
  6. 禁用depth_test
  7. 绘制Quad

...仅渲染第一个和最后一个项目


使用Apple的"分析框架"工具确认,该工具显示了所有内容。

另外:我尝试用"启用depth_test,但设置gldepthfunc(gl_always)"替换" disable depth_test"。毫不奇怪 - 一切都呈现。


发生了什么事?OpenGL文档没有提及此"您渲染的东西将神奇地消失"

啊!重新阅读问题...这是API中的偷偷摸摸的旧设计功能:

如果depth_test被禁用,则重新定义Glclear做某事 与正常人不同(它忽略了深度位) - 没有错误 报告。

查看我的设置... depth_test从上一个帧的末端仍然禁用,因此在第一个帧之后的所有帧中,深度缓冲区都无法清除。

也:我检查了苹果的框架分析仪,并意识到我正在错误地阅读它。苹果展示"黑色"表示" full"one_answers"白色"表示"空"(我认为这是相反的)。所以...深度缓冲区显示为"永不清除",但我愚蠢地误解了它。实际上,只有禁用深度的呼叫才能通过。

最新更新