OpenGL中的绘制顺序
Posted
技术标签:
【中文标题】OpenGL中的绘制顺序【英文标题】:Draw Order in OpenGL 【发布时间】:2008-12-22 05:42:06 【问题描述】:我正在渲染一个包含一些位图文本的 OpenGL 场景。据我了解,我绘制事物的顺序将决定哪些项目在最上面。
但是,我的位图文本,即使我是最后绘制的,也不在顶部!
例如,我正在画画:
1) 背景 2) 按钮 3) 文字
所有在相同的 z 深度。按钮在背景之上,但文本是不可见的。如果我改变了文本的 z 深度,我可以看到它,但是我有其他问题。
我正在使用 Nehe's Tutorials 中的位图文本方法。
如何在不改变 z 深度的情况下使文本可见?
【问题讨论】:
【参考方案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)。
【讨论】:
如果您对这个答案投了反对票,请解释它有什么问题。以上是关于OpenGL中的绘制顺序的主要内容,如果未能解决你的问题,请参考以下文章