ventajas que motor modo mejor grafico diferencias desventajas cual opengl directx direct3d

motor - OpenGL es aún mejor que Direct3D para los no juegos?



que es modo opengl (8)

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, ¿sigue siendo openGl la elección natural para las aplicaciones técnicas 3D (cad / GIS)?
¿Hay bibliotecas scenegraph para Direct3D?

(Por supuesto, Direct3D solo es Windows).


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, ni que cambien sus tarjetas gráficas por las que tienen mejores controladores OpenGL, entonces OpenGL es una opción bastante mala. En este caso, elegiría el renderizador D3D en Windows y el renderizador OpenGL en OS X / Linux (si es que tienes que admitir esas plataformas, eso es).

Tener dos renderizadores no es tan difícil; en mi experiencia, trabajar con los errores del controlador requiere mucho más tiempo que escribir y respaldar las rutas del código de representación.

Por supuesto, hay algunas situaciones (específicas) en las que D3D simplemente no tiene las características necesarias, por ejemplo, la salida genlock cuadruplicada; o soporte de shader de geometría en Windows XP.

En resumen: si quieres mejores controladores en Windows, usa D3D. Si no le importa mucho la calidad del controlador o si necesita funciones que estén en OpenGL pero no en D3D, entonces use OpenGL.


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

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

  2. MS puede tomar algunas decisiones arbitrarias. ¿La próxima versión de D3D solo se ejecutará en un sistema operativo que requiera hardware nuevo, es costosa y mucha gente no desea actualizarla? ¿Tomarán alguna otra decisión futura con la que no estés de acuerdo?

  3. Históricamente, OpenGL ha llevado a D3D a la exposición rápida de las nuevas características de HW. Esto se debe a que existe un mecanismo en el estándar para que los proveedores agreguen sus propias extensiones, y esas extensiones eventualmente se plieguen en la especificación principal. D3D es lo que sea que MS quiera que sea, con la entrada de los proveedores para estar seguro, pero MS tiene poder de veto. Podrías estar fácilmente en una situación como la de Vista, donde MS decidió no exponer nuevas características de HW al viejo DX, y solo hacer el nuevo DX 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, GIS, etc.) favorecería a OGL: aplicaciones como esta quieren mantenerse estables durante muchos años, necesitan mantenimiento y mejoras constantes, y quiere correr en muchas plataformas. Esto contrasta con los juegos, que con frecuencia solo se encuentran en una plataforma, se lanzarán pero generalmente no se "mantendrán" (es probable que no haya un 2.0, una actualización para otro sistema operativo dentro de tres años, no necesitan soporte HW más viejo, etc.). Los juegos quieren el máximo rendimiento y solo necesitan trabajar durante una ventana de tiempo corto y en un número fijo de plataformas. Si necesitan apuntar a Windows de todos modos y D3D es un poco más rápido, esa puede ser la elección correcta, ya que las consecuencias negativas de D3D no les afectarán como lo haría con una aplicación de CAD, por ejemplo.


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.


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

¿Hay bibliotecas scenegraph para Direct3D?

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

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


La respuesta que todos quieren creer es SÍ, pero la verdadera respuesta 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 admitir OpenGL 1.5 o superior. Históricamente, las personas han tenido problemas con las tarjetas ATI Radeon y las tarjetas basadas en Intel con SketchUp. No recomendamos utilizar estas tarjetas gráficas con SketchUp en este momento. ( Requisitos de hardware y software para Google Sketchup

Entonces, si está escribiendo una aplicación de CAD y no le importa decirle a sus clientes, "debe tener una tarjeta de video de cumplimiento de OpenGL", la respuesta es sí.

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


No es una respuesta como tal, pero es interesante tener en cuenta que las últimas versiones de AutoCAD le permiten elegir entre usar los controladores OpenGL o Direct3D en la opción de configuración "3dconfig". Fundamentalmente, AutoCAD es una aplicación solo para Windows, por lo que tiene sentido para ellos (finalmente) admitir Direct3D. Consulte la página 15 de este Whitepaper de AutoDesk para obtener más información.


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

  1. Legado La mayoría de los softwares CAD son más o menos ajustados a los conceptos OpenGL. Reescribir todo lo relacionado con la filosofía D3D no siempre es manejable (técnicamente hablando y dependiendo de la capacidad / disposición de la empresa para generar recursos).

    En segundo lugar, podría tener un impacto negativo si algo sale mal (funcionalidad hablando y / o rendimiento) y la empresa simplemente no correrá el riesgo de retrasar un lanzamiento importante debido a un cambio de arquitectura y API.

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

    Además, creo que los clientes de la industria aeroespacial / automotriz como Boeing, Airbus, TMC, BMW, etc. no se preocupan tanto por tener solo la estación de trabajo de Quadros. El hardware todavía es barato en lo que respecta a los precios de licencias de software.

  3. Tendencias futuras Con futuras generaciones de procesadores como Llano, Larrabee, Fermi y productos que seguirán, definitivamente vale la pena invertir presupuestos de I + D sobre cómo programar y desarrollar nuevos lenguajes / apis / frameworks para esos hardwares futuros (en términos de gráficos y no tareas gráficas).

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


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 agrega mucha funcionalidad, y no está orientado a juegos, pero es bastante genérico.