问题标签 [floatbuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1788 浏览

java - 浮点缓冲区溢出异常 java

我在这里有这段代码:

当我尝试运行它时,我收到此错误:

我查看了整个互联网我找不到如何解决这个问题(我也不知道它是什么)。我的目标是将 float[] 转换为 float,但这是我知道的唯一方法。在 c++ 中有 glLightfv,但在 lwjgl 中只有 glLightf。我该如何解决?

0 投票
1 回答
993 浏览

android - 在android中将FloatBuffer作为二进制文件读写

我正在玩 OpenGL ES 2 和 FloatBuffers。实际上,我尝试将处理顶点数据的 FloatBuffer 保存到二进制文件中。它似乎有效,但是在读取浮点数并将它们一起放回 FloatBuffer 之后,对象就搞砸了。

为了从我的缓冲区中保存浮点数据,我使用以下代码:

阅读:

FloatBuffers 是这样创建的:

有谁知道为什么会这样?

更新:我已经比较了写入和读取的数据,它们是相等的。问题仍然存在,这更加令人困惑。

0 投票
3 回答
1495 浏览

java - 将 FloatBuffer[] 转换为 byte[]

我一直在寻找一种将 FloatBuffer 数组转换为字节数组的方法。我找到了一种将 FloatBuffer 对象转换为 byte[] 的方法: convert from floatbuffer to byte[]

但是在互联网上搜索了几个小时后,我无法找到相当于从 FloatBuffer[] 转换的东西。

反过来,从 byte[] 转换为 FloatBuffer[],我只发现了这个:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(floatBufferObject);
byte [] descriptorsBytes = bos.toByteArray();

但似乎有点奇怪,没有更简单的方法可以做到这一点。也许我遗漏了一些非常明显的东西,也许我应该将 FloatBuffer 数组转换为其他更容易转换为字节数组的类型?

0 投票
2 回答
268 浏览

java - 用 for ¿ 覆盖值创建 FloatBuffer 数组?

我正在使用这样的 for 循环创建一个 FloatBuffers 数组:

但由于某种原因,每次执行此行 (*) 时,它都会更改 FloatBuffer 数组(“缓冲区”)每一行的值。例如,在给buffer[0]它的值之后,我打印了buffer[0].get(0),然后在给buffer[1]它的值之后,我再次打印了buffer[0].get(0),但是值已更改。它正在处理以前每个缓冲区 [0]、缓冲区 [1] 上的每个新缓冲区 [i] 的值...我不明白为什么会这样?

0 投票
1 回答
190 浏览

java - 我怎样才能让 .put(float f) 采用 Float[]?

elcipes 告诉我我的 vertBuff.put(vertices); --- 类型 FloatBuffer 中的此方法 .put(float f) 不适用于参数 (Float[])。我该如何解决这个错误?这是具有 vertBuff.put() 的代码

}`

这是 MainActivity 类

}

0 投票
2 回答
1395 浏览

android - Android OpenGL动态大小FloatBuffer?

我正在尝试在 Android 上构建一个 OpenGL ES 2.0 渲染系统。我有一个 FloatBuffer,我在其中放置了所有顶点数据。目前,我只是为它分配大量字节并忽略绘制调用,如果它们会溢出该大小的缓冲区。有没有办法动态调整缓冲区的大小?如果我只是释放缓冲区并在每次渲染后重新分配它,我想那会很慢。

0 投票
1 回答
2592 浏览

android - 将字节 [] 转换为浮点 []

我正在尝试在 Android 中将 float[] 转换为 byte[]。我查看了有关 stackoverflow 的其他问题和答案,但没有一个有帮助,因此我决定实施自己的解决方案。我尝试过的方法是:

但是,例外:

从线:

一直被抛出,我不知道为什么。有人可以帮助解释为什么抛出这个异常吗?会有很大帮助吗?

0 投票
1 回答
140 浏览

java - 获取 float[] 作为 FloatBuffer 类

有一个float[],我想把它作为glLoadMatrixf(FloatBuffer m)( GLMatrixFunc的接口) 的参数。

我怎么能得到float[]as FloatBuffer

代码是 -

以上提示——The method glLoadMatrixf(FloatBuffer) in the type GL is not applicable for the arguments (float[])

0 投票
3 回答
5303 浏览

java - 如何获取 Floatbuffer 存储的 float[]?

有——

我怎么能得到它float[SIZE]

0 投票
2 回答
587 浏览

java - Java OpenGL(JOGL) 对象数组和 FloatBuffers

我试图找到一个可以最小化 Java OpenGL (JOGL) 应用程序中的内存分配和垃圾收集的方法。我将一些 C/C++/C# OpenGL 项目移植到 Java 作为学习练习。我遇到的一件事是 Java 中缺少指针以及应用程序运行时对象的分配和 GC。在 C/C++/C# 中,我可以让应用程序启动并简单地运行,而无需通过传递引用来分配任何额外的内存或对象,但在 Java 中,我的设计似乎不兼容。

随着这些设计的发展,它们正在使用更高级别的对象。在 C 中,它们是向量和矩阵以及 C++/C# 类的结构。这些基本上都归结为内存中的字节数组。然后以一种或另一种方式将其转换为 float[] 用于应用程序内部的 OpenGL 调用或对象数组,因此我可以使用基于对象的操作,例如运算符重载、加法和乘法或属性访问。任何使用 OpenGL 的人都可能看到我在做什么。这样,我在加载时分配所有内容并简单地传递数据。

Java 让我陷入了一些循环。看来我不能来回转换数据,因此我不断创建大量数据,GC 来了,它是否工作。这在应用程序运行期间被消耗和清理的资源以及明显的卡顿是显而易见的。除了为我的几何数据创建 VectorXf 数组并将 FloatBuffer 传递给 OpenGL 之外,我通过创建 FloatBuffers 来缓解其中的一些问题。但是当我需要更新 Vector 数据时,我必须将数据重新复制回浮点缓冲区。这也意味着我要存储双倍的数据并产生浮动缓冲区填充的开销。

我想听听其他人是如何处理这些问题的。我想保留内置功能的高阶对象,但能够将数据传递给 OpenGL。我的设计只是与 Java 不兼容吗?我需要专门迁移到 FloatBuffers 吗?如何将组件数据传递给更高阶的对象,而不会产生对象创建的损失。存在如此多的 OpenGL 应用程序,我怀疑有一些“魔法”可以为 float[] 和 Object[] 使用相同的缓冲区,或者为对象数据分配连续块并将引用传递给 OpenGL。