OpenGL渲染订单
Opengl Render Order
本文关键字:OpenGL 更新时间:2023-10-16
我有一个OpenGL应用程序,该应用程序通过模型呈现场景模型。
如果我首先在正面呈现模型,然后在后面渲染一个模型会在后面的模型上绘制到前面模型顶部的显示器吗?
这取决于您是否启用了深度测试。如果启用了深度测试*,则绘制对象的顺序在显示的最终场景 ** 上都不适合。因此,只要在您的setup_gl
或您用来初始化场景的任何功能中,在绘图发生之前,您就可以称为glEnable(GL_DEPTH_TEST);
,您不必考虑订单。
*,并且您没有使用glDepthFunc
或一些相似的功能更改深度测试功能。如果您有(通常仅适用于需要专业功能的人,那么对于您来说,您不应该(,深度测试将表现出不同的行为。
** ...除非您使用透明对象,在这种情况下,您要么需要在着色器中实现[昂贵]独立于订单的透明算法,要么绘制顺序 WILL 很重要(通常,对于透明度,您需要绘制重新绘制(。
OpenGL按照您发布的顺序处理所有命令。这意味着,如果您绘制前后模型,然后在后面的模型中,默认情况下将透支第一个模型。
如果您只想绘制实际存在的零件,则必须启用深度测试(glEnable(GL_DEPTH_TEST);
(。这样可以确保只有此类像素被写入靠近观看者的backuffer比已经存储的更近。请注意,此方法仅适用于非透明对象。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- OpenGL 16 位模板缓冲区?
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- 在 openGL 中多次绑定缓冲区
- opengl glBegin(GL_LINES) 和 glBegin(GL_POINT) 在 2D 中不可视化点矢量