diferenças entre opengl 3 e opengl 4

10

Estou apenas começando com a programação de jogos e quero começar a aprender opengl. Encontrei um tutorial muito bom do zero para começar a usar o opengl 3 e gostaria de saber se há uma grande diferença entre o openGL 3 e o openGl 4. Ou devo perguntar, o openGL 4 torna o openGL 3 obsoleto ou posso começar com openGL 3 e depois posso passar para o openGL 4?

Mansuro
fonte

Respostas:

12

Começarei com um link para uma explicação de como as versões do OpenGL funcionam . Em resumo, o OpenGL (geralmente) é compatível com versões anteriores, portanto, todo o código GL 3 funciona bem nas implementações do GL 4.

A série 4.x de versões do OpenGL representa o que você pode chamar de hardware da classe "Direct3D 11". Expõe a funcionalidade desse hardware. O hardware D3D10 é representado pelas versões 3.x do OpenGL. Portanto, "mudar para o openGL 4" significa abandonar o hardware mais baixo ou ter várias vias de renderização.

Um detalhamento detalhado das mudanças reais de recursos entre 3.3 e 4.2 pode ser encontrado na especificação 4.2 . Observe que muitos recursos (separar_shader_objects, shading_language_420pack, texture_storage) não estão restritos ao hardware 4.x; elas são alterações de API e você pode acessá-las no hardware 3.x por meio de extensões.

A questão mais saliente é a seguinte: o que o GL 4.x me permite fazer que não posso com o hardware 3.x?

O mosaico é provavelmente a característica mais conhecida. Também é provavelmente o menos geralmente útil. Isso não quer dizer que seja inútil; o uso adequado do mosaico pode aprimorar os detalhes nos modelos. Mas para mim, pelo menos, não é realmente a melhor coisa que o GL 4 tem a oferecer.

As sub-rotinas de sombreador são uma ideia interessante. Isso basicamente permite reunir dinamicamente diferentes fragmentos de shaders. Você pode mais ou menos anexar uma função a um ponto de ligação específico em um programa. A especificação é um pouco difícil de seguir, mas é uma boa funcionalidade.

Eu diria que o carregamento / armazenamento de imagens é provavelmente o pouco mais esquecido e ainda mais poderoso recurso da GL 4. Com isso, você tem a capacidade de implementar transparência independente de pedido com desempenho tão bom quanto a OIT. Provavelmente existem muitos outros usos para carregar / armazenar imagens, mas serão necessárias pessoas mais inteligentes para descobri-las.

Existem algumas probabilidades e fins no GL 4. Coisas como suporte de precisão dupla e renderização indireta. São mais coisas no estilo GPGPU, então provavelmente não será muito útil em um jogo.

Mas, geralmente, o GL 4 não muda radicalmente como você implementa o recurso X do GL 3.

Nicol Bolas
fonte
Eu apenas tenho que dizer, você está completamente errado em dizer que a renderização indireta é 'coisas no estilo GPGPU'. É um ótimo aumento de desempenho para qualquer renderizador que, de outra forma, faria muitas chamadas da CPU e é um ótimo recurso para jogos.
CoffeeandCode