OpenGL中的绘制顺序

4

我正在渲染一个包含一些位图文本的OpenGL场景。据我了解,我绘制物体的顺序将决定哪些物体在顶部。

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

例如,我正在绘制:

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

所有物体都在相同的z深度上。按钮在背景上方,但文本是不可见的。如果我更改文本的z深度,我可以看到它,但我会遇到其他问题。

我正在使用Nehe教程中的位图文本方法。

如何使文本可见而不更改z深度?

2个回答

8
您可以通过简单地禁用z-test来实现。
  glDisable (GL_DEPTH_TEST);  // or something related..

如果这样做,你的文本基元的Z值将被忽略。基元按照调用gl函数的顺序绘制。
另一种方法是通过glPolygonOffset设置一些常量z偏移(不建议)或将深度比较模式设置为GL_LESS_EQUAL之类的东西(EQUAL很重要)。这可以确保具有相同深度的基元在其上绘制。
希望这有所帮助。

1
是的,对于 UI 绘制,请关闭 z 缓冲。 - Chris Blackwell
好的回答--我也打算建议完全一样的! :) - Drew Hall

0

你也可以使用glDepthFunc(GL_ALWAYS)。


2
如果您对这个答案投反对票,请解释其中的错误。 - Razzupaltuff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接