2011-08-30 207 views
2

我想知道是否有可能有多個圖層可以獨立操作並以重疊方式顯示。如何在opengl中使用不同的獨立重疊圖層?

這是我想要做的。我正在實施一個Turtle Graphics API。我想讓烏龜運動變得有生氣。我想知道是否可以在一層中使用所有圖形,並在另一層中單獨使用烏龜(我用一個小的等腰三角形表示),這樣我就可以通過清除此圖層並在不影響圖形層的情況下擦除烏龜,並且在烏龜平面上的另一個位置/方向重新繪製烏龜。

回答

2

OpenGL不是場景圖。

OpenGL(通常)不是一個經典的2D幀緩衝,你想盡量減少重繪。使用OpenGL,通常在清除深度和顏色緩衝區後,每幀都會重新繪製整個場景。

您有幾種選擇:

1)禁用深度緩存/深度檢查,使您的圖層後到前。

2)確保每個圖層都有一個合適的Z座標並以任意順序渲染它們,讓Z緩衝區負責正確分層。如果圖層是半透明的,將無法使用。

3)通過任何你認爲支持的方法將你的烏龜路徑渲染成紋理(glCopyPixels(),PBO,FBO,cairo)。渲染一個屏幕大小的紋理四邊形和你的烏龜在上面。

4)重新繪製你的烏龜路徑完整的每幀,最老的點先。除非你有成千上萬的線數,否則不應該很慢。確保使用頂點數組或VBO。