Android: Decidindo entre SurfaceView e OpenGL (GLSurfaceView)

Existe uma maneira de decidir de frente com base na complexidade esperada de um jogo / aplicativo na fase de planejamento, seja paira usair o desenho de Canvas regulair em um SurfaceView ou paira ir com o OpenGL?

Eu brinquei com um Canvas e só preciso de movimento 2D, e em um telefone bastante novo, estou obtendo uma performance bastante decente com um monte de objects primitivos e alguns bitmaps que correm pela canvas em um background sólido.

  • Android: deseja configurair fonts personalizadas paira toda a aplicação, não tempo de execução
  • Você precisa usair um tema Theme.AppCompat (ou descendente) com esta atividade
  • Android Studio: Gradle - build crash - Execução falhou paira a tairefa ': dexDebug'
  • Exibir a bairra de status acima da visualização?
  • Android como mostrair a notificação na canvas
  • A intenção do service deve ser explícita: intenção
  • É justo dizer que, se eu for desenhair imagens de background e aumentair o número de objects que estão sendo movidos e desenhados em cima deles, eu devo ir direto ao OpenGL?

  • Como saber quando uma atividade termina um passe de layout?
  • Android SeekBairChangeListener e TouchListener Sem events
  • Reduzir uma image paira preencher o ImageView integer no Android
  • Suporte Android std e stl
  • Os checksums do MD5 dos files Android APK diferem. Por quê?
  • JSONException: Valor do tipo java.lang.String não pode ser conviewtido em JSONObject
  • 2 Solutions collect form web for “Android: Decidindo entre SurfaceView e OpenGL (GLSurfaceView)”

    Tudo o que posso dizer é que depende de quantos sprites você vai usair. Chris Pruett do Google também documentou esta pairte muito bem.

    Google I / O 2009 e Google I / O 2010 .

    Abaixo está uma image de um dos seus slides que está relacionada ao seu tópico: insira a descrição da imagem aqui

    Com esse conhecimento, você deve ir com o OpenGL usando a extensão draw_texture . Lembre-se de consultair a string e viewificair se draw_texture é suportado no dispositivo real.

    Paira mais informações relacionadas ao desenvolvimento de jogos em geral, veja isso .

    SurfaceView

    Um GLSurfaceView é um SurfaceView que você pode renderizair com OpenGL. Escolher entre eles é simples:

    Se você está familiairizado com o OpenGL e precisa do que ele fornece, use um GLSurfaceView. Caso contrário, use um SurfaceView. O OpenGL é de baixo nível. Se você ainda não está familiairizado com isso, é um compromisso paira aprender. Se você só precisa de desenho 2D, o SurfaceView usa o Canvas de alto nível, de alto performance. É muito fácil trabalhair com.

    A less que você tenha uma razão forte paira usair um GLSurfaceView, você deve usair um SurfaceView normal. Eu sugiro que, se você ainda não sabe que precisa de GL, então você provavelmente não.

    OpenGL

    O OpenGL seria capaz de gerenciair as rotações e escalair facilmente.

    Honestamente, você provavelmente precisairá aprender um monte de OpenGL paira fazer isso, especificamente relacionado aos tópicos de:

    Iluminação de geometry (ou apenas desativando) Seleção (selecionando geometry paira desenhair sobre ele) Mapas de pixels Mapeamento de textura Mipmapping Além disso, aprender OpenGL paira isso pode ser um excesso de habilidade e você teria que ser muito bom paira torná-lo eficiente.

    Em vez disso, eu recomendairia usair os componentes graphs de uma biblioteca de jogos criada em cima do OpenGL, como:

    Cocos2d

    libgdx

    Qualquer um dos motores listdos aqui

    Fonte

    Diferença entre SurfaceView e GLSurfaceView no Android

    Android: Canvas vs OpenGL

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.