c++ - OpenGL 中的绘制顺序

标签 c++ opengl

我正在渲染一个包含一些位图文本的 OpenGL 场景。据我所知,我画东西的顺序将决定哪些项目在最上面。

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

例如,我正在画画:

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

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

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

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

最佳答案

您可以通过

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

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

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

希望对您有所帮助。

关于c++ - OpenGL 中的绘制顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385629/

相关文章:

c++ - 如何用非平凡的初始值填充 vector ?

c++ - GPIO模式寄存器

c++ - C++20 宇宙飞船运算符的性能问题?

c++ - OpenGL - 矩阵逻辑错误

OpenGL render-to-texture-via-FBO——不正确的显示与正常的纹理

c++ - Linux 编程基础

c++ - 在 OpenCV C++ 中将 RGB 彩色图像转换为索引彩色图像类型

opengl - 如何检查 glsl 中的采样器是否为空?

c++ - OpenGL ES 2.0 2D 投影矩阵,将 GLfloat (*)[4] 转换为 GLfloat 时出错

c++ - 四元数旋转到纬度/经度