Cuando se actualiza la especificación OpenGL, solo agregan características. Entonces, en teoría, el hardware más reciente y mejor con soporte para los perfiles Core y Compatibility debería ejecutar un código OpenGL1.1 súper antiguo muy bien. Esto ha resultado ser cierto. He pasado 12 meses aprendiendo OpenGL1.1 y lo entiendo bastante.
Leí algunos capítulos de uno de esos nuevos y elegantes libros OpenGL4.2. Casi todas las características en las que confío han quedado en desuso (como las listas de visualización), lo que me permite suponer que hay mejores formas de hacer todas estas cosas.
Consideremos que 1.1 es probable que sea compatible, en su totalidad, con TODO el hardware moderno. 1.1 fue lanzado en 1992. No estoy codificando de la manera difícil solo para soportar PC de 20 años. :-p Creo que es razonable suponer que la mayoría de los jugadores están ejecutando hardware que toca el fondo en un rango medio de aproximadamente 5 años.
Creo que los métodos más nuevos están diseñados para ser una de dos cosas: mejor rendimiento o más fácil de codificar. ¡Leí en alguna parte que nunca es ambas cosas! XD
¿Qué versión de OpenGL es más ampliamente compatible con hardware de ~ 5 años? ¿Qué versión tiene más sentido para usar, dadas estas consideraciones?
Comenzaría aquí: http://store.steampowered.com/hwsurvey
No apuntaría a un período de tiempo tanto como un porcentaje de usuarios, por ejemplo, si apuntas a 4cpus, solo alcanzarás al 45% de los usuarios, pero si trabajas a 2, estarás cerca del 90%
fuente
La respuesta depende de si necesita o no ejecutar o ejecutar gráficos Intel lanzados dentro del plazo mencionado.
Si lo hace, limítese a OpenGL 2.1 (o incluso 1.5), si no lo hace, entonces 3.x parece razonable.
Sí, las versiones anteriores de OpenGL todavía se ejecutan, y sí, desde una perspectiva, pueden parecer más simples. Cuando las cosas se deforman es cuando intentas hacer cosas (y lo harás) que no son muy fáciles de soportar. OpenGL 1.1 no es solo el camino difícil: a menudo es el camino imposible si desea lograr ciertos resultados.
fuente
En primer lugar, OpenGL 1.1, como las listas de visualización, seguirá funcionando en un nuevo contexto siempre que tenga el perfil de compatibilidad (que generalmente es el caso). El único problema es si espera portar a OpenGL ES, una de las bibliotecas gráficas específicas de la consola (generalmente están despojadas de OpenGL de manera similar a OpenGL ES) o incluso WebGL (que requeriría un poco de reelaboración de todos modos).
Personalmente, recomendaría usar sombreadores de vértices / fragmentos y VBO. Han existido desde hace bastante tiempo y ofrecen grandes mejoras de rendimiento. Probablemente incluso podría proporcionar un simple retroceso si ajusta las funciones en una clase.
También puede emular cosas como Vertex Array Objects.
fuente
Con hardware de 5 años de antigüedad, algunas personas todavía usan XP. Y eso significa que ni siquiera puede codificar con DirectX 10 u OpenGL 3. Y OpenGL 3 tiene muchas características de las que realmente se beneficiaría, como framebuffers y demás. Honestamente, aumentaría un poco los requisitos de su sistema para que pueda incluir esas características.
fuente
Es común que el software 3D tenga rutas de código tanto para una versión de api de gráficos "de referencia" como para una versión de api "más reciente y mejor".
Las versiones de gráficos de línea de base comunes son D3D9 y OpenGL 2.1 / GLSL 120 .. Ambos faltan sombreadores de geometría porque el hardware antiguo no los admite.
Otra opción de línea de base es ANGLE, que es GLES 2.0 más EGL que se ejecuta en D3D9, OpenGL de escritorio y GLES 2.0 móvil. Es el back-end para Google Chrome y Webgl en Chrome y Firefox.
http://code.google.com/p/angleproject/
En cuanto a la versión "más reciente y mejor" que elija, es más difícil. La api y el hardware más recientes a los que apunta, las características más atractivas que puede admitir, pero solo en el hardware más reciente y mejor.
fuente