7

我试过使用

floatbuffer.put(float[]);

但是当我处理 200 多个方块时,所有方块都有不同的纹理坐标,每帧都会更新,我的 fps 急剧下降,游戏变得太远而无法流畅。

y 认为 badlogicgames.com 上提到的方法,关于,而不是使用 floatbuffer,使用 intbuffer,但是,是同一件事,在缓冲区的“放置”方法时等于慢。

那么,我怎样才能以最佳性能更新我所有的浮动缓冲区呢?

编辑:我已经解决了我的问题,“put”方法本身并不慢,问题是当为每个浮点缓冲区初始化一个新的浮点数时,而不是那样,我只是更改浮点数组中包含的每个元素的值避免了许多 GC 活动.. 我认为。

4

1 回答 1

1

有很多方法可以提高性能。简而言之,这里有一些:

1) 初始化浮动缓冲区并在每一帧中应用一个变换: - 如果您的方块在屏幕上移动,请将它们放在浮动缓冲区中一次,然后对每个正方形应用单独的矩阵变换。在这种方法中,您填充一次浮动缓冲区,然后每轮更新一次转换。

2) 只在浮动缓冲区中放置唯一的形状- 如果您的任何正方形彼此重复,则每帧调用相同的缓冲区以节省内存。

3) 使用顶点缓冲区对象和索引缓冲区对象- 听起来您可能已经这样做了,但是将数据存储在顶点缓冲区中,并使用数组的索引调用顶点。

如果您仍然遇到问题,我建议您查看本教程: http: //www.learnopengles.com/android-lesson-one-getting-started/

于 2012-09-28T02:17:20.463 回答