OpenGL todavía mejor que Direct3D para no juegos? [cerrado]


El modelo estándar ha sido que OpenGL es para aplicaciones profesionales (CAD) y Direct3D es para juegos.

Con la debacle de OpenGL 3.0, ¿OpenGL sigue siendo la elección natural para aplicaciones técnicas 3D (cad/GIS)?
¿Hay bibliotecas de scenegraph para Direct3D?

(Por supuesto Direct3D es solo para windows.)

Author: Martin Beckett, 2008-09-24

8 answers

D3D te hace pagar el impuesto de estrategia de Microsoft."Es decir, D3D sirve a dos maestros. Uno es darle características y rendimiento. El otro es asegurar el bloqueo a otros productos de MS y la plataforma de Windows en general. Esto tiene algunas consecuencias para usted:

  1. Una aplicación D3D no se ejecutará en nada más que Windows (incluida Xbox). Tal vez no creas que eso es importante ahora. Pero si, en el futuro, desea ejecutar en Mac, Linux, PS3, consolas futuras, etc., usted puede estar contento de haber elegido la elección independiente de la plataforma.

  2. La EM puede tomar algunas decisiones arbitrarias. ¿La próxima versión de D3D solo se ejecutará en un sistema operativo que requiera hardware nuevo, sea caro y muchas personas no quieran actualizarse? ¿Tomarán alguna otra decisión futura con la que no estés de acuerdo?

  3. Históricamente, OpenGL ha liderado a D3D en la exposición rápida de nuevas características de HW. Esto se debe a que hay un mecanismo en el estándar para que los proveedores agreguen sus propias extensiones, y para aquellos extensiones que eventualmente se doblarán en la especificación principal. D3D es lo que MS quiere que sea, con la entrada de los proveedores para estar seguro, pero MS obtiene poder de veto. Usted podría fácilmente estar en una situación como con Vista, donde MS decidió no exponer nuevas características de HW al viejo DX, y solo hacer que el nuevo DX esté disponible en Vista. Esto fue un gran dolor de cabeza para los desarrolladores de juegos.

Ahora bien, este es el sabor de las razones por las que una "aplicación profesional" (CAD, animación, visualización científica, SIG, sucesivamente.) favorecería OGL apps aplicaciones como esta quieren ser estables durante muchos años, necesitan mantenimiento y mejora continua, y quieren ejecutarse en muchas plataformas. Esto está en contraste con los juegos, que con bastante frecuencia solo están en una plataforma, se lanzarán pero generalmente no se "mantendrán" (es probable que no haya una 2.0, una actualización para otro sistema operativo tres años por lo tanto, no es necesario soportar HW más antiguos, etc.). Los juegos quieren el máximo rendimiento y solo necesitan trabajar durante un corto período de tiempo y en un número fijo de plataforma. Si necesitan apuntar a Windows de todos modos y D3D es un poco más rápido, esa puede ser la opción correcta, ya que las consecuencias negativas de D3D no los lastimarán como lo haría con una aplicación CAD, por ejemplo.

 35
Author: Larry Gritz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-05 00:27:35

Como siempre, esto depende de tu situación.

En mi experiencia, actualmente (2008) la calidad del controlador OpenGL en Windows es mucho peor que la calidad del controlador Direct3D. Si su situación es tal que no puede exigir razonablemente a sus clientes que siempre tengan controladores actualizados, o decirles que cambien sus tarjetas gráficas a las que tienen mejores controladores de OpenGL, entonces OpenGL es una opción bastante mala. En este caso, elegiría el renderizador D3D en Windows y el renderizador OpenGL en el sistema operativo X / Linux (si tiene que soportar esas plataformas, eso es).

Tener dos renderizadores no es quedifícil; en mi experiencia trabajar alrededor de errores de controladores toma mucho más tiempo que escribir y soportar las rutas de código de renderizado.

Por supuesto, hay algunas situaciones (específicas) en las que D3D simplemente no tiene las características necesarias, por ejemplo, salida genlocked con búfer cuádruple; o soporte de sombreador de geometría en Windows XP.

Así que en resumen: si quieres mejores controladores en Windows, utilice D3D. Si no le importa mucho la calidad del controlador, o necesita características que estén en OpenGL pero no en D3D, utilice OpenGL.

 20
Author: NeARAZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-04 07:41:03

Tal vez debería probar una capa de abstracción como OGRE, que le permite cambiar entre DirectX y OpenGL sin tener que reescribir nada? También añade una gran cantidad de funcionalidad, y no está orientado a juegos, pero bastante genérico.

 14
Author: Samir Talwar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-02 03:17:55

Esto no responde directamente a tu pregunta (lo siento), pero yo era uno de los chicos originales trabajando en Direct3D y jeje:

¿ Hay bibliotecas de scenegraph para ¿Direct3D?

Direct3D (nee Reality Lab) solía ser solo una biblioteca de scenegraph: -)

Es una pena que el modo retenido de Direct3D ya no se envíe...

 4
Author: Steve Lacey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-04 08:29:16

Direct3D solo está disponible en Windows y XBox. Si planea apuntar a Unix o Mac, además de Windows, OpenGL es una buena opción.

 3
Author: jwfearn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-24 01:19:45

Para mí, hablando como programador de gráficos en una gran empresa de CAD, actualmente hay tres cosas que retienen OpenGL de ser caído a favor de Direct3D (10/11) para las aplicaciones CAD/DCC existentes:

  1. Legacy . La mayoría de los softwares CAD son más o menos difíciles de Conceptos de OpenGL. Reescribir todo alrededor de la filosofía D3D no siempre manejable (técnicamente hablando y dependiendo de la capacidad/voluntad de la empresa a la que lanzar recursos se).

    En segundo lugar podría tener negativo impactos si algo sale mal (funcionalidad hablando y / o rendimiento sabio) y la compañía simplemente no tomaría el riesgo de retrasar una versión importante debido a un cambio de API y arquitectura.

  2. Pueblos . Pueblos en esas industrias de viejos son bastante conservadores. Ellos prefieren gastar dinero / tiempo en tratar con IHV con respecto a todos los controladores OpenGL problemas que podrían tener o simplemente no recomiendan el uso de gráficos de un IHV específico (por ejemplo, Intel o ATI).

    Además, creo que los clientes de la industria automotriz/aeroespacial como Boeing, Airbus, TMC, BMW, etc no me importa mucho tener Estación de trabajo Quadros only. Hardware sigue siendo barato en cuanto a software precios de las licencias.

  3. Tendencias Futuras. Con futuro generación de procesadores como Llano, Larrabee, Fermi y productos que seguirá, definitivamente vale la pena para invertir presupuestos de I + D en cómo programe y desarrolle nuevos idioma / api / frameworks para esos futuros hardwares (en términos de gráficos, así como tareas no gráficas).

    La industria CAD tiene enormes ciclos y no se moverá si no es por una tecnología verdaderamente disruptiva. Así que D3D podría solo llega un poco tarde para los grandes jugadores de CAD (excepto Autodesk, por supuesto, que es un caso particular).

 3
Author: Stringer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-22 00:25:56

No es una respuesta como tal, pero es interesante observar que las últimas versiones de AutoCAD le dan la opción de elegir entre usar controladores OpenGL o Direct3D en la opción de configuración "3dconfig". Fundamentalmente, AutoCAD es una aplicación solo para Windows, por lo que tenía sentido que (finalmente) admitieran Direct3D. Consulte la página 15 de este documento técnico de AutoDesk para obtener más información.

 2
Author: CAD bloke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-02 03:07:22

La respuesta que todos quieren creer es SÍ, pero la respuesta real es, depende.

Alrededor del 50% de todo el hardware no ejecutará OpenGL a ningún nivel razonable. Para ver un ejemplo de esto, lea las preguntas frecuentes de Google Sketchup que utiliza OpenGL

El rendimiento de SketchUp depende en gran medida del controlador de la tarjeta gráfica y su capacidad para soportar OpenGL 1.5 o superior. Históricamente, la gente ha visto problemas con las tarjetas ATI Radeon y las tarjetas basadas en Intel con SketchUp. No lo hacemos recomendamos usar estas tarjetas gráficas con SketchUp en este momento. (Requisitos de hardware y software para Google Sketchup

Por lo tanto, si está escribiendo una aplicación CAD y no le importa decirle a sus clientes, "debe tener una tarjeta de video compatible con OpenGL", entonces la respuesta es sí.

Si en su lugar está creando una aplicación de usuario final (Google Earth, por ejemplo), entonces la triste respuesta es que tendrá que escribir una versión D3D y GL de su aplicación si desea llegar a la totalidad mercado.

 1
Author: gman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-01 05:35:00