2010-08-02 65 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