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)

TetroGL: Um tutorial de desenvolvimento de jogos com OpenGL

Essa série de artigos foca no desenvolvimento de um jogo 2D com C++ e OpenGL para a plataforma Windows. O objetivo é entregar um jogo similar ao clássico jogo Tetris no final dos três artigos. Os artigos não focam apenas no OpenGL mas falam também sobre os padrões que são usados comumente no desenvolvimento de jogos com uma abordagem orientada a objetos. Você deve estar familiarizado com o C++ para poder tirar o máximo proveito da série. Existe uma seção no final de cada artigo para que você possa tirar dúvidas, fazer comentários ou sugerir algo (em inglês).

Essa série é divida em três artigos:

  • Parte 1: Cobre o loop de mensagens do win32, a criação da janela e a configuração do OpenGL. Você irá aprender também como criar formas simples.
  • Parte 2 : Cobre recursos para manipular e exibir animações simples.
  • Parte 3: Agrupa todos os tópicos e explica sobre a lógica do jogo.

OpenGL no Android

O Android fornece suporte para gráficos 2D e 3D de alta performance com a biblioteca Open Graphics Library (OpenGL), especificamente, a API OpenGL ES. O OpenGL é uma API multi-plataforma que especifica uma interface padrão de software para o hardware que processa gráficos 3D. O OpenGL ES é um tipo de especificação do OpenGL projetada para dispositivos móveis. As especificações OpenGL ES 1.0 and 1.1 são suportadas desde o Android 1.0. A partir da versão 2.2 (API Level 8), o framework passa a suporta a especificação OpenGL ES 2.0.

Continuar lendo OpenGL no Android