1

バイト配列メソッドを使用して頂点バッファーにデータを入力すると、次のようになります。

//Example:
var ba:ByteArray = new ByteArray();

//Write vertex #0:
ba.writeFloat(-.5);
ba.writeFloat(-.5);
ba.writeUnsignedInt(0);
ba.writeUnsignedInt(0);

//Write vertex #1:
ba.writeFloat(.5);
ba.writeFloat(-.5);
ba.writeUnsignedInt(1);
ba.writeUnsignedInt(0);

//Write vertex #2:
ba.writeFloat(.5);
ba.writeFloat(.5);
ba.writeUnsignedInt(1);
ba.writeUnsignedInt(1);

//Write vertex #3:
ba.writeFloat(-.5);
ba.writeFloat(.5);
ba.writeUnsignedInt(0);
ba.writeUnsignedInt(1);

myVertexBuffer.uploadFromByteArray(ba, 0, 0, 4);

次に、vertex-buffer属性を次の形式で設定します。

var format:String = Context3DVertexBufferFormat.BYTES_4;
context3D.setVertexBufferAt(0, myVertexBuffer, 0, format);

頂点属性のフィールド(この場合、 va0.x、va0.y、va0.z、va0.w )で可能な値の範囲(0〜255?0.0〜1.0?など)はどれくらいですか?ByteArrayオブジェクトに書き込まれるデータ型( writeFloatwriteUnsignedInt)によって異なりますか?

4

1 に答える 1

1

BYTES_4は、[0..1]の範囲で4バイトとしてアンパックされます。したがって、頂点プログラムでは、バイト0xff、0x7f、0、1は1.0、.5、0、1/255になります。この場合、WriteUnsignedIntはxに1のみを入力します。代わりにWriteByteを4回使用するか、4つの値を色のように1つの符号なし整数にパックすることをお勧めします。

于 2012-02-01T06:07:55.710 に答える