标签: floatbuffer

如何更改FloatBuffer的内容,保持性能?

我试过用

floatbuffer.put(float[]);
Run Code Online (Sandbox Code Playgroud)

但是当我处理超过200个正方形时,每个帧都有不同的纹理坐标,我的fps急剧下降,游戏变得太过流畅.

你认为badlogicgames.com上提到的方法,而不是使用floatbuffer,使用intbuffer,但是,同样的事情,等于缓慢的方法"put"的那一刻.

那么,我如何以最佳性能更新我所有的浮动缓冲区?

编辑:我已经解决了我的问题,"put"方法本身并不慢,问题是当为每个floatbuffer初始化一个新的float时,而不是那个,我只是更改floatarray中包含的每个元素的值避免许多GC活动..我想.

android opengl-es floatbuffer

7
推荐指数
1
解决办法
2006
查看次数

使用Native C/C++提高FloatBuffers的性能

我正在编写一个OpenGL ES 2.0引擎并使用FloatBuffers,但我听说FloatBuffers在Android Froyo上速度慢,而且在Gingerbread上速度更快.

所以我想知道的是,是否可以使用本机C/C++(Android NDK)创建和编辑缓冲区.

它真的能提高性能吗?

哪些标题必须包括在内?

android android-ndk floatbuffer

5
推荐指数
0
解决办法
261
查看次数

确定FloatBuffer中的元素数量

FloatBuffer有方法capacity()告诉我们最大容量FloatBuffer.但是,它并没有告诉我们缓冲区中有多少个元素.那么如何确定a中的元素数量FloatBuffer?我想确定我FloatBuffer是满还是满.

java floatbuffer

4
推荐指数
1
解决办法
3295
查看次数

为什么我们在 OpenGL (ES) android 中以字节为单位分配块而不是浮点数,尽管我们大部分时间都使用浮点数

这就是我如何制作一个三角形数组

float[] tableVerticesWithTriangle = {

                    // triangle 1
                    0f, 0f, 9f, 14f, 0f, 14f,

                    // triangle 2
                    0f, 0f, 9f, 0f, 9f, 14f

            };
Run Code Online (Sandbox Code Playgroud)

这就是我在本机环境中分配块的方式

 vertexData = ByteBuffer
                .allocateDirect(
                        tableVerticesWithTriangle.length * BYTES_PER_FLOAT)
                .order(ByteOrder.nativeOrder()).asFloatBuffer();
 vertexData.put(tableVerticesWithTriangle);
Run Code Online (Sandbox Code Playgroud)

android bytebuffer allocation opengl-es floatbuffer

3
推荐指数
1
解决办法
477
查看次数

从floatbuffer转换为byte []

我正试图找到一种在java中使用jack-audio的方法.我已经设法创建基于jnajack的包装器来获取从jacks的端口到java应用程序的音频(原始的jnajack不能与jack 1.9.8一起使用),但是我找不到操作数据的方法.我开始了List<FloatBuffer>,为了进一步的数据操作,我需要将其转换为byte[].

简单来说......首先我想将数据保存到文件中,但据我所知,java sound api只能保存来自TargetDataLine和/或的数据byte[].我怎样才能转换FloatBufferbyte[]?我能找到的唯一方法是以floatbuffer.get(float[])某种方式(不知道如何)转换float[]byte[].

java floatbuffer

2
推荐指数
1
解决办法
3369
查看次数

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

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

byte[] data = some data;
ByteBuffer buffer = ByteBuffer.allocate(data.length);
buffer.put(data);
FloatBuffer fBuffer = buffer.asFloatBuffer();
float[] dataConverted = fBuffer.array();
Run Code Online (Sandbox Code Playgroud)

但是,例外:

java.lang.UnsupportedOperationException
    at java.nio.ByteBufferAsFloatBuffer.protectedArray(ByteBufferAsFloatBuffer.java:128)
    at java.nio.FloatBuffer.array(FloatBuffer.java:101)
Run Code Online (Sandbox Code Playgroud)

从行:

    float[] dataConverted = fBuffer.array();
Run Code Online (Sandbox Code Playgroud)

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

android floatbuffer

1
推荐指数
1
解决办法
2523
查看次数