2016-06-13 128 views
1

我基本上得到了與在此問的人相同的問題: Dynamically sized arrays in OpenGL ES vertex shader; used for blend shapes/morph targets。 尤其是他最後一個沒有回答的問題也困擾我。打開GL着色器存儲緩衝區對象來替換頂點屬性

所以我也想爲我正在處理的每個網格使用任意數量的混合形狀。此刻,我正在使用一個固定數字並將這些形狀視爲頂點屬性。這裏的優點是我總是可以獲得當前頂點的相關數據。現在,如果我想使用任意數量的形狀,我想我會使用SSBO,因爲他們的線索正是我想要的:動態大小的數據。 但據我所知,SSBO是靜態的,對於着色器中的每個處理過的頂點,我都有整個網格的Blendshape數據可用。這意味着我將不得不引入某種計數器,並嘗試從每個頂點的SSBO中選取正確的數據塊。

這種理解是否正確? 我真的不確定這是否是最佳解決方案,也許你可以給我一些提示。

回答

1

是的,你的理解是正確的。

您可以使用gl_VertexID或者只是傳遞一些'頂點編號'作爲屬性,以知道要處理的特定頂點在您的SSBO中加載哪些數據。

相關問題