¿OpenGL sigue siendo mejor que Direct3D para aplicaciones que no son juegos?[cerrado]

StackOverflow https://stackoverflow.com/questions/124851

  •  02-07-2019
  •  | 
  •  

Pregunta

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 opción natural para aplicaciones técnicas 3D (CAD/GIS)?
¿Existen bibliotecas de gráficos de escenas para Direct3D?

(Por supuesto, Direct3D es solo para Windows).

¿Fue útil?

Solución

D3D te hace pagar el "impuesto de estrategia" de Microsoft. Es decir, D3D sirve a dos maestros.Uno le brinda características y rendimiento.La otra es garantizar la vinculación con otros productos de MS y la plataforma Windows en general.Esto tiene algunas consecuencias para ti:

  1. Una aplicación D3D solo se ejecutará en Windows (incluida Xbox).Quizás no creas que eso es importante ahora.Pero si, en el futuro, desea ejecutarlo en Mac, Linux, PS3, consolas futuras, etc., puede alegrarse 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 requiere hardware nuevo, es costoso y mucha gente no quiere actualizarlo?¿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 rápida exposición de nuevas características de hardware.Esto se debe a que existe un mecanismo en el estándar para que los proveedores agreguen sus propias extensiones y para que esas extensiones eventualmente se incorporen a la especificación principal.D3D es lo que MS quiere que sea, con aportes de los proveedores, sin duda, pero MS tiene poder de veto.Fácilmente podría estar en una situación como con Vista, donde MS decidió no exponer nuevas características de HW al antiguo 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, estas son algunas de las razones por las que una "aplicación profesional" (CAD, animación, visualización científica, GIS, etc.) favorecería OGL: aplicaciones como esta quieren ser estables durante muchos años, necesitan mantenimiento y mejora continuos. y quiero ejecutarlo en muchas plataformas.Esto contrasta con los juegos, que con bastante frecuencia solo están en una plataforma, se lanzarán pero generalmente no se "mantendrán" (probablemente no habrá una versión 2.0, una actualización para otro sistema operativo dentro de tres años, no es necesario admitirlo). hardware antiguo, etc.).Los juegos quieren el máximo rendimiento y solo necesitan funcionar durante un breve periodo de tiempo 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 opción correcta ya que las consecuencias negativas de D3D no los perjudicarán como lo haría con una aplicación CAD, por ejemplo.

Otros consejos

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 por otras que tengan mejores controladores OpenGL, entonces OpenGL es una elección bastante mala.En este caso, optaría por el renderizador D3D en Windows y el renderizador OpenGL en OS X/Linux (es decir, si tiene que admitir esas plataformas).

Tener dos renderizadores no es eso duro;En mi experiencia, trabajar con errores de controladores requiere mucho más tiempo que escribir y soportar las rutas del código de renderizado.

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

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

Quizás deberías probar una capa de abstracción como OGRO, que te permite cambiar entre DirectX y OpenGL sin tener que reescribir nada?También agrega mucha funcionalidad y no está orientado a juegos, sino que es bastante genérico.

Esto no responde directamente a tu pregunta (lo siento), pero yo fui uno de los que trabajaron originalmente en Direct3D y jeje:

¿Hay bibliotecas de escena para direct3d?

Direct3D (nee Reality Lab) solía ser solo una biblioteca de gráficos de escenas :-)

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

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

Para mí, hablando como programador de gráficos en una gran empresa de CAD, actualmente hay tres cosas que evitan que OpenGL se elimine en favor de Direct3D (10/11) para aplicaciones CAD/DCC existentes:

  1. Legado.La mayoría de los softwares CAD son más o menos apretados para los conceptos de OpenGL.Reescribir todo en torno a la filosofía D3D no siempre es manejable (hablar técnico y dependiendo de la capacidad/voluntad de la empresa para arrojar recursos).

    En segundo lugar, podría tener impactos negativos si algo sale mal (función de la función y/o en cuanto al rendimiento) y la compañía simplemente no correría el riesgo de retrasar una liberación importante debido a una API y un interruptor de arquitectura.

  2. Pueblos.Los pueblos en esas industrias antiguas son bastante conservadoras.Prefieren gastar dinero/tiempo en tratar con IHV sobre todos los problemas de controladores de OpenGL que podrían tener o simplemente no recomendarán usar 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 le importa que haya tenido tanta estación de trabajo de solo Quadros.El hardware sigue siendo barato con respecto a los precios de las licencias de software.

  3. Futuras tendencias.Con la generación futura 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 idiomas / API / marcos para esos futuros Hardwares (en términos de gráficos, así como no tareas gráficas).

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

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

La respuesta que todo el mundo quiere creer es SÍ, pero la verdadera respuesta es que depende.

Aproximadamente el 50% de todo el hardware que existe no ejecuta 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 de su capacidad para admitir 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 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 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 cambio, está creando una aplicación para el 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 todo el mercado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top