miércoles, 14 de julio de 2010

Porque Direct3D > OpenGL? otras 10 razones

0 comentarios
 
Ya que estamos en la polemica... hay que hacer lo opuesto tambien!

1) Direct3D viene con Windows,

OpenGL viene con el driver. A las versiones de los drivers de OpenGL que vienen con windows, se les saca el soporte de OpenGL a proposito.
En la practica esto no afecta tanto, ya que en USA, Europa, etc casi todas las PCs son de marca, y los OEM les instalan los ultimos drivers
disponibles. Pero en el "tercer mundo" no es tan asi..

2) OpenGL 2.0 No esta disponible en Intel GMA.

Intel no provee soporte de OpenGL 2.0 en sus drivers de Windows (pero si soporte de Directx9c). Solo llega hasta GL 1.4.
En Mac, intel SI provee soporte de GL2, y el driver semioficial/opensource de X11 (Linux) tambien lo soporta, asi que el hardware no es el problema. Probablemente una decision politica de parte de Intel, o algun arreglo con Microsoft. Esto es un problema importante, dado que todas las notebooks y PCs OEM que vienen con procesadores Intel, vienen con GMA.

3) OpenGL >1.1 no viene con Visual Studio.

Microsoft no provee practicamente soporte para OpenGL, todo en windows se hace con extensiones. Por suerte existe GLEW, pero no se actualiza tan seguido. DirectX viene con el DXSDK.

4) Direct3D implementa los nuevos features primero.

El orden usualmente es
a) Direct3D saca una nueva especificacion
b) NVidia/ATI implementan hardware
c) OpenGL hace su version

Aunque en esta ultima iteracion, OpenGL 4 se adelanto a nvidia, pero nunca se sabe..

5) Direct3D define muy bien lo que soporta el hardware

En teoria OpenGL tambien, mediante extensiones, pero en la practica, Nvidia implementa muchos mas fetures en OpenGL
de lo que la placa soporta, y los emula por software, lo que lo hace inusable, y bastante complicado de adivinar que feature
no usar en que placa, para evitar que todo vaya a 1fps.

6) Direct3D compila los shaders siempre igual.

Si el shader compila en Nvidia, va a compilar en ATI. En OpenGL se supone que es lo mismo, pero ATi se queja de mas cosas que Nvidia, lo cual hace bastante dificil escribir shaders que compilen en todas las plataformas.

7) Direct3D9 soporta instancing, OpenGL no.

El hardware SM3 en Direct3D9 soporta instancing, en OpenGL no. Si bien multiples llamadas a glDrawElements/Arrays son baratas en OpenGL, se empieza a volver costoso pasando los miles de elementos, (ej: al dibujar pasto).

8) Direct3D9 viene con muchisimos ejemplos oficiales.

La calidad de la documentacion de D3D y GL es bastante debatible, pero lo cierto es que D3D esta lleno de ejempos que vienen con el SDK, y con licencias permisivas. Si bien en GL hay bastante, encontrar en internet es mas complicado. En D3D es mas comodo y se pierde menos tiempo. En general la mayoria de los papers de game developes son en D3D, y la mayoria de los papers cientificos son en GL.

9) Direct3D viene con mas herramientas para debugear Direct3D

PIX, mejor soporte de FX composer, D3DDebug, etc.

10) Direct3D Impulsa a la industria

Gracias a que Microsoft impulsa a la industria con D3D e impone el ritmo,
sigue saliendo nuevo hardware e Intel/ATI/NVidia se ponen de acuerdo.
Cuando OpenGL era el estandar, cada placa tenia sus propias extensiones
que no estaban soportadas en las demas, haciendo programar juegos mas complejo.
(Ej, ATI truform, Nvidia con Combine4, etc).

Fuente: http://www.adva.com.ar/foro/index.php?topic=7006.0

Deja tu comentario