2017-07-19 42 views
2

我刚刚通过this answer及其评论阅读,并有一些相关的问题:我可以上传VEC3值vec4制服?

  • 这是否规则应用到统一的变数呢?
  • 我可以打电话glUniform3fv为vec4统一,并期望成分W为1.0,等等?
  • 哪里了OpenGL规范提起这个话题?

回答

3

不,这些规则不适用于制服。因此,你不能叫glUniform3fvvec4

Spec states in Section 7.6.1

对于所有[...]均匀类型的具有可装载均匀*命令,用作在着色器声明的,必须将均匀的尺寸和类型相匹配的命令 ,和 没有类型转换完成。

4

在(7.6 UNIFORMVARIABLES)的规格说,Uniform*将导致INVALID_OPERATION错误,如果:

中使用的均匀的尺寸不匹配Uniform*命令的名称所指示的大小在着色器声明,

组件使用的Uniform*命令的名称中指示的类型和计数与着色器中声明的统一类型不匹配,其中布尔均匀组件类型被认为匹配Uniform*i{v}Uniform*ui{v}Uniform*f{v}命令中的任何一个。

和测试来调用glUniform3fvec4统一确实会导致INVALID_OPERATION错误。

相关问题