Bueno,ya que estamos hablando de Direct3D y OpenGL diré que prefiero que se use OpenGL porque es más fácil programar,al contrario que con Direct3D,que es más avanzado y más complicado a la hora de programar,creo que tanto PS3 como Xbox 360 usaban una de estas dos.
¿Alguién puede aclararme cuál usaba cada una?
Saludos.
Xbox 360 usa una version mejorada de DirectX 9 con carateristicas de la 10.
PS3 usa OpenGL, no recuerdo si una especificacion concrecta como OpenGL ES o algo asi.
Con las dos se puede hacer lo mismo. Solo hay algunas diferencias a nivel de desarrollo:
La API de DirectX es orientada a objetos. La interfaz esta pensada para C++, si bien hay librerias que encapsulan las funciones para poder usarlo desde casi cualquier lenguaje. No es multiplataforma, osea que para funcionar en otros sitemas que no sean PC/XBOX hay que reescribir codigo.
La API de OpenGL esta basada en C, aunque igual que DirectX hay librerias que la encapsulan para poder trabajar. Es multiplataforma, por lo que es portable a casi cualquier sistema que disponga de soporte OpenGL.
En PC por regla general, hasta hace un tiempo, las tarjetas de Nvidia tenian un rendimiento ligeramente superior a las de ATI al trabajar con OpenGL, sobre todo por los drivers. Ahora no se como esta el tema. Las ATI casi siempre han ido mejor con DX.
De todos modos, cuando se usa un engine como Unreal Engine por nombrar uno, estos estan preparados para funcionar en ambos modos. Con esto quiero decir que lo desarrolladores usan las funciones que ofrece el engine, y este por debajo utiliza el modo de render seleccionado, DX u OGL. Lo mas habitual es que solo se trabaje con la API directamente para cosas muy concretas o para extender las funciones del engine.
Y sobre la dificultad de programacion, las primeras versiones de DX eran nefastas, la API muy confusa y tal. Pero con el tiempo ha evolucionado y ahora es mucho mas comoda. De hecho John Carmack, el de DOOM ha reconocido esto y ha comentado que se ha vuelto una API comoda de usar.
La API de OpenGL realmente no ha evolucionado mucho, ya que la idea es diferente. DirectX integra en su API las nuevas funciones que ofrecen las tarjetas graficas, añadiendo funciones y clases. Con cada nueva version incluyen soporte a las nuevas caracteristicas.
OpenGL por su parte, realmente es una especificacion, y ofrece una API mas basica que no ha evolucionado mucho desde hace tiempo, pero que permite usar esas caracteristicas de las tarjetas mediante un mecanismo que se llama "Extensiones". Tu registras la caracteristica de la tarjeta que quieres usar y si esta disponible la usas. Pero no viene de serie en la API. Esque no se como explicarlo jeje. Es la razon de que no haya que instalar OpenGL version tal. El driver de la tarjeta incluye el soporte basico, y el programa que lo use accede al resto de funciones mas avanzadas.
Relamente a efectos practicos, los resultados que puedes obtener con cada una son iguales, y cada una tiene sus ventajas o desventajas, aunque son algo subjetivo, y yo personalmente no considero que una sea mejor que la otra.
Yo personalmente empece con OpenGL pero mas que nada porque estaba muy verde en C++ y se me daba mejor el C a pelo, ademas de que me parecio mas simple de usar de entrada.
salu2