gpt4 book ai didi

Java Android 游戏 GLES 2.0 GLSurfaceView 生涩

转载 作者:行者123 更新时间:2023-12-01 11:04:29 27 4
gpt4 key购买 nike

我在 GLSurfaceView 上使用 GLES 2.0 用 Ja​​va 制作了一个小型 2D 游戏。但我在性能方面遇到了一些问题。我在 OnDrawFrame 函数中完成了所有游戏状态的渲染和更新,并以连续模式运行。在编写应用程序时,我注意到即使使用固定或可变时间步长技术,也会出现 2 秒的延迟。我可以通过平均增量时间来补偿这一点,但有时我仍然可以看到有问题。首先,我以为我写了糟糕的代码(过多使用 GC 或多边形...),但是在创建一个仅记录 FPS 的空应用程序之后,我可以看到同样的问题。在整个 2 秒内,FPS 有一小段时间从 50-60 FPS 下降到 15-30 FPS。即使在不同的设备上(Nexus 7 2013、HTC Desire 500)。

有人也有这个问题吗?有没有比 GLSurfaceView 更好的方法,即针对游戏目的进行优化的方法?如果没有解决方案,是否有一个框架、库或游戏引擎可以为我接管低级的东西,例如游戏循环创建部分,这样我就不必再担心它了?就像 XNA 中的游戏类一样,但有一个异常(exception),我想用普通的 opengl 渲染游戏,而不是像 SpriteBatch 类这样的抽象。

最佳答案

有图形引擎(抽象出 GLES 的东西)和游戏引擎(抽象出几乎所有东西)。如果您愿意并且实际上坚持使用普通 OpenGL ES,那么就没有理由使用它们——您已经在做“低级的事情”了。

构建游戏循环的正确方法在this appendix中有详细描述。到图形架构文档。简而言之,忘记 GLSurfaceView,使用 Choreographer,并做好跳帧的准备。一个简单的示例实现可以在 Grafika's 中找到。 “记录 GL 应用程序”或“硬件缩放器练习器” Activity 。

忽略 FPS,查看每帧的毫秒数。如果您看到严重的停顿,您需要找出导致停顿的原因。 Android 上必备的工具是systrace .

关于Java Android 游戏 GLES 2.0 GLSurfaceView 生涩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33085871/

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