gpt4 book ai didi

Java:从 FloatBuffer 到 OpenGL - wrap() vs. allocate() vs. BufferUtils.createBuffer()

转载 作者:行者123 更新时间:2023-11-30 11:01:55 25 4
gpt4 key购买 nike

数据源:

float[] v = { ... };

工作示例:

FloatBuffer buf = BufferUtils.createFloatBuffer(v.length);
buf.put(v);
buf.flip(); // or buf.rewind()

缓冲区现在可以上传到 opengl 并且工作正常:

...
glBufferData(..., buf, ...);
...

为什么以下创建缓冲区的示例也不起作用?

不工作 1:

FloatBuffer buf = FloatBuffer.wrap(v);

不工作 2:

FloatBuffer buf = FloatBuffer.allocate(v.length);
buf.put(v);
buf.flip(); // or buf.rewind()

编辑:

浏览API代码后发现:

在工作示例的情况下,memAddress(buf) 返回一个有效地址,但在其他情况下它只返回 0。

附加信息:

why am i getting a FloatBuffer is not direct error?

最佳答案

BufferUtils 返回一个直接缓冲区,而其他的可能不会。

您可以使用 isDirect() 方法检查 wrap 和 allocate 方法的直接性。包装器是非直接的。

关于Java:从 FloatBuffer 到 OpenGL - wrap() vs. allocate() vs. BufferUtils.createBuffer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30974902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com