[程式] 关于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