2010-08-02 144 views
11

我目前在玩android中的2D图形,并且一直使用普通的旧SurfaceView来绘制Drawables和Bitmap到屏幕。这一直工作得很好,但是在精灵运动中有一些口吃,我想知道用这个做一个实时(但不是很快)的游戏的可行性。Android上的SurfaceView vs GLSurfaceView的差异和优点?

我知道使用OpenGL的GLSurfaceView存在,但我很好奇这有什么不同。是一个简单的SurfaceView硬件加速,还是我需要使用OpenGL?我希望切换到OpenGL有什么样的速度差异,以及它需要切换多少代码(游戏逻辑全都在一个单独的对象中,以向SurfaceView提供有序的可绘制数组)。

回答

2

据我所知,你必须使用openGL来获得硬件加速。但不要理所当然,等待其他答案^^

如果确实如此,加速应该是相当重要的。任何2D应用程序都应该以至少20 fps的速度工作(通常比3D应用程序的面数更少)

它需要大量的代码,但1)作为第一次尝试,您可以尝试仅使用1平方VBO并更改矩阵每次和2)你的渲染似乎已经相当封装,所以它应该简化很多事情。

+1

是的。 GLSurfaceView是HW加速的,而SurfaceView不是(如Android 4.3)。 – pierrotlefou 2013-08-06 08:52:34

0

默认情况下SurfaceView不是硬件加速的。 如果你想获得硬件加速 使用GLSurfaceView,它使用opengl并被硬件加速。

-1

硬件加速对于自3.0以来的常规SurfaceView是可能的。

http://developer.android.com/guide/topics/graphics/hardware-accel.html

+0

这是错误的。 “从Android 3.0(API级别11)开始,Android 2D渲染管道支持硬件加速,这意味着在View画布上执行的所有绘图操作都使用GPU”。是的,但不适用于SurfaceView。 – 2017-01-26 13:46:32

+0

除API23 +有新的方法外:https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas() – 2017-01-26 13:48:30