【问题标题】:How do I depth-test for a certain range?如何对某个范围进行深度测试?
【发布时间】:2012-04-26 18:44:02
【问题描述】:

在特定范围内进行深度测试的最常见/最简单/最快的方法是什么?

pass if (currentDepth-offset < newDepth && newDepth < currentDepth)

  • currentDepth := 深度缓冲区中的值
  • offset := 常量(在编译时知道并且所有片段都相同)
  • newDepth := 片段的深度

理想情况下,函数 glDepthFunc(...) 会更灵活。

【问题讨论】:

  • 您问的是桌面 OpenGL 还是 OpenGL ES?它们不一样,你知道的。
  • 我使用的是 OpenGL 4.2。话虽如此,我遵循 OpenGL ES 2.0 的做事方式。所以回答你的问题:如果它可以用 OpenGL ES 2.0 完成,那就太好了,但如果 OpenGL 4.2 有更简单/更快的方法,我很乐意调整我的编码风格。
  • “currentDepth-offset”是一个常数值吗?它是某个常数 + 深度(在窗口空间中),它是一个常数 + 相机/眼睛空间中的深度,还是某个任意值?
  • "currentDepth-offset" 不是常数。我有“常数+深度(在窗口空间中)”的情况。

标签: opengl depth-buffer depth-testing


【解决方案1】:

glPolygonOffset 是您要查找的内容吗? (当然,这取决于你想要的偏移量)。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2013-06-26
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多