首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在视图缓冲区中添加浮点数组不会增加位置,这是正常的吗?

在视图缓冲区中添加浮点数组不会增加位置,这是正常的吗?
EN

Stack Overflow用户
提问于 2016-01-18 10:47:46
回答 1查看 434关注 0票数 1

这个代码的标题是:

代码语言:javascript
复制
    ByteBuffer vertexBuffer = GLBuffers.newDirectByteBuffer(3*Float.BYTES+3*Byte.BYTES);
    System.out.println(vertexBuffer.toString());
    vertexBuffer.asFloatBuffer().put(new float[]{1,2,3});
    System.out.println(vertexBuffer.toString());
    vertexBuffer.put(new byte[]{0,1,2});
    System.out.println(vertexBuffer.toString());

打印如下:

代码语言:javascript
复制
java.nio.DirectByteBuffer[pos=0 lim=15 cap=15]
java.nio.DirectByteBuffer[pos=0 lim=15 cap=15]
java.nio.DirectByteBuffer[pos=3 lim=15 cap=15]

但是,理论上,我希望视图缓冲区上的第一个put将位置从0增加到3,第二个put从3增加到6,以便得到这样的结果:

代码语言:javascript
复制
java.nio.DirectByteBuffer[pos=0 lim=15 cap=15]
java.nio.DirectByteBuffer[pos=3 lim=15 cap=15]
java.nio.DirectByteBuffer[pos=6 lim=15 cap=15]

api文档说:

公共最终FloatBuffer put(float[] src)相对批量放置方法(可选操作)。此方法将给定源浮点数数组的全部内容转移到此缓冲区中。对表单dst.put(a)的此方法的调用行为与调用dst.put(a,0,a.length)完全相同

如果我们去看它提到的调用

公共FloatBuffer put(float[] src,int偏移量,int长度)相对大容量放置方法(可选操作)。此方法将浮点数从给定的源数组传输到此缓冲区。如果要从数组复制的浮点数比在这个缓冲区中保留的要多,也就是说,如果是length > remaining(),那么就不会传输浮点数并抛出一个BufferOverflowException。否则,此方法将长度浮动从给定数组复制到此缓冲区中,从数组中的给定偏移量开始,并位于此缓冲区的当前位置。这个缓冲区的位置随着长度的增加而增加。换句话说,调用这个形式的dst.put(src,off,len)的方法与循环的作用完全相同(int i= off;i

它很清楚地说这个职位将会增加。

这是正常还是我漏掉了什么?

编辑:相同的行为:

代码语言:javascript
复制
ByteBuffer vertexBuffer = ByteBuffer.allocate(3*Float.BYTES+3*Byte.BYTES);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 11:01:10

是的,没关系,因为实际上position在另一个对象中增加了,这是在调用vertexBuffer.asFloatBuffer()时获得的引用。

换句话说,如果您将代码更改为:

代码语言:javascript
复制
    FloatBuffer floatBuffer = vertexBuffer.asFloatBuffer();
    floatBuffer.put(new float[]{1, 2, 3});
    System.out.println(floatBuffer.toString());

你会得到:

代码语言:javascript
复制
java.nio.ByteBufferAsFloatBufferB[pos=3 lim=3 cap=3]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34852818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档