2016-09-28 162 views
-1

要在頂點着色器中插入頂點位置以在兩個變形目標之間變形動畫,我將着色器發送到着色器的兩個頂點位置。現在我有一個有大約600個變形目標的網格,我有一種感覺,試圖發送到頂點着色器600個頂點位置並不是一個好主意。有人可以告訴我什麼是正確的方式來使物體變形的目標太多嗎?頂點着色器中的變形動畫

P.S.我對3D編程非常陌生。

回答

0

這個想法很簡單:只發送實際打算使用的變形目標數據。

將所有的變形目標數據放在一個緩衝區中。當需要渲染時,請使用glVertexAttribPointer分別處理您正在變形的兩個位置屬性。使用該函數爲該特定變形目標指定字節偏移量。

作爲一個例子,設想以下緩衝存儲器佈局:

|----Morph Target 0----|----Morph Target 1----|----...----|----Morph Target N----| 
K      L      M   Z 

要目標0和1之間進行混合,可以調用glVertexAttribPointer(0, ..., (void*)K)glVertexAttribPointer(1, ..., (void*)L),其中KL是變形目標的偏移量在緩衝器。

顯然,你只能混合兩個變形目標。但是你可以在任何兩個之間混合。

我有一種感覺,嘗試發送到頂點着色器600個頂點位置並不是一個好主意。

它更是不可能。屬性的數量受到實現的限制,該數字通常很小(介於16和32之間)。