2012-07-08 117 views
1

我有一個關於VBO的問題。比方說,我正在試圖構建一個即使是16x16x16大塊的體素引擎。OpenGL VBO存儲和模板

我將地圖信息存儲在VBO中嗎?我如何獲得立方體的頂點?我想到的方式是,VBO需要24個vector3變量(每個位置的每個立方體的向量)。這似乎很多。

有沒有一種方法可以有一個單一的'多維數據集'VBO模板,然後以某種方式改變我想繪製每個立方體的座標,調用模板(我希望這是有道理的),並使用bufferdata更新每個模板位置,我是否必須爲16x16x16中的每個單個位置實際存儲這24個矢量,還是隻保存地圖座標,然後通過着色器繪製立方體和多邊形?

我希望這是有道理的。看起來昂貴的內存明智地加載了每個位置存儲24個向量的東西,而且對於我來說每個幀調用bufferdata 16x16x16次,似乎是資源密集型的......所以使用頂點着色器的最後一個選項似乎是最可行的,但我是新手着色器是這樣的可能嗎?

最常用的方法是什麼?

回答

2

幾何着色器的確可以爲單個輸入基元發出多個基元。因此從一個輸入點繪製立方體的所有6個面是肯定可能的。儘管對於「體素」引擎,你可能會更好地服務於點精靈,因爲多維數據集的方向往往沒有用處。點精靈從輸入點繪製單個屏幕對齊的四元組。除此之外,你需要更具體地瞭解你在做什麼。

+0

我想我不是特別提出體素,而是更多關於繪圖管理的標準方法。立方體可能就像怪物,建築物,敵人等一樣容易...... 只是標準的精靈/遊戲管理,資源最少的方法 – 2012-07-08 12:26:15