さて、問題が見つかりました。
この形式から変更を加えるなど、頂点データ (頂点ごと) にさらに値を定義する場合:
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(...)
は、実際に使用する入力レジスタのみを使用してください。