推 lulumi07:目前似乎不支援,所以你頂多swap 不同階段的 shader, 02/15 02:39
→ lulumi07:所以你還是得 link program一遍,而且你 02/15 02:40
→ lulumi07:uniform也要重綁。 02/15 02:42
→ lulumi07:但從你最後一句我有疑問的是,為什麼要再設計Program類? 02/15 02:44
→ lulumi07:可以說一下你設計的shader class嗎? 02/15 02:46
→ lulumi07:我的方式是preload所有shader,用resourcemanager去查找 02/15 02:47
→ lulumi07:還有你所謂的uniform block是綁UBO的uniform block嗎? 02/15 02:48
→ lulumi07:還是單純的uniform? (ex: uniform int useTexture;) 02/15 02:48
我原本的打算是像是DirectX那樣,因為每個Shader自己都是獨立的,所以自己可以擁有所有資訊,舉凡像是
uniform block或是uniform等等。但在OpenGL裡面,要倒出有關資訊都得透過program才行。
而每當換一種組合的時候,都要Link Program感覺會是個消耗時間的操作,而且每次都得重新把資訊撈出
來整理。當然也可以cache起來在一個map裡面,利用vs和fs的值去索引,只是感覺還是浪費不少時間。
所以我想設定program類就是因為這樣的話可以直接使用,而且麻煩的shader parameter也會都被設置完成。
但這種需求只有在OpenGL才需要而已,讓我有點不懂該怎麼設計@@
(Pass雖然記錄該階段所需要的shader們,但他應該是無關繪圖API的...)
※ 編輯: a27417332 來自: 114.42.106.145 (02/17 17:38)