【问题标题】:Shifting from SurfaceView to GLSurfaceView?从 SurfaceView 转移到 GLSurfaceView?
【发布时间】:2012-07-01 18:31:49
【问题描述】:

我目前正在开发一款仅使用 2D 图形的游戏。

在游戏中,我广泛使用 android 的 SurfaceView 来显示我的图形。 我听说GLSurfaceView 使用硬件加速图形,我可以使用它而不是当前的SurfaceView 来提高我的应用程序的性能。

目前,我有一个扩展SurfaceView 的类,当我自己的扩展Thread 的线程类调用方法update()render() 时,它会更新和呈现游戏状态。线程基本上可以帮助我保持几乎恒定的 FPS。

现在的问题: 我如何从SurfaceView 更改为GLSurfaceView,并调用方法从线程更新和渲染游戏状态,以仍然控制 FPS。我阅读了关于 OpenGL ES 的 android 文档,但我不太明白如何使用 GLSurfaceView.Renderer

如果有人能解释我如何轻松地从SurfaceView 切换到GLSurfaceView,那将有很大帮助!谢谢!

【问题讨论】:

  • 我只需要知道 GLSurfaveView.Renderer 或任何其他类的哪些方法,我应该更新游戏状态,以及我应该使用什么方法来呈现状态。我有很多可以复制粘贴的东西(可能还有一点点),所以我不想重新开始。

标签: android surfaceview glsurfaceview


【解决方案1】:

显示您的游戏的类将扩展 GLSurfaceView。您的渲染类将实现Renderer。在您的 Renderer 类中,您需要添加这些未实现的方法:onDrawFrame()onSurfaceChanged()and onSurfaceCreated()

希望这会有所帮助。

【讨论】:

  • 我从 android 文档中发现了很多。很抱歉在我的回答中没有提到它。所以你说我将我的'update()'代码保留在扩展 GLSurfaceView 的类中,并将我的'render()'代码移动到另一个扩展 Renderer 的类中,并将其放在 onDrawFrame() 方法中。请澄清。我能否从我的线程中控制该方法的执行?
  • 游戏在 onDrawFrame() 方法中更新。您的 GLSurfaceView 基本上是一个空窗口。渲染器处理所有游戏逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多