据我了解,每个顶点属性都包含一个4元素向量值,而与调用中提供的每个通用顶点属性值中的组件数目无关glVertexAttribPointer
。
这意味着,如果我传递一个浮点数的平面数组,则顶点着色器将以vec4的形式接收这些浮点数,x
将其设置为所提供的值,并将yzw
字段分别设置为0、0、1 ,对吗?
基本上是对的。如果vec4
在着色器中将属性声明为a ,则输入数组中不存在的组件将被y = 0,z = 0,w = 1填充。
不过,您不必像vec4
在着色器中那样声明属性。如果您的属性实际上只是一个float,则可以float
在着色器中使用type对其进行声明。根据ES 2.0规范:
属性限定符只能与float,vec2,vec3,vec4,mat2,mat3和mat4的数据类型一起使用。
支持的属性数量限制以表示vec4
,并且float
属性将使用那些属性插槽之一,就像will一样vec4
。因此,如果您需要一堆float属性,并且在支持的属性数量接近支持的极限的情况下,最好将它们打包成向量。无论如何,这对性能来说很有可能是有益的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句