2012-11-13 17 views
5

我學習的DirectX現在,我讀了很多關於VertexBuffer。既然你不能通過閱讀來學習編程,我正在用DX11製作一個小型引擎(嗯,我的問題不是真正的版本依賴)DirectX - VertexBuffer如何工作?

據我所知,在一個VertexBuffer中我存儲了Vertices,實際上我存儲它在顯卡上。那麼我讀了關於動態和靜態緩衝區。所以,如果我理解正確,一個靜態緩衝區是用頂點初始化的,並且初始化的頂點不會改變。好吧,但我什麼時候真的需要它。我的意思是在一場比賽或其他什麼時候,我有什麼頂點?也許對於一些UI對象..? - 但即使這些都不是恆定的,每次..你可以把他們的2D位置...等等。

第二點是有關動態頂點緩衝區,比如:我有一個緩衝帶在裏面,這些一些頂點頂點被繪製。然後我想添加或刪除一些頂點。 什麼現在..所以我只是簡單地「更新」緩衝區。但是,這是非常正確和有利於表現?想象一下地形編輯器。你必須更新大量的頂點。

回答

7

我的意思是在一個遊戲或其他任何東西,當我有恆定的頂點?

實際上一直都是這樣。例如,靜態幾何圖形,您提到的UI對象等。您對移動對象存在輕微誤解,因此存在混淆 - 您不能通過更改頂點來移動對象。相反,您將通過着色器管道放置頂點。在頂點着色器中,可以對頂點應用任意變換。因此,舉例來說,如果你有一個樹在世界各地的移動出於某種原因(也許這是一個浮動的島嶼或某事),而不是改變,使這棵樹的頂點,將更改應用到頂點的轉型。

試想一個地形編輯器

這取決於你的地形編輯器是應該做的,但一般你再不會改變這裏的頂點。即在編輯高度時,不是上下移動頂點,而是寫入高度圖(大部分時間是灰度紋理),然後再在着色器管線中計算GPU上的變換。

相關問題