好的,所以我发现了问题。
如果您在顶点数据(每个顶点)中定义更多值,例如从此格式进行修改:
position: x va0.x
y va0.y
z va0.z
w va0.w
color: r va1.r
g va1.g
b va1.b
a va1.a
像这样:
position: x va0.x
y va0.y
z va0.z
w va0.w
color: r va1.r
g va1.g
b va1.b
a va1.a
uv: u va2.x
v va2.y
太好了...您在组合中添加了一个新寄存器。但是你要做的是:
确保在以下位置传递正确的值:
context3D.createVertexBuffer(numOfVertices, vertexDataLength);
和...
uploadFromVector(_vertexData, 0, numOfVertices);
确保在调用中设置正确的偏移量:
context3D.setVertexBufferAt(2, vertexBuffer, 8, Context3DVertexBufferFormat.FLOAT_4);
- 最后但同样重要的是(正是我所缺少的)......在您的着色器中使用该寄存器!
如果您添加了一个新的顶点属性,但您没有在 AGAL 代码中使用它......它不会渲染!
希望这可以节省其他人一些时间,想知道他们的着色器哪里出了问题!
注意:我知道,常识——如果你创造了一些东西,你为什么不使用它呢?我正在测试以前的着色器是否仍然可以处理额外的数据。确实如此,只要我没有在混合中分配我的新顶点属性(va2)。因此,如果您正在测试,请确保仅setVertexBufferAt(...)
与您实际使用的输入寄存器一起使用。