2017-05-30 185 views
0

我有一个Opengl应用程序,它可以按模型渲染场景模型。Opengl渲染顺序

如果我先在前面渲染一个模型,然后在后面渲染一个模型,后面的模型会在前面的模型顶部显示出来?

回答

0

OpenGL按照您发出它们的顺序处理所有命令。这意味着如果您在后面绘制前模型和后模型,则第二个模型将默认透视第一个模型。

如果您只想绘制实际面前的零件,则必须启用depth testingglEnable(GL_DEPTH_TEST);)。这确保只有这样的像素被写入到比已经存储的更靠近观看者的后缓冲器。请注意,此方法仅适用于非透明对象。

0

这取决于您是否启用了深度测试与否。如果启用深度测试*,那么您绘制对象的顺序与显示的最终场景无关**。因此,只要在您的setup_gl或您用于初始化场景的任何函数中,在绘制图形之前,您已调用glEnable(GL_DEPTH_TEST);,您不必考虑订单。

*,你没有改变深度测试功能,使用glDepthFunc或一些类似的功能。如果你有,(这通常只建议那些需要特殊功能的人,所以对你而言,你不应该这样做),深度测试会表现出不同的行为。

** ...除非你使用的是透明物体,在这种情况下,你要么需要实现[昂贵]顺序无关的透明度算法着色器,或绘制顺序WILL物(通常,为了透明度,您需要重新绘制)。