着色器可以有许多不同的统一名称+属性。如何制作一般情况下的系统,以便我不必事先知道每个着色器制服的名称,并将其硬编码为代码以获取其位置。我使用OpenGL。
答案 0 :(得分:2)
不幸的是,在某些时候,你需要知道着色器中的统一名称是什么,以及它们所指的是什么......没有办法解决这个问题。
大多数图形/游戏引擎按惯例工作 - 某些制服由引擎设置,着色器根据需要使用它们。有些会添加配置,因此每个着色器可以指定它需要的制服,但通常,名称仍按惯例完成。
答案 1 :(得分:1)
使用命名约定,或自己解析着色器字符串以获取类型,符号和可选的存储说明符。前一个选项对着色器程序员负责,而后一个解决方案则给应用程序员带来负担。 通过使用扩展GL _ ARB _ uniform _ buffer _ object可以使这些代码更加优雅和高效,扩展{{3}}在OpenGL 3.1中被提升为核心