记录学习stage3d时碰到的一个问题:
在那个经典的显示三角形的例子里,将这段代码:
var indices:Vector.<uint> = Vector.<uint>([
0
,
1
,
2
]);
indexbuffer = context3D.createIndexBuffer(
3
);
indexbuffer.uploadFromVector (indices,
0
,
3
);
改成:
var indices:ByteArray = new ByteArray();
indices.writeShort(0);
indices.writeShort(1);
indices.writeShort(2);
indexBuffer = context.createIndexBuffer(3);
indexBuffer.uploadFromByteArray(indices, 0, 0, 3);
即用ByteArray来存储3D模型的原始几何数据。表面上没有什么问题,可结果是,屏幕上什么也不显示了。纠结了半天,最后才知道原来是字节序的问题。添加这行代码就OK啦:
var indices:ByteArray = new ByteArray();indices.endian = Endian.LITTLE_ENDIAN;
indices.writeShort(0);
indices.writeShort(1);
indices.writeShort(2);
indexBuffer = context.createIndexBuffer(3);
indexBuffer.uploadFromByteArray(indices, 0, 0, 3);