在我的引擎中,我从成对的顶点/像素着色器文件中加载Cg着色器。我希望能够堆叠着色器来组合它们(照明+材质等)。除了将着色器分解成单独的函数,然后从这些函数中创建单个着色器脚本字符串之外,你知道在Cg中堆叠不同着色器的任何好方法吗?
发布于 2009-06-14 09:50:15
这听起来有点像你想要的东西类似于DirectX 11中的动态着色器链接功能?Cg的接口功能可以让你完成类似的事情。它允许您重新配置着色器,以便您可以轻松、干净地执行更改照明计算方式或更改材质类型等操作。
例如,假设您要编写着色器,但需要能够更改计算照明的方式。您可以定义一个Light接口,该接口具有以某种方式计算灯光的函数。在其他地方,您可以实现Light接口,例如,CoolLight和UberLight。在运行时,您可以指定应该使用Light接口的哪个实现,这与您指定其他参数的方式几乎相同。
要了解这是否是您想要的,我建议您查看Cg用户手册(http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf)。如果你搜索“共享参数和接口”,有一个小例子。
https://stackoverflow.com/questions/895170
复制相似问题