0

いくつかのProgram3Dオブジェクトがある場合(それぞれが独自のレンダリングタスクを担当する独自のVertex-ShaderFragment-ShaderVertexBuffer3Dを備えています)、新しいをインスタンス化しIndexBuffer3Dて、によって使用される頂点データ形式にのみ関連するデータを格納するようにする必要がありますか?それらの対応するProgram3D

たとえば、次のようなさまざまな頂点データ形式でクワッドを定義することを計画している場合:

var vertexData:Vector.<Number>;

//Vertex-Format A:
vertexData = new <Number>[
  //X, Y, U, V
  -.5, -.5, 0, 0,
  .5, -.5, 1, 0,
  .5, .5, 1, 1,
  -.5, .5, 0, 1
];

//Vertex-Format B:
vertexData = new <Number>[
  //X, Y, U, V, Matrix-Constant ID, Color
  -.5, -.5, 0, 0, 3, 0xff0000,
  .5, -.5, 1, 0 , 3, 0x00ff00,
  .5, .5, 1, 1,   3, 0x0000ff,
  -.5, .5, 0, 1,  3, 0xffff00
];

//Vertex-Format C:
vertexData = new <Number>[
  //X, Y, Matrix-Constant ID
  -.5, -.5, 3,
  .5, -.5, 3,
  .5, .5, 3,
  -.5, .5, 3
];

VertexBuffer3D1つを作成し、フォーマットAIndexBuffer3Dを保存し、もう1つをフォーマットBに、さらにもう1つをフォーマットCに保存する必要がありますか?または、さまざまな形式を同じものの中に混ぜて、三角形を描くために1つを巧妙に(または混乱させて!)使用することはできますか?VertexBuffer3DIndexBuffer3D

4

1 に答える 1

2

自由に組み合わせて楽しめます。すべての入力を何かに接続する必要がある頂点プログラムを考えてみてください。それがどこから来ているかは、setVertexBufferAt で行われます。異なるバッファーから来ることもあれば、同じ場所から来ることもあります。いくつかのワイヤを接続するのと同じように。インデックス バッファーは、頂点バッファー内をジャンプするだけです。それらを可能な限り再利用することができますし、そうすべきです。

于 2012-02-01T06:14:37.830 に答える