【发布时间】:2011-03-02 15:01:21
【问题描述】:
有没有办法在规划阶段根据游戏/应用程序的预期复杂性预先决定是在 SurfaceView 中使用常规 Canvas 绘图还是使用 OpenGL?
我一直在玩画布,只需要 2D 运动,在一部相当新的手机上,我获得了相当不错的性能,一堆原始对象和一些位图在纯色背景上围绕屏幕运行。
公平地说,如果我要绘制背景图像并增加在它们之上移动和绘制的对象的数量,我应该直接使用 OpenGL 吗?
【问题讨论】:
有没有办法在规划阶段根据游戏/应用程序的预期复杂性预先决定是在 SurfaceView 中使用常规 Canvas 绘图还是使用 OpenGL?
我一直在玩画布,只需要 2D 运动,在一部相当新的手机上,我获得了相当不错的性能,一堆原始对象和一些位图在纯色背景上围绕屏幕运行。
公平地说,如果我要绘制背景图像并增加在它们之上移动和绘制的对象的数量,我应该直接使用 OpenGL 吗?
【问题讨论】:
我只能说这取决于你要使用多少精灵。来自 Google 的 Chris Pruett 也很好地记录了这一部分。
Google I/O 2009 和 Google I/O 2010。
下面是他的一张幻灯片中与您的主题相关的图片:
有了这些知识,您应该使用 draw_texture 扩展名来使用 OpenGL。记得查询出字符串并检查draw_texture在实际设备上是否支持。
有关一般游戏开发的更多信息,请参阅this。
【讨论】:
SurfaceView
GLSurfaceView 是可以使用 OpenGL 渲染的 SurfaceView。 在它们之间进行选择很简单:
如果您熟悉 OpenGL 并需要它提供的功能,请使用 GLSurfaceView。否则,请使用 SurfaceView。 OpenGL是低级的。如果 你还不熟悉它,这是一项需要学习的任务。如果 只需要2D绘图,SurfaceView使用高级,合理 高性能帆布。使用起来非常简单。
除非您有充分的理由使用 GLSurfaceView,否则您应该使用 一个常规的 SurfaceView。我建议如果你还不知道 你需要 GL,那么你可能不需要。
OpenGL
OpenGL 将能够轻松处理旋转和缩放。
老实说,您可能需要学习很多 OpenGL 才能做到这一点, 特别与以下主题相关:
几何照明(或只是禁用它)拾取(选择几何 绘制它)像素映射纹理映射Mipmapping另外,学习 OpenGL 可能是矫枉过正,你必须漂亮 擅长让它变得高效。
相反,我建议使用游戏的图形组件 建立在openGL之上的库,例如:
来源
【讨论】: