Introdução ao OpenGL no Android

OpenGL significa Open Graphics Library. É basicamente uma API usada pelo Android para suportar gráficos de alto desempenho, como gráficos 2D e 3D. O uso geral do OpenGL para transferir os dados da CPU para a GPU. Isso é feito pelo OpenGL Objects. É uma API gráfica de plataforma cruzada. Neste tópico, vamos aprender sobre o OpenGL no Android.

Os objetos OpenGL são compostos de estados e dados e ajudam a transmitir dados entre a CPU e a GPU. O OpenGL ES é uma especificação popular da API do OpenGL, especialmente dedicada a sistemas embarcados.

O OpenGL no Android é suportado pelo Android usando o Native Development Kit (NDK) e sua API de estrutura. As classes fundamentais na estrutura do Android ajudam a criar e editar gráficos. A API do OpenGL ES usada com essas classes é chamada GLSurfVaceiew.Renderer e GLSurfaceView. Um bom entendimento da implementação dessas classes é útil no uso do OpenGL em seu aplicativo Android.

GLSurfaceView

Você pode desenhar e manipular objetos nessa exibição. É fácil usar essa classe, pois você pode criar um objeto GLSurfaceView e adicionar um Renderer a ele. Você pode capturar eventos da tela de toque estendendo a classe GLSurfaceView para implementar os listeners de toque.

GLSurfaceView.Renderer

A interface GLSurfaceView.Renderer contém métodos necessários para desenhar gráficos em um GLSurfaceView. A implementação dessa interface deve ser fornecida como uma classe separada anexada à instância GLSurfaceView usando GLSurfaceView.setRenderer () .

Você precisa implementar os seguintes métodos para a implementação da interface GLSurfaceView.Renderer:

  • onSurfaceCreated () : esse método é chamado durante a criação do GLSurfaceView.
  • onDrawFrame () : esse método é chamado durante cada redesenho do GLSurfaceView.
  • onSurfaceChanged () : este método é chamado quando a geometria GLSurfaceView muda (tamanho, orientação, etc.).

Como o OpenGL no Android funciona?

Existem vários tipos de objetos OpenGL. Por exemplo, um objeto de buffer de vértice que pode armazenar vértices de um caractere. O segundo exemplo é Textura que pode armazenar dados de imagem.

Dados como vértices, normais e coordenadas UV que representam as características da malha são carregados em um objeto de buffer do vértice e depois enviados à GPU para processamento. Uma vez na GPU, esses dados passam a ser conhecidos como o OpenGL Rendering Pipeline.

As principais tarefas pelas quais o Rendering Pipeline é responsável são a conversão dos vértices para o sistema de coordenadas correto, montagem dos vértices de um caractere, aplicação de cor ou textura e exibição do caractere no buffer de moldura padrão que é a tela.

O processo de pipeline de renderização do OpenGL no Android consiste em seis estágios, como abaixo:

  1. Operação por vértice
  2. Montagem Primitiva
  3. Processamento Primitivo
  4. Rasterização
  5. Processamento de fragmentos
  6. Operação por fragmento

Operação por vértice

O primeiro e mais importante passo para renderizar uma imagem é que os dados geométricos precisam ser convertidos de um sistema de coordenadas para outro sistema de coordenadas.

Montagem Primitiva

Os vértices são coletados em pares de 2, 3 e mais neste passo específico e o primitivo é montado, por exemplo, em um triângulo.

Processamento Primitivo

Quando as primitivas são montadas, elas são testadas para verificar se estão dentro de um Volume de Visualização. Caso não passem nesse teste específico, serão ignorados em outras etapas. Este teste é conhecido como recorte.

Rasterização

Em seguida, as primitivas são divididas em pedaços de unidades menores e correspondentes aos pixels no buffer de quadros. Cada uma dessas unidades menores é conhecida como Fragmentos.

Processamento de fragmentos

Quando o primitivo é rasterizado, a cor ou a textura são aplicadas à geometria.

Operação por fragmento

Por fim, os fragmentos são submetidos a vários testes, como:

  • Teste de propriedade de pixel
  • Teste de tesoura
  • teste Alpha
  • Teste de estêncil
  • Teste de profundidade

Dessas seis etapas, duas estão sendo controladas por programas chamados Shaders.

Shader, em resumo, é um pequeno programa desenvolvido apenas por você que vive na GPU. Existe uma linguagem gráfica especial conhecida como OpenGL Shading Language (GLSL) na qual um shader é gravado. Os dois estágios importantes no pipeline OpenGL, onde ocorre um shader, são chamados de "Processamento por vertex" e "Processamento por fragmento".

O sombreador processado no estágio "Per-Vertex" é conhecido como Vertex Shader. O sombreador processado no estágio "Por fragmento" é conhecido como sombreador de fragmento. O objetivo final e básico do shader de vértice é fornecer a transformação final dos vértices do caractere no pipeline de renderização, enquanto o objetivo do shader de fragmento é fornecer os dados de coloração e textura de cada um dos títulos de pixel ao buffer de estrutura.

Quando os dados são transmitidos pelo OpenGL Rendering Pipeline, o modelo 3D ou 2D aparecerá na tela do seu dispositivo.

Programa GL

Conselhos para OpenGL no Android

Caso você seja iniciante no programador OpenGL, talvez alguns desses pontos abaixo ainda não tenham sido encontrados por você. Abaixo estão algumas diretrizes para você cuidar ao usar o OpenGL no Android. São erros comuns. Portanto, sempre tenha isso em mente.

  1. Escalonamento inadequado de normais para iluminação
  2. O mau mosaico prejudica a iluminação
  3. Lembre-se sempre do seu modo de matriz
  4. Transbordamento da pilha da matriz de projeção
  5. Não definindo todos os níveis do Mipmap
  6. Lendo Pixels de Luminância de Volta

Pré-requisitos para o OpenGL no Android

Abaixo estão os pré-requisitos necessários para o OpenGL no Android.

Habilidades em software

  • C, isto é, linguagem de programação.
  • O conhecimento de C ++ não é necessário, mas é útil.
  • Uso de várias bibliotecas que podem ser estáticas ou dinâmicas.

Matemática

  • Conhecimento de vetores em 2D e 3D.
  • Matrizes
  • Conceitos de matemática de nível básico.

Esses são todos os conceitos principais e básicos necessários para iniciar o OpenGL. Você pode precisar aprender mais alguns conceitos de matemática, mas depois de chegar ao nível intermediário. Mas isso depende totalmente de você. Você pode passar por muitas coisas com a ajuda de diferentes bibliotecas.

Conclusão: OpenGL no Android

Portanto, o OpenGL é uma API completamente funcional, de nível primitivo, que permite ao programador abordar e tirar proveito do hardware gráfico. Um grande número de bibliotecas de alto nível, bem como aplicativos, usa o OpenGL por causa de seu desempenho, facilidade de programação, extensibilidade e suporte amplo.

Artigo recomendado

Este foi um guia para o OpenGL no Android. Aqui discutimos o processo de trabalho e os pré-requisitos do OpenGL no Android. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. WebGL vs OpenGL
  2. O que é o Cognos?
  3. O que é o Jira Software?
  4. Carreira no Azure