OpenGL

OpenGL, contração de Open Graphics Library, é todo um universo acerca do mundo da computação gráfica. Pois é, não é a ideia rasa que você tem disso.

Considerado primariamente uma interface de programação de aplicação (API) que provém um amplo conjunto de funcionalidades que permite ao usufrutuário manipular gráficos e imagens utilizando todo o poder computacional das GPUs, OpenGL, por si, não é uma API, mas meramente uma “especificação” desenvolvida e manutenida, como o Vulkan, pelo consórcio Khronos Group.

Conceito

Você, leitor, provavelmente tem uma noção trivialista de comparar OpenGL ao Direct3D (não confunda com DirectX), ou considerá-lo como mais um middleware de gráficos tal como abstrações de renderizadores da Unreal, etc, certo? Bem… não é assim “tão simples”.

Apesar de não ser tão simples, vou tentar ser breve, já que brasileiro tem repúdio a leitura; grrr. Vamos lá.

OpenGL, em si, ou melhor, a “especificação”, especifica quais e como seriam os resultados e saídas de cada função e funcionalidade, e por vezes como deveriam desempenhar. Então cabe aos desenvolvedores que implementam esta especificação chegar com uma solução de como cada função ou funcionalidade deveria operar.

Desde que a especificação do OpenGL não oferece detalhes, suas versões atuais desenvolvidas estão habilitadas a apresentarem diferentes implementações, conforme seus resultados consentem com a especificação (e sejam as mesmas para os usuários).

Basicamente, é como uma tomada e o plugue. Se você quiser que um eletrônico funcione na rede elétrica de qualquer lugar, você deveria normatizar o plugue para àquela norma de tomada.

OpenGL é também um nome associado ao driver de aceleração de hardware. Ao invés do programador lidar com as gambiarras da tríplice RGB — AMD, NVIDIA e Intel — diretamente, o programador segue a especificação OpenGL e estes manufaturadores oferecem sua “implementação” do OpenGL, isto é, o driver real de hardware.

As pessoas desenvolvendo as atuais bibliotecas OpenGL são normalmente os manufaturadores do hardware de vídeo, a destacar a tríplice RGB: AMD, NVIDIA, e Intel. Cada hardware acelerador de gráficos que você compra suporta versões específicas do OpenGL, as quais são versões desenvolvidas especificamente para aquele hardware. Por isso um driver não opera propriamente num hardware diferente.

OpenGL é também um nome associado a toda ABI que oferece funcionalidade a esta especificação. Em um sistema da Apple, a biblioteca OpenGL é manutenida pela Apple mesmo, e sob Linux, existe uma combinação de versões de suplentes de gráfico e adaptações de voluntários destas bibliotecas. Isso também significa que, sempre que o OpenGL estiver apresentando um comportamento estranho, provavelmente é culpa dos manufaturadores de hardware e/ou programadores de biblioteca.

Na indústria da computação gráfica em geral, principalmente do CAD/CAM, é comum ver menções sobre OpenGL, principalmente porque, normalmente, todo desenvolvedor tenta se aproximar ao máximo da especificação do OpenGL ao fazer seu middleware para games, editores tridimensionais, ilustradores assistidos, etc, para tentar uma compatibilidade maior com o mercado, mesmo que OpenGL não tenha relação nenhuma com aquilo. Matrizes, vetores, o sistema de coordenadas em geral, são um grande destaque.

História (breve)

OpenGL foi primeiro criado como uma alternativa aberta e reproduzível ao IrisGL, o qual foi a API proprietária de gráficos nas estações de trabalho da Silicon Graphics. Embora OpenGL haja sido inicialmente similar em ampla percepção ao IrisGL, a falta de uma especificação formal e testes de conformidade fizeram da IrisGL inadequada para adoção massiva.

Mark Segal e Kurt Akeley compuseram a especificação 1.0 do OpenGL, a qual tentou formalizar a definição de uma API cruze-plataforma usável de gráficos e, fez viável a implementação e a manutenção terceirizadas não apenas pela SGI.

Uma notável omissão da versão 1.0 foi os objetos de textura. IrisGL havia definição e estágios de ligamento para toda sorte de objetos, incluindo materiais, luzes, textures e ambientações. Estes objetos foram evitados em favor de alterações incrementais de estado com a ideia de que alterações coletivas poderiam ser encapsuladas em listas de exibição. Isto remanesceu na filosofia com exceção que objetos de textura sem distinção de estágio são uma parte-chave da API.

OpenGL atravessou um número de revisões as quais foram predominantemente adições incrementais onde extensões à API do núcleo foram gradualmente incorporadas ao corpo principal da API. Por exemplo, OpenGL 1.1 adicionou a extensão de ligação de textura à API do núcleo.

OpenGL 2.0 incorporou a adição significante da linguagem de shader, OpenGL Shading Language (GLSL), uma linguagem ao estilo C com a qual os estágios de transformação e sombreamento de pixel da linha de produção de gráficos podem ser programadas.

OpenGL 3.0 adicionou o conceito de deprecação: fazendo certos recursos como sujeitos a remoção em versões futuras. Em 3.1, mais recursos deprecados foram removidos. E, em 3.2, foi criada a noção de contextos de perfil de núcleo e compatibilidade.

Imagens

Não há o que mostrar exatamente, uma vez que OpenGL, Vulkan, etc, não passam de “faces diferentes” da mesma pessoa, isto é, toda a capacidade dessas tecnologias não é realmente “delas”, mas do seu hardware de vídeo. Tudo que uma pode fazer a outra também pode, isto porque é uma capacidade da VGA, não da API.

Vide o exemplo a seguir, o OpenGL, uma tecnologia que, apesar de ser manutenida, foi criada na década de 1980, lado a lado ao que temos de mais novo e poderoso, o Vulkan, irmã e sucessora do OpenGL. Nada a destacar. Os diferenciais são técnicos e práticos, isto é, é o programador que sabe, e a forma de operação e suas penalidades.

Relacionado

Vulkan

Vulkan, incialmente apresentada como OpenGL Next (enquanto vaporware), é uma API de computação e de realização de gráficos 2D e 3D, multiplataforma, de baixa sobrecarga,…

EAX

EAX, sigla para Environmental Audio Extensions (Extensões de Áudio Ambiental), é um conjunto de predefinições de processamento de sinal digital de som, desenvolvido pela Creative…

GTA San Andreas

GTA San Andreas é um game de ação aventureira combativa e condução veicular em terceira pessoa desenvolvido pela Rockstar North e publicado pela Rockstar Games…

Responses