ByteBuffer.allocateDirect()。asFloatBuffer()vs BufferUtils.createFloatBuffer()

时间:2014-06-10 00:28:37

标签: java lwjgl

我刚解决了一个错误,我不知道为什么。在LWJGL中创建一个4x4投影矩阵,用于顶点着色器..

此行会导致问题。它以静默方式失败,着色器中的mat4被卡住为全零(好像从未写过)。

FloatBuffer mProj = ByteBuffer.allocate(4*16).asFloatBuffer();

这可以按预期工作。

FloatBuffer mProj = BufferUtils.createFloatBuffer(16);

作为一个完整性检查,我确认我的花车是4个字节。那么差异是什么?

1 个答案:

答案 0 :(得分:3)

这两者之间唯一的difference可能字节顺序。您可以将其设置为

FloatBuffer mProj = ByteBuffer.allocate(4 * 16).order(ByteOrder.nativeOrder()).asFloatBuffer();