OpenGL – Geometry shaders

Até agora em nossa série sobre OpenGL, usamos vertexfragment shader para manipular os vértices em pixels na tela. Desde o OpenGL 3.2 existe um terceiro tipo de shader que se posiciona entre o vertex e o fragment shader, conhecido como geometry shader. Esse shader possui a habilidade única de criar uma nova forma geométrica usando a saída do vertex shader como entrada.

Continuar lendo OpenGL – Geometry shaders

OpenGL – Framebuffers

Nos artigos anteriores de nossa série sobre OpenGL, vimos diferentes tipos de buffers que o OpenGL oferece: cor, depth e stencil. Esses buffers ocupam a memória de vídeo da mesma forma que qualquer outro objeto OpenGL, mas até agora temos pouco controle sobre eles além da especificação de formatos de pixel quando criamos o contexto OpenGL. Essa combinação de buffers é conhecida como framebuffer padrão e como vimos, um framebuffer é uma área da memória que pode ser renderizada. E como fazemos se quisermos renderizar um resultado e fazer algumas operações adicionais nele, como algum pós-processamento como visto em jogos modernos?

Continuar lendo OpenGL – Framebuffers

OpenGL – Buffers adicionais: depth e stencil

Até agora, nesta nossa série sobre OpenGL, houve apenas um tipo de buffer de saída usada por nosso exemplos, o buffer de cores. Nesse artigo, discutiremos dois tipos adicionais, o buffer de depth e o buffer de stencil. Para cada um deles um problema será apresentada e resolvido em seguida com esse buffer especifico.

Continuar lendo OpenGL – Buffers adicionais: depth e stencil

OpenGL – Transformações


Como esse artigo tem como foco programação gráfica, não cobrirá boa parte da teoria por trás de matrizes. Apenas a teoria que é aplicada para gráficos computacionais será considerada e será explicada do ponto de vista de um programador. Se quiser aprender mais sobre esse tópico, esses videos da KhanAcademy são uma boa introdução sobre o assunto.

Continuar lendo OpenGL – Transformações

OpenGL – Aplicando texturas

Como no case dos VBOs e VAOs, texturas são objetos que precisam ser gerados primeiro pela chamada á uma função. Não deve ser uma surpresa nesse ponto como essa função é chamada.

GLuint tex;
glGenTextures(1, &tex);

Continuar lendo OpenGL – Aplicando texturas

OpenGL – Desenhando polígonos

Ao aprender OpenGL, você decidiu que queria fazer todo trabalho você mesmo. Isso inevitavelmente significa que você será jogado no fundo, mas uma vez que tenha entendido o essencial, verá que fazer as coisas da maneira mais difícil  não tem que ser difícil.

Continuar lendo OpenGL – Desenhando polígonos

OpenGL – Criando um contexto para desenho de polígonos

Antes que você possa começar a desenhar coisas com o OpenGL, precisa inicializa-lo. Isso é feito pela criação de um contexto, que é essencialmente um estado de máquina que armazena todos os dados relacionados à renderização de sua aplicação. Quando a sua aplicação é fechada, o contexto é destruído e tudo que ele armazena é apagado da memória.

Continuar lendo OpenGL – Criando um contexto para desenho de polígonos

Mapeamento de textura no OpenGL

Uma das ferramentas mais poderosas em gráficos de computador é o mapeamento de texturas. O mapeamento de texturas aplica uma imagem a uma superfície. Modelar uma superfície complexa frequentemente não é uma tarefa prática por causa do nível de detalhes necessário e por ser difícil renderizar esses detalhes de forma acurada. Ao invés disso, o mapeamento de texturas permite que um polígono simples aparente ter uma superfície complexa.

Continuar lendo Mapeamento de textura no OpenGL

OpenGL Vertex Buffer Object (VBO)

A extensão GL_ARB_vertex_buffer_object tem por objetivo aumentar a performance do OpenGL ao prover os benefícios do vertex array e do display list, ao mesmo tempo que evita os aspectos negativos de suas implementações. O Vertex buffer object (VBO) permite que arrays de vértices sejam armazenados na memória gráfica de alta performance do lado do servidor e promove transferência eficiência de dados. Se o objeto do buffer é usado para armazenar dados de pixels, é chamado Pixel Buffer Object (PBO).

Continuar lendo OpenGL Vertex Buffer Object (VBO)

Mapeamento de textura com o OpenGL no Android (Exibindo imagens usando OpenGL e Squares)

Nos dois artigos anteriores (artigo 1 e artigo 2) introduzimos o Open GL ES do Android. Agora vamos dar um passo adiante e desenvolve-los. Nesse artigo, criaremos um quadro de avisos (que é um quadrado_ e aplicaremos uma textura a ele. Um textura não é nada mais do que uma imagem bitmap. Quando trabalhamos em 2D ajustamos a coordenada Z para 0. Cobriremos 3D a seguir. Isso é muito útil para jogos 2D e é a forma preferida de exibir imagens usando OpenGL, por ser muito rápida.

Continuar lendo Mapeamento de textura com o OpenGL no Android (Exibindo imagens usando OpenGL e Squares)

Tutorial de OpenGL ES com Android – Exibindo elementos gráficos (Primitivas)

Essa é a parte 2 na série de artigos sobre o OpenGL ES no Android. No artigo anterior vimos como configurar o projeto Android para usar a visão OpenGl fornecida pela plataforma com nosso renderizador. Você pode usar o projeto desse artigo como base para o desse.

Continuar lendo Tutorial de OpenGL ES com Android – Exibindo elementos gráficos (Primitivas)