一般如何使用着色器制服?

时间:2009-07-11 03:36:49

标签: opengl shader uniform

着色器可以有许多不同的统一名称+属性。如何制作一般情况下的系统,以便我不必事先知道每个着色器制服的名称,并将其硬编码为代码以获取其位置。我使用OpenGL。

2 个答案:

答案 0 :(得分:2)

不幸的是,在某些时候,你需要知道着色器中的统一名称是什么,以及它们所指的是什么......没有办法解决这个问题。

大多数图形/游戏引擎按惯例工作 - 某些制服由引擎设置,着色器根据需要使用它们。有些会添加配置,因此每个着色器可以指定它需要的制服,但通常,名称仍按惯例完成。

答案 1 :(得分:1)

使用命名约定,或自己解析着色器字符串以获取类型,符号和可选的存储说明符。前一个选项对着色器程序员负责,而后一个解决方案则给应用程序员带来负担。 通过使用扩展GL _ ARB _ uniform _ buffer _ object可以使这些代码更加优雅和高效,扩展{{3}}在OpenGL 3.1中被提升为核心