2013-03-27 79 views
1

我正在試圖製作一個GLSL着色器,將90x10矩陣與10x1矩陣相乘。 90x1結果對應於30個頂點的xyz值。第一個大型矩陣僅在啓動時加載。另一方面,另一個矩陣可以在每個渲染中改變。如何使大矩陣相乘

這怎麼辦?我猜第一個矩陣可以存儲爲紋理,但我不知道如何處理第二個矩陣。

回答

1

只需將第二個矩陣作爲一個均勻的浮點數組傳遞即可。

uniform float vec10[10]; 

並且執行乘法元素。

請注意,如果速度太慢,您可以嘗試打包較大的紋理,以便可以使用單個texelfetch讀取4個元素。

如果您想查看綁定統一陣列的語法,請參閱http://www.opengl.org/wiki/Uniform_(GLSL)

請注意,它也是完全合法的在紋理中存儲第二個矩陣;我只是不確定這樣做的性能影響,而不是作爲制服發送。但先讓它工作,然後再進行配置和優化。