¿Para qué versión de OpenGL debo codificar, dadas las consideraciones de compatibilidad y rendimiento? [cerrado]

19

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?

Jabonaduras
fuente

Respuestas:

19

Dadas sus consideraciones, luego aparecí para ver cuándo se lanzaron las especificaciones de OpenGL para cada versión y también incluí una idea general de lo que he visto.

OpenGL 3, que introdujo FBO, VAO y otras cosas, se lanzó el 11 de julio de 2008, hace casi 5 años. Por supuesto, no puede esperar que todas las tarjetas después de esa fecha tengan disponible OpenGL 3 inmediatamente.

Echando un vistazo a Steam Hardware Survey , el 40% son DirectX 10. Como OpenGL 3 requiere una tarjeta gráfica similar, generalmente es seguro asumir que la mayoría de las tarjetas DirectX 10 pueden ejecutar al menos OpenGL 3.

OpenGL 3 es compatible con las tarjetas desde la serie GeForce 8xxx, que eran bastante populares si recuerdo correctamente. También es interesante notar que los gráficos Intel HD 2000 y 3000 (puente Sandy) solo admiten hasta OpenGL 3, así que tenlo en cuenta si planeas apuntar a esos.

Conclusión: OpenGL 3 es una buena apuesta (también recuerda que la mayoría de los jugadores, dependiendo de tu público objetivo, probablemente tendrán un hardware mejor que el promedio).

DMan
fuente
Esta es una respuesta genial. Era exactamente el tipo de conocimiento que estaba buscando.
Suds
3
"También es interesante observar que los gráficos Intel HD 2000 y 3000 (puente Sandy) solo admiten OpenGL 3" Nota: solo admiten GL 3.1 (porque a Intel simplemente no le importa). Y como es Intel, el "soporte" debe tomarse con un grano de sal. Su hardware podría admitir 3.3, pero no lo exponen (porque, de nuevo, no les importa). Evitaría usar OpenGL 3.x en el hardware de Intel. De hecho, evitaría hacer algo basado en sombreador basado en hardware Intel.
Nicol Bolas
Entonces se plantea la pregunta; ¿Cuán saturado está el mercado con hardware de Intel? ¿Vale la pena no preocuparse por los gráficos Intel y usar OpenGL3.x de todos modos? ¿O hay suficiente hardware de gráficos Intel para importar?
Suds
1
Un problema es OSX. La última versión 10.7.x solo es compatible con OpenGL 3.2 , 10.6.x solo es compatible con 3.0 (o tal vez incluso 2.x). 10.5.x varía mucho dependiendo de la tarjeta, 1.3, 1.5 y 2.0 son posibilidades. Esos sistemas quedarán atrapados para siempre en esas versiones de OpenGL a menos que el usuario pague dinero a Apple por una actualización. No hay actualizaciones de controladores de tarjetas de video o similares para OSX que actualicen OpenGL. Otros problemas son algunos de los conjuntos de chips integrados integrados de Dogey que se usan en las netbooks. Muchos de ellos son solo OpenGL 2.0 o peor.
David C. Bishop
Y luego tienes el 3DS, que todavía está sacudiendo OpenGL 1.1 ...
kirbyfan64sos
8

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%

salmón
fuente
1
¿Dónde viste OpenGL? Solo veo DirectX (que es algo interesante tener en cuenta si solo planea apuntar a Windows).
DMan
Supongo que haces el trabajo preliminar basado en el desglose de la tarjeta gráfica
Jimmy
Sí, no vi nada sobre OpenGL, pero puede obtenerlo de los modelos de tarjeta, o de hecho, creo que habría una buena cantidad de correlación entre las versiones de DirectX y OpenGL.
salmonmoose
3

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.

Maximus Minimus
fuente
Se me ocurre que debo agregar un ejemplo de por qué 1.1 es a menudo imposible. Uno de esos que puede relacionarse fácilmente con la funcionalidad 1.1 es múltiples pases de mezcla. Como no tiene FBO y está limitado principalmente a texturas de 8 bits por componente, encontrará que a medida que se acumulan los pases de mezcla comenzará a perder precisión. Use 3/4/5 pases y el resultado final comenzará a verse como (o peor que) gráficos de 16 u 8 bits. Sin embargo, a menudo se requieren múltiples pases para simular efectos de nivel superior (la multitextura básica sería una con la que todos estamos familiarizados) con un conjunto de características 1.1.
Maximus Minimus
Incluso los gráficos Intel HD (Sandy / Ivy Bridge) solo admiten OpenGL 3.1, y eso es un año. Se trata de si desea admitir computadoras portátiles baratas (o de bajo consumo).
Steve Howard
2
@SteveHoward: Intel HD Graphics puede admitir OpenGL 4. fuente
Janus Troelsen
Ese artículo es de aproximadamente 3 meses después de que publiqué mi comentario.
Steve Howard
1

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.

David C. Bishop
fuente
0

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.

Avi
fuente
8
-1: "Con el hardware de hace 5 años, algunas personas todavía usan XP. Y eso significa que ni siquiera puedes codificar con DirectX 10 u OpenGL 3". No es verdad. OpenGL 3.x funciona bien en XP. Solo el D3D10 está restringido desde XP, por razones de API / controlador. No tiene nada que ver con el hardware.
Nicol Bolas
0

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.

David Jeske
fuente