【问题标题】:Draw Order in OpenGLOpenGL中的绘制顺序
【发布时间】:2008-12-22 05:42:06
【问题描述】:

我正在渲染一个包含一些位图文本的 OpenGL 场景。据我了解,我绘制事物的顺序将决定哪些项目在最上面。

但是,我的位图文本,即使我是最后绘制的,也不在顶部!

例如,我正在画画:

1) 背景
2) 按钮
3) 文字

所有在相同的 z 深度。按钮在背景之上,但文本是不可见的。如果我改变了文本的 z 深度,我可以看到它,但是我有其他问题。

我正在使用 Nehe's Tutorials 中的位图文本方法。

如何在不改变 z 深度的情况下使文本可见?

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    您可以通过

    简单地禁用 z-test
      glDisable (GL_DEPTH_TEST);  // or something related..
    

    如果您这样做,您的文本基元的 Z 将被忽略。基元的绘制顺序与您调用 gl 函数的顺序相同。

    另一种方法是通过 glPolygonOffset 设置一些恒定的 z 偏移量(不推荐)或将深度比较模式设置为 GL_LESS_EQUAL 之类的东西(EQUAL 是重要的)。这样可以确保以相同深度绘制的图元彼此叠加。

    希望对您有所帮助。

    【讨论】:

    • 是的,为 UI 绘图关闭 z-buffering。
    • 很好的答案——我打算建议都一样! :)
    【解决方案2】:

    您也可以使用 glDepthFunc (GL_ALWAYS)。

    【讨论】:

    • 如果您对这个答案投了反对票,请解释它有什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2015-10-04
    • 1970-01-01
    相关资源
    最近更新 更多