如果我使用字节数组方法填充顶点缓冲区:
//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);
Vertex属性字段的可能值范围(0到255?0.0到1.0?等)是什么(在这种情况下, va0.x,va0.y,va0.z,va0.w )?是否将哪种数据类型写入ByteArray
对象( writeFloat 与 writeUnsignedInt )之间是否存在差异?
答案 0 :(得分:1)
BYTES_4在[0..1]范围内解压缩为4个字节。 所以字节0xff,0x7f,0,1将在顶点程序中变为1.0,.5,0,1 / 255。 在你的情况下,WriteUnsignedInt只会用1填充x。 您应该使用WriteByte 4次,或者甚至更好地将4个值打包成一个unsigned int,就像一个颜色。