可以将四(4)个单个VertexBuffers与顶点属性寄存器的每个字段相关联吗?

时间:2012-04-20 14:39:40

标签: field allocation vertex-buffer stage3d agal

Stage3D / AGAL中,是否可以通过以下方式将各个VertexBuffers指向相同的va0,以便:

  • 每个VertexBuffer数据都可以独立更改(假设在某些情况下这是很好的表现,是吗?)。

  • 每个VertexBuffer关注va0(第一个顶点属性寄存器)的一个字段,以便vertexbuffer1操纵va0.x,vertexbuffer2 = va0.y,vertexbuffer3 = va0.z,并且vertexbuffer4 = va0.w;

由于您可以在为Context3D对象指定VertexBuffer时指定'offset'和数据格式(例如:FLOAT_1,FLOAT_4),我认为这是可能的。

也许我的设置不正确,但是当我尝试这个时,我无法实现它。

每个VertexBuffer是否需要占用每个寄存器中的整个4个字段?如果是这样,我不确定我理解为什么存在FLOAT_1-to-FLOAT_3值! :S

提前致谢!

1 个答案:

答案 0 :(得分:1)

分配顶点缓冲区或常量时,分配128位(即4 x 32)。而且你将完全限制在一个属性(va0,va1)。所以我认为将不同的缓冲区绑定到单个属性是不可能的。如果你把FLOAT_1,你会浪费记忆。