0

私が間違っていることを本当に理解していませんが、アドビによると、これはuploadFromByteArray(...)IndexBuffer3D オブジェクトでの使用方法です。

私が理解していないのは、頂点インデックスの整数を書き込むためにどの書き込み方法を使用する必要があるかということです。writeFloatwriteUnsignedIntwriteInt、でも試しましたが、writeShortすべて失敗しました。ByteArray インスタンスを に設定しましたがba.endian = Endian.LITTLE_ENDIAN、まだうまくいきません。

インデックス バッファにアップロードする前に、ByteArray の位置を必ず 0 にリセットしましたが、何も表示されません。

Vector.<uint>代わりにアップロードすると、うまくいきます!だから私は問題が AGAL シェーダーにないことを知っています。

何か案は?

4

1 に答える 1

2

気にしないでください、私が間違っていたことを見つけました:

間違い:

_buffer.uploadFromByteArray(_dataBytes, 0, 0, _dataBytes.length >> 2);

インデックスあたりのバイト数は 4 バイトの長さだったので、最初は 4 で割っていました (ビットごとに 2 回シフトしても同じです)。いやあ!正しくない!

IndexBuffer3D 用の ByteArrays はwriteShort()、32 ビットではなく 16 ビットの数値を使用するため、 で記述する必要があります。したがって、インデックスごとに 2 バイトしか使用しません。

正しい:

_buffer.uploadFromByteArray(_dataBytes, 0, 0, _dataBytes.length >> 1);

他のStage3Dユーザーのためにそれを明確にすることを願っています! :)

于 2012-01-25T05:54:13.387 に答える