有沒有一種方法可以根據遊戲/應用在計劃階段期望的複雜性決定是否在SurfaceView中使用常規Canvas繪圖或使用OpenGL?Android:決定在SurfaceView和OpenGL之間(GLSurfaceView)
我一直在玩帆布,只需要2D運動,並且在相當新的手機上,我獲得了相當不俗的表現,其中包括一系列原始對象和一些在純色背景上圍繞屏幕運行的位圖。
公平地說,如果我要繪製背景圖像並增加被移動和繪製的對象的數量,我應該直接使用OpenGL?
有沒有一種方法可以根據遊戲/應用在計劃階段期望的複雜性決定是否在SurfaceView中使用常規Canvas繪圖或使用OpenGL?Android:決定在SurfaceView和OpenGL之間(GLSurfaceView)
我一直在玩帆布,只需要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就使用高層次,合理的高性能Canvas。與其合作非常容易。
除非您有充分的理由使用GLSurfaceView,否則您應該使用 常規SurfaceView。我建議如果你不知道 你需要GL,那麼你可能不知道。
的OpenGL
的OpenGL將能夠處理旋轉和輕鬆擴展。
老實說,你可能需要學習很多的OpenGL要做到這一點, 具體涉及的主題:
幾何照明(或只是禁用它)採摘(選擇幾何 畫就可以了)像素貼圖紋理映射Mipmapping另外,學習 OpenGL對此可能是矯枉過正,你必須非常善於使它高效。
相反,我會建議使用建立在OpenGL上的遊戲 庫的圖形組件,如:
來源
但這張照片沒有顯示在ARM內核VS GPU的負載。使用OpenGL進行渲染時,您將負載移至GPU,而ARM內核可用於其他計算任務。我相信Canvas最終會調用Skia,它主要使用ARM週期進行渲染。根據您使用的Android版本,Skia的某些部分似乎是硬件加速的。 – videoguy 2014-07-09 18:07:46