Quando a especificação do OpenGL é atualizada, eles apenas adicionam recursos. Portanto, em teoria, o melhor e mais recente hardware com suporte para os perfis Core e Compatibility deve executar o código OpenGL1.1 super antigo. Isso acabou sendo verdade. Passei 12 meses aprendendo o OpenGL1.1 e tenho uma boa noção disso.
Eu li alguns capítulos de um daqueles novos e sofisticados livros do OpenGL4.2. Quase todos os recursos em que confio foram preteridos (como as Listas de Display), o que me permite assumir que existem maneiras melhores de fazer todas essas coisas.
Vamos considerar que o 1.1 provavelmente será suportado, na íntegra, por TODOS os hardwares modernos. 1.1 foi lançado em 1992. Não estou codificando da maneira mais difícil apenas para suportar PCs de 20 anos. :-p Eu acho que é razoável supor que a maioria dos jogadores esteja executando um hardware que atinge o limite médio de cerca de 5 anos.
Eu acho que os métodos mais recentes são projetados para serem universalmente uma das duas coisas: melhor desempenho ou mais fácil de codificar. Eu li em algum lugar que nunca são os dois! XD
Qual versão do OpenGL é mais amplamente suportada por hardware de 5 anos? Qual versão faz mais sentido usar, considerando essas considerações?
Eu começaria aqui: http://store.steampowered.com/hwsurvey
Eu não segmentaria um período de tempo nem uma porcentagem de usuários, por exemplo, se você segmentar 4cpus, atingirá apenas 45% dos usuários, mas se trabalhar para 2, chegará perto de 90%
fonte
A resposta depende se você precisa ou não quer rodar nos gráficos da Intel lançados dentro do prazo mencionado.
Se o fizer, limite-se ao OpenGL 2.1 (ou até 1.5), se não o fizer, o 3.x parecerá razoável.
Sim, as versões mais antigas do OpenGL ainda são executadas e, de uma perspectiva, elas podem parecer mais simples. O ponto em que as coisas ficam fora de forma é quando você tenta fazer coisas (e você fará) que elas não suportam com muita facilidade. O OpenGL 1.1 não é apenas da maneira mais difícil - geralmente é a maneira impossível se você deseja obter determinados resultados.
fonte
Em primeiro lugar, coisas do OpenGL 1.1 como Listas de Display ainda funcionarão em um novo contexto, desde que você tenha o perfil de compatibilidade (que geralmente é o caso). O único problema é se você espera portar para o OpenGL ES, uma das bibliotecas gráficas específicas do console (elas geralmente são desmontadas do OpenGL semelhante ao OpenGL ES) ou até mesmo do WebGL (que exigiria um pouco de retrabalho de qualquer maneira).
Pessoalmente, eu recomendaria o uso de sombreadores de vértices / fragmentos e VBO's. Eles já existem há bastante tempo e oferecem grandes melhorias de desempenho. Você provavelmente poderia até fornecer um retorno simples se agrupar as funções em uma classe.
Você também pode emular coisas como Vertex Array Objects.
fonte
Com hardware de 5 anos, algumas pessoas ainda estão usando o XP. E isso significa que você não pode nem codificar com o DirectX 10 ou o OpenGL 3. E o OpenGL 3 tem muitos recursos dos quais você realmente se beneficiaria, como framebuffers e outros. Honestamente, eu aumentaria um pouco os requisitos do sistema para poder incluir esses recursos.
fonte
É comum que o software 3D tenha caminhos de código para uma versão api gráfica de "linha de base" e uma versão api "mais recente e melhor".
As versões gráficas de linha de base comuns são o D3D9 e o OpenGL 2.1 / GLSL 120. Ambos são notadamente sombreadores de geometria ausentes porque o hardware antigo não os suporta.
Outra opção de linha de base é o ANGLE, que é o GLES 2.0 mais o EGL que é executado no D3D9, no OpenGL de desktop e no GLES 2.0 móvel. É o back-end para o Google chrome e webgl no chrome e Firefox.
http://code.google.com/p/angleproject/
Quanto à versão "mais recente e melhor" que você escolher, isso é mais desafiador. Quanto mais recente a API e o hardware forem direcionados, os recursos com melhor aparência que você pode suportar - mas apenas no hardware mais recente e melhor.
fonte