[程式] 關於Shader抽象部份的問題

作者: a27417332 (等號卡比)   2014-02-03 11:49:35
最近小弟想趁寒假結束以前,試著做一些簡易的封裝。可是在設計上碰到了一些問題,
想請教各位大大。
就是關於Shader的部分,在DirectX裡面,每個Shader都是可以獨自成一個個體,最後
依照使用狀況不同,互相排列綁在管線上面。
可是在OpenGL裡面,在4.1之前,Shader都不支援這種混合運用,非得要把每個階段的
Shader都綁在Program上面以後,以Program為單位去使用。
我的問題就在這邊,我目前採用的繪圖API是以OpenGL為準,不排除以後加入DirectX
的可能性。但這邊就出現一些分歧的地方,就是我不知道該怎麼設計這邊的關係。
我想讓使用者可以自行決定Shader的綁定,可是在OpenGL裡面,單是要查詢uniform
block這種動作也非得透過Program才行。
想請問各位大大,有沒有甚麼比較好的方法可以使用?我目前是盡量不想要再設計一
個Program類@@(因為DirectX很顯然不需要這個類)
作者: lulumi07 (嚕嚕米)   2014-02-15 02:39:00
目前似乎不支援,所以你頂多swap 不同階段的 shader,所以你還是得 link program一遍,而且你uniform也要重綁。但從你最後一句我有疑問的是,為什麼要再設計Program類?可以說一下你設計的shader class嗎?我的方式是preload所有shader,用resourcemanager去查找還有你所謂的uniform block是綁UBO的uniform block嗎?還是單純的uniform? (ex: uniform int useTexture;)

Links booklink

Contact Us: admin [ a t ] ucptt.com