2016-05-30 89 views
0

我正在尋找一種有效的方式來存儲紋理中的數據而不是使用制服。目標是將骨骼矩陣存儲在紋理中。 目前,我正在做這樣的:glsl在紋理中存儲浮點數據

- one RGBA pixel = one float 
- (128, 255, 32, 14) = 0.128 255 032 014 

它的工作原理和它比通過增值經銷商通過制服快得多。儘管如此,我認爲做這麼一件小事情還有很多計算方法。

那麼你知道一個更好的方法來從RGBA像素構造浮點數嗎? 是否有內置的方法來構建從幾個RGBA像素的4 * 4矩陣?

+0

「*它的工作原理比通過校服傳遞變速器要快得多。」你如何認爲速度更快?您沒有閱讀*等量*的數據量。 –

+0

假設你沒有本地浮點紋理支持,你仍然可以[像這樣打包你的數據](http://stackoverflow.com/questions/18453302/how-do-you-pack-one-32bit-int-into-4 -8bit-整數合GLSL-webgl的/ 18454838#18454838)。說實話,雖然有極少數情況下,紋理讀取將「比通過制服傳遞變量要快得多」...... –

+0

感謝您的回答。我說因爲我有一個身體(83個骨骼,126000個三角形),所以我嘗試了兩種方法。第一種方法,我通過制服通過預先計算的矩陣,我得到了340 FPS。第二種方法,我綁定一個存儲矩陣的紋理,我得到了390 FPS。感謝您的鏈接,我會看看這個(但需要一些時間才能正確理解)。我認爲紋理閱讀可以比制服更快,因爲紋理閱讀只使用GPU,而制服使用CPU-GPU流程,據我所知,這是當今最大的3d API的弱點。 – cyrille56

回答

0

感謝LJ,這裏是answer。 還沒有嘗試過,但這是完全相同的問題。