2011-03-02 81 views
19

有沒有一種方法可以根據遊戲/應用在計劃階段期望的複雜性決定是否在SurfaceView中使用常規Canvas繪圖或使用OpenGL?Android:決定在SurfaceView和OpenGL之間(GLSurfaceView)

我一直在玩帆布,只需要2D運動,並且在相當新的手機上,我獲得了相當不俗的表現,其中包括一系列原始對象和一些在純色背景上圍繞屏幕運行的位圖。

公平地說,如果我要繪製背景圖像並增加被移動和繪製的對象的數量,我應該直接使用OpenGL?

回答

29

我只能說這取決於你要使用多少個精靈。 Google的Chris Pruett也很好地記錄了這一部分。

Google I/O 2009Google I/O 2010

下面是從他的幻燈片之一被你的主題相關圖片: enter image description here

有了這些知識,你應該使用draw_texture擴展用OpenGL去。請記住查詢字符串並檢查實際設備是否支持draw_texture

有關遊戲開發的更多信息,請參見this

+3

但這張照片沒有顯示在ARM內核VS GPU的負載。使用OpenGL進行渲染時,您將負載移至GPU,而ARM內核可用於其他計算任務。我相信Canvas最終會調用Skia,它主要使用ARM週期進行渲染。根據您使用的Android版本,Skia的某些部分似乎是硬件加速的。 – videoguy 2014-07-09 18:07:46

10

SurfaceView

一個GLSurfaceView是,你可以渲染成OpenGL的一個SurfaceView。 它們之間的選擇很簡單:

如果您熟悉OpenGL並需要它提供的內容,請使用GLSurfaceView的 。否則,使用SurfaceView。 OpenGL是低級的。如果你還不熟悉 ,這是一個學習的承諾。如果 只需要2D繪圖,SurfaceView就使用高層次,合理的高性能Canvas。與其合作非常容易。

除非您有充分的理由使用GLSurfaceView,否則您應該使用 常規SurfaceView。我建議如果你不知道 你需要GL,那麼你可能不知道。

的OpenGL

的OpenGL將能夠處理旋轉和輕鬆擴展。

老實說,你可能需要學習很多的OpenGL要做到這一點, 具體涉及的主題:

幾何照明(或只是禁用它)採摘(選擇幾何 畫就可以了)像素貼圖紋理映射Mipmapping另外,學習 OpenGL對此可能是矯枉過正,你必須非常善於使它高效。

相反,我會建議使用建立在OpenGL上的遊戲 庫的圖形組件,如:

Cocos2d

libgdx

Any of the engines listed here

來源

Difference between SurfaceView and GLSurfaceView in Android

Android: Canvas vs OpenGL

相關問題