2016-06-15 111 views
1

我正在使用OSG開發一個小小的GIS應用程序,但我對它很陌生。在OpenSceneGraph中控制深度緩衝區和繪圖順序

由於視圖沒有太大變化,我並沒有努力保持一個體面的fps比率。

我必須在同一視圖上繪製多個圖層。圖層可能重疊,但並非總是如此。

現在,爲了能夠選擇哪一層位於其他層之上,我使用了PolygonOffet屬性,但我不喜歡它。

這裏是我想嘗試什麼: -put在我的根清晰的節點來清除所有緩衝區 -put每層節點的頂部一個明確的節點只清除深度緩存 - 查找辦法強制OSG按特定順序繪製這些圖層

所以我的問題是: - 是否有可能? - 如何選擇我的圖層節點的渲染順序?

回答

1

您可以使用相機清除緩衝區。例如。如果您的主攝像頭繪製了所有內容,並且您只想清除一個緩衝區,則可以添加第二個攝像頭,該攝像頭除了具有相同的renderTargetImplementation之外不會執行任何操作,將DepthBuffer附加到該攝像頭,使用GL_DEPTH_BUFFER_BIT clearMask並在主攝像頭之後渲染。

對於攝像機,您可以通過setRenderOrder選擇渲染順序,以及可以使用setRenderBin的節點。

如果您使用多相機解決方案,雖然可能會有多通道渲染,但這可能會花費很高,因爲在您的情況下,您可能會使用自己的相機繪製每個圖層。

在旁註中,你想要的是避免z戰鬥,並有幾種技術來做到這一點。也許有了這個關鍵字,你可以找到答案。