我只是阅读了this answer及其评论并提出了一些相关问题:
答案 0 :(得分:4)
(7.6.UNIFORMVARIABLES)中的规格说如果出现Uniform*
会导致INVALID_OPERATION
错误:
使用的
Uniform*
命令名称中指示的大小与着色器中声明的统一大小不匹配,
或
使用的
Uniform*
命令名称中指示的组件类型和计数与着色器中声明的统一类型不匹配,其中布尔统一组件类型被认为与{{1}中的任何一个匹配},Uniform*i{v}
或Uniform*ui{v}
命令。
测试调用Uniform*f{v}
获取glUniform3f
制服确实会导致vec4
错误。
答案 1 :(得分:3)
不,这些规则不适用于制服。因此,您无法在glUniform3fv
上致电vec4
。
对于可通过Uniform *命令加载的所有统一类型,命令 used必须与着色器中声明的制服的大小和类型相匹配,并且 没有进行类型转换。