如果我想将两个名义上独立的浮点数属性数组传递给一个绘制调用,我可以高兴地in float为它们中的每一个都有一个GLSL 变量,或者我是否需要确保将它们打包成一个in vec2或类似的并使用各种组件来确保不消耗不必要的GL_MAX_VERTEX_ATTRIBS"插槽"?
或者,换句话说; GL_MAX_VERTEX_ATTRIBS根据文档,指定"顶点着色器可访问的4分量通用顶点属性的最大数量".小于4个组件的属性是否始终计为此限制的一个属性?
小于4个组件的属性是否始终计为此限制的一个属性?
是的,这正是它的意思.
每个顶点属性都是4个组件,如果您float在着色器中编写它实际上不会更改任何内容.如果你想看到这个动作,尝试建立一个1组分顶点属性指针,然后宣称属性vec4在你的顶点着色器- GL将自动分配值0.0,0.0,1.0的y,z和w分别.
如果您正在使用顶点属性限制(最小值为16),因为您正在使用一堆标量,那么您应该考虑将属性打包到一个vec4而不是最佳利用率.
对于具有4个以上组件的数据类型(例如mat4),上面描述的此规则有一个小的例外.声明的顶点属性mat4具有16个组件,并消耗4个连续属性位置.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |