0

我真的不明白我做错了什么,但根据 Adob​​e,这是您uploadFromByteArray(...)在 IndexBuffer3D 对象上使用的方式:

我不明白的是我必须使用哪种写作方法来写我的顶点索引的整数?我试过writeFloat, writeUnsignedInt, writeInt, 甚至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 个字节长。呐啊!不正确!

用于 IndexBuffer3D 目的的 ByteArrays 应使用 编写writeShort(),因为它使用 16 位数字而不是 32 位。因此,每个索引只使用 2 个字节。

正确

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

希望为其他 Stage3D 用户澄清它!:)

于 2012-01-25T05:54:13.387 回答