gpt4 book ai didi

android - glDrawElements 在 Android (HTC Wildfire) 上速度极慢

转载 作者:行者123 更新时间:2023-11-29 15:30:48 27 4
gpt4 key购买 nike

我正在 Android 手机(确切地说是 HTC Wildfire)上测试 OpenGL 性能,我遇到了一件奇怪的事情 - 当我尝试绘制屏幕大小(320 x 480)的纹理索引矩形时,我可以获得高达 40 fps 的帧率!!! - 只有当我使用 32x32 纹理时才会这样。

如果我将纹理大小增加到 256x256,性能会下降到 35 帧。

我的问题是 - 所有这些 Android 游戏怎么可能流畅运行并且仍然充满酷炫的图形。

最佳答案

有许多不同的方法可以提高设备的性能。

  1. 确保您没有进行不需要的混合或绘图,并且根据经验,许多低端 HTC 设备(例如 desire)的填充率受到限制。
  2. 使用三角形带代替三角形。
  3. 使用绘图元素并缓存您的调用,例如加载您的顶点缓冲区并为一个帧多次调用绘图。

但最重要的是使用 DDMS 和方法分析来确定瓶颈的实际位置,它们可能是您不希望出现的地方,例如日志记录、gc、循环中的缓慢操作。您将能够看到有多少时间用于渲染,有多少时间用于其他操作。 (寻找 GLImpl.glDrawElements)

我最大的问题是 GC 启动过于频繁(每秒 5 次,导致我的 fps 非常缓慢),内存分配经常出现在您甚至不会想到的地方。例如,如果您使用 + 运算符将字符串连接到 float ,或者在任何地方或(最差的)集合中使用传统的 java get() 函数,这些都会创建大量可以触发 GC 的对象。

此外,如果您有昂贵的操作,请将它们分离到一个单独的线程中。

我还假设您只创建一次纹理并且每次都使用相同的索引。我看过一些教程,每次渲染一帧时都会创建纹理。

通过广泛使用 DDMS,我能够在 HTC Desire 上将繁忙场景的 fps 从 12 提高到 50。

希望这能让你朝着正确的方向前进:)

关于android - glDrawElements 在 Android (HTC Wildfire) 上速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974979/

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