2017-05-30 281 views
0

我有一個Opengl應用程序,它可以按模型渲染場景模型。Opengl渲染順序

如果我先在前面渲染一個模型,然後在後面渲染一個模型,後面的模型會在前面的模型頂部顯示出來?

回答

0

OpenGL按照您發出它們的順序處理所有命令。這意味着如果您在後面繪製前模型和後模型,則第二個模型將默認透視第一個模型。

如果您只想繪製實際面前的零件,則必須啓用depth testingglEnable(GL_DEPTH_TEST);)。這確保只有這樣的像素被寫入到比已經存儲的更靠近觀看者的後緩衝器。請注意,此方法僅適用於非透明對象。

0

這取決於您是否啓用了深度測試與否。如果啓用深度測試*,那麼您繪製對象的順序與顯示的最終場景無關**。因此,只要在您的setup_gl或您用於初始化場景的任何函數中,在繪製圖形之前,您已調用glEnable(GL_DEPTH_TEST);,您不必考慮訂單。

*,你沒有改變深度測試功能,使用glDepthFunc或一些類似的功能。如果你有,(這通常只建議那些需要特殊功能的人,所以對你而言,你不應該這樣做),深度測試會表現出不同的行爲。

** ...除非你使用的是透明物體,在這種情況下,你要麼需要實現[昂貴]順序無關的透明度算法着色器,或繪製順序WILL物(通常,爲了透明度,您需要重新繪製)。