OpenGL - Introdução


23 - 2021

Bom vou abrir as postagem com meus estudos sobre OpenGL. Decidi a pouco que gostaria de me guiar ainda mais forte para a areá de computação gráfica e techart e imaginei que começar pelo OpenGL seria um boa ideia.

Para meus estudo estou usando diversas fontes, desde livros, documentação do grupo Khronos12 e um curso do Udemy que comecei3, mas ainda não o finalizei, apesar de entregar os desafios senti que estava faltando entendimento.

Bom vamos ao que interesse não é mesmo?

O que é OpenGL?

OpenGL é uma API gráfica para renderização em 2D e 3D, mantido hoje pelo grupo Khronos, que é o mesmo mantenedor do WebGL e Vulkan por exemplo ~que em algum momento dará as caras aqui~

A especificação do OpenGL é agnóstica de linguagem e plataforma, isso significa que cada desenvolvedor de hardware que pretende ter suporte ao OpenGL precisa fazer a sua versão, e também tendo diversos “bindings” possíveis. Isso permite que ele seja executado desde sistemas embarcados até o ultimo dos consoles. E para utilizá-lo o desenvolvedor pode escolher uma das diversas linguagens em que já existe um “binging” como PyGame em Python e OpenTK para C# são exemplos de alguns.

Vale lembrar que a especificação do OpenGL não prevê o gerenciamento de janelas, dispositivos de entrada e saída ou áudio. Para tudo isso precisamos utilizar outras libs. Como por exemplo SDL, GLFW, Allegro e etc

Primeiros Passos

A primeira coisa a se fazer é definir qual será seu ambiente de desenvolvimento, e isso inclui o “binding” que pretende utilizar, ao longo desses estudos vou utilizar C/C++.

Definido isso precisamos configurar esse ambiente de desenvolvimento, IDE, Build System e afins. O recomendado seria utilizar o Visual Studio com seu compilador e “não ter muita dor de cabeça”. Como diria meu pai, há controvérsias, e como eu sou teimoso vou por um caminho mais difícil.

Inicialização

Pela característica de o OpenGL ser independente de plataforma e linguagem não existem uma inicialização universal, mas ela se divide basicamente em duas fases: Criar um contexto OpenGL e Carregar as funções necessárias do OpenGL.

Criação de um contexto OpenGL

A crianção de um contexto OpenGL é necessária para se ter acesso de fato a API, mas como é extremamente dependente da plataforma destino é recomendado que se use alguma Window Toolkit para gerenciar os contextos entre outras coisas

SDL, GLFW, SFML

Carregando as funções

Diferente de algumas bibliotecas em basta fazer as configurações corretas e utilizar a diretiva #include para utilizas suas funções, em OpenGl é necessário carrega-las explicitamente.

Até é possível fazer isso manualmente, mas também não é recomendado, o indicado é utilizar uma LoadingLib que facilitam muito esse trabalho.

GLEW, GL3W, GLUT

 

No próximo post vou fazer a configuração do ambiente de trabalho. Até mais!

Referências

  1. Khronos OpenGL Wiki 

  2. Específicação OpenGL 4.6 

  3. Udemy: Computer Graphics with Modern OpenGL and C++