2008-09-24 7 views
23

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

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

(Por supuesto Direct3D es sólo para Windows.)

+2

Esto es loco-subjetivo. Las palabras y frases como "lo mejor" y "elección natural" no ayudan. Tener su pregunta compuesta de preguntas múltiples, todas subjetivas (¿el año del escritorio de Linux?) Tampoco ayuda. Considere reformular la pregunta para que sea más específica. – SCdF

+1

ok, lo intentaré, ps. El escritorio de Linux era una broma. –

+0

¡El enlace del artículo de Tim Sweeney fue genial! http://arstechnica.com/articles/paedia/gpu-sweeney-interview.ars – bobobobo

Respuesta

35

D3D hace pagar el Microsoft " impuesto a la estrategia ". 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 usted:

  1. Una aplicación D3D solo se ejecutará en Windows (incluida 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 al D3D a la exposición rápida de las nuevas funciones 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 razones por las que una "aplicación profesional" (CAD, animación, visualización científica, SIG, etc.) favorecería OGL - aplicaciones como esta quieren ser estable durante muchos años , necesita mantenimiento y mejora continua, y desea ejecutar 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.

+6

En realidad, OpenGL no es tan multiplataforma como las personas tienden a creer. PS3 (o cualquier otra consola actual)? No. ¿Futuras consolas? Probablemente no. Teléfonos/dispositivos de mano? En realidad, no (OpenGL ES está allí). Eso deja "plataformas similares a PC" solamente. – NeARAZ

+0

Pensé que D3D solo funcionaría en plataformas Windows? –

+11

De hecho, un artículo [http://is.gd/nbHm] dice: "El software API de gráficos por ordenador en 3D utilizado en la Playstation 3 es LibGCM y PSGL, basado en OpenGL ES" Creo que la nueva plataforma Android usa OpenGL ES también, entonces ¿hay algo seguro que D3D sea menos portátil? –

3

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.

+0

O, lo que es igualmente importante, si finalmente decide apuntar a Unix y Mac, debe elegir OpenGL para minimizar las conversiones necesarias para admitirlos. – Guvante

+0

@Guvante: Lo siento pero no. Minimizar las conversiones no es el objetivo en este negocio. Se trata de la confiabilidad de los controladores de gráficos/tiempo que gasta en resolver sus problemas. – Stringer

20

Como siempre, esto depende de su 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 procesadores no es que difícil; en mi experiencia, trabajar con los errores del controlador toma mucho más tiempo que escribir y soportar las rutas del código de renderizado.

Por supuesto, hay algunas situaciones (específicas) donde D3D simplemente no tiene las características necesarias, p. salida genlocked con buffer cuádruple; o soporte de shader de geometría en Windows XP.

En resumen: si quiere mejores controladores en Windows, use 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.

+1

¿Cómo califica la calidad del conductor? ¿Algún ejemplo? –

+3

@Jon: Un punto de datos: haga que millones de personas utilicen su producto. Compare el número de envíos bloqueados que se bloquean en los archivos DLL del controlador cuando se utiliza GL vs D3D. Otro punto de datos: escribir soluciones para las características conocidas de los controladores rotos. Compare el número de soluciones temporales necesarias en GL vs. D3D. – NeARAZ

+3

@Jon: D3D tiene un dispositivo de referencia, GL no tiene. El dispositivo de referencia le permite verificar si hay problemas en la aplicación o en el lado IHV. Este es un gran beneficio ya que puede detectar problemas anteriormente en el proceso. – Stringer

2

No es una respuesta como tal, pero es interesante tener en cuenta que las últimas versiones de AutoCAD le permiten elegir entre utilizar 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 this Whitepaper from AutoDesk para obtener más información.

+6

Artículo interesante, especialmente cuando afirma que las tarjetas compatibles con OpenGL comienzan en $ 500. Sospecho que fue escrito por un departamento de anuncios en Redmond. –

+1

Probablemente signifiquen tarjetas OGL "certificadas para estaciones de trabajo", ya que tienden a ser mucho más caras. – Donnie

14

¿Quizás debería probar una capa de abstracción como OGRE, que le permite cambiar entre DirectX y OpenGL sin tener que volver a escribir nada? También agrega mucha funcionalidad, y no está orientado a juegos, pero es bastante genérico.

4

Esto no responde directamente a su pregunta (lo siento), pero fue uno de los tipos originales que trabajan en Direct3D y jeje:

¿Hay scenegraph bibliotecas para Direct3D?

Direct3D (en el siglo Reality Lab) solía ser sólo una biblioteca scenegraph :-)

vergüenza que Direct3D retenidas modo no se envía nunca más ...

+0

Nunca podría entender por qué se retiró el modo retenido. Parecía algo tan bueno. – Guge

1

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, lea las preguntas frecuentes de Google Sketchup que usa 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. (Hardware ans software requirements for Google Sketchup

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

Si en lugar de 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 quiere llegar a todo el mercado.

+1

Sí, he tenido problemas con las tarjetas ATi y recomendamos Nvidia a los clientes siempre que sea posible. Los chipsets de video integrados de Intel están mejorando, carecen de rendimiento pero no tienen errores de controlador tan terribles. Desafortunadamente, no se trata simplemente de escribir ambos renderizadores de salida, sino de las arquitecturas de los paisajes de todo el gráfico que han crecido alrededor de OpenGL. Por el lado bueno, iPhone/teléfonos inteligentes han sido un gran impulso para OpenGL, si puede vivir con los límites de OpenGL-ES. –

3

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 aplicaciones CAD/DCC existentes:

  1. Legado. La mayoría de los softwares CAD son más o menos ajustados a los conceptos OpenGL de .Reescribiendo todo alrededor de la filosofía D3D no siempre es manejable (técnicamente hablando y dependiendo de la capacidad/voluntad de la compañía de arrojar recursos).

    En segundo lugar, podría tener impactos negativos si algo va mal (hablando Funcionalidad y/o se refiere a rendimiento) y la empresa simplemente no tomarían el riesgo de retrasar un lanzamiento importante a causa de un interruptor de activos y de la arquitectura.

  2. Peoples. Los pueblos en esas industrias de chicos mayores son bastante conservadores. Prefieren gastar dinero/tiempo en tratar con IHV con respecto a todos los problemas del controlador 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/aeroespaciales automoción como Boeing, Airbus, TMC, BMW, etc no se preocupan mucho de tener Quadros única estación de trabajo. El hardware todavía es barato con respecto a los precios de licencia del software .

  3. Tendencias futuras. Con el futuro generación de procesadores como Llano, Larrabee, Fermi y productos que seguirán , sin duda vale la invertir R & presupuestos D sobre cómo programa y desarrollar nuevos Lenguaje/API/marcos para los futuros hardwares (en término de los gráficos , así como tareas que no son gráficas).

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

+0

Eso fue más o menos lo que pensé, el decisor fue scenegraphs para OpenGL - no hay mucho disponible para DX –

Cuestiones relacionadas