SurfaceView和GLSurfaceView在Android上的区别和优势是什么?

11

我目前正在尝试使用2D图形在Android上进行开发,并且一直在使用普通的SurfaceView来绘制Drawable和Bitmap到屏幕上。这样做一直运行良好,但是在精灵移动时会有一些卡顿,我想知道是否可以使用此方法实现实时游戏(但不是非常快的游戏)。

我知道GLSurfaceView存在并使用OpenGL,但我很好奇它能带来多大程度的差异。简单的SurfaceView是否具有硬件加速功能,或者我需要使用OpenGL?如果切换到OpenGL,可以期望有多大的速度差异,并且需要多少代码更改来完成切换(游戏逻辑都在一个单独的对象中,该对象提供一个有序的可绘制数组给SurfaceView)?

3个回答

2
据我所知,要获得硬件加速,需要使用OpenGL。但是不要轻易相信,等待其他答案的出现^^
如果真的是这种情况,加速应该会非常重要。任何2D应用程序都应该以至少20帧每秒的速度运行(通常比3D应用程序的多边形数量少)。
这将需要大量的代码,但是1)作为第一次尝试,您可以尝试仅使用一个正方形VBO并在每次更改矩阵时进行更改,以及2)您的渲染已经相当封装,所以它应该能够简化许多事情。

1
是的,GLSurfaceView 可以进行硬件加速,而 SurfaceView 则不支持(截至 Android 4.3 版本)。 - pierrotlefou

0

SurfaceView 默认情况下不支持硬件加速。 如果您想获得硬件加速, 请使用 GLSurfaceView,它使用 OpenGL 并支持硬件加速。


-1

这是错误的。"从Android 3.0(API级别11)开始,Android 2D渲染管道支持硬件加速,这意味着在View的画布上执行的所有绘图操作都使用GPU"。是的,但不适用于SurfaceView。 - Stéphane
除了API23+,其中有这种新方法:https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()。 - Stéphane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接