我FloatBuffer
用一次数组初始化了 my 的内容Float
。然后修改Floats
我输入的,我希望它也会修改中的值,FloatBuffer
但我得到一个奇怪的结果。
我做错了吗?有可能这样做吗?
编辑:我的错误,我知道 Float 是不可变的,所以这是正常行为。所以我的问题是,有没有办法用可变的浮动包装器填充 FloatBuffer 以便我可以通过引用轻松修改我的 FloatBuffer 内容?或者对于 OpenGL 数据传输有更好的替代 FloatBuffer 吗?
我FloatBuffer
用一次数组初始化了 my 的内容Float
。然后修改Floats
我输入的,我希望它也会修改中的值,FloatBuffer
但我得到一个奇怪的结果。
我做错了吗?有可能这样做吗?
编辑:我的错误,我知道 Float 是不可变的,所以这是正常行为。所以我的问题是,有没有办法用可变的浮动包装器填充 FloatBuffer 以便我可以通过引用轻松修改我的 FloatBuffer 内容?或者对于 OpenGL 数据传输有更好的替代 FloatBuffer 吗?
如果我理解正确,FloatBuffer 有方法可以做你想做的事。
使用 FloatBuffer,您可以通过调用position 方法来设置它的位置(完成后不要忘记将其返回为 0,如果我没记错的话,opengl es 需要它为 0)。然后,您可以使用get和put方法读取或写入该位置。
因此,如果您需要更新本机内存的内容,您可以从分配它的 FloatBuffer 执行此操作,如下所示:
floatBuffer.position(position);
floatBuffer.put(data, startIndex, count);
floatBuffer.position(0);