domingo, 25 de abril de 2010

¿Por qué debería usar OpenGL y no DirectX?

por David el 8 de Enero de 2010, 
Traducido por Jonh F Maverick el 25 de Abril de 2010

Suele suceder, cuando nos encontramos con otros desarrolladores de juegos y les menciono que uso OpenGL para nuestro juego Overgrowth, nos encontramos con una serie de miradas de incredulidad - ¿Por qué iba alguien a usar OpenGL? DirectX es el futuro. Cuando le decimos que los representantes de tarjeta de gráficos recomiendan utilizar OpenGL, la temperatura de la sala se reduce en diez grados.

Esto los desconcierta. Es común, en la sabiduría sitios web geek basados en estándares, por ejemplo, Silverlight, Flash o ActiveX. El desarrollo multiplataforma es loable e inteligente. Ningún geek que se precie, goza de usar estándares cerrados como documentos de Word o de los servidores de Exchange. ¿Qué clase de mundo bizarro es en donde los ingenieros, no sólo se vuelven locos por la más reciente de API propietaria de Microsoft, pero activamente denunciando por su competidor de estándar abierto?

Antes de sumergirse en la historia de por qué la compatibilidad con OpenGL, vamos a empezar con un poco de historia:

¿Qué es OpenGL?

En 1982, Silicon Graphics, comenzó a vender terminales gráficas de alto rendimiento utilizando una API propietaria llamada Iris GL (GL es la abreviatura de "biblioteca de gráficos"). Con los años, Iris GL siguio creciendo y fue difícil de mantenerla, hasta que Silicon Graphics, dio un paso radical con un rediseño completo de Iris GL y la convirtió en un estándar abierto. Así sus competidores podrían utilizar el nuevo Open Graphics Library (OpenGL), pero a cambio, tenían que ayudar a mantenerla y actualizarla.

Hoy en día, OpenGL es administrado por el Grupo Khronos -una organización sin fines de lucro- con representación de muchas empresas que están interesadas en mantener la alta calidad de la API. En un nivel inferior, es administrado por el OpenGL Architecture Review Board(ARB). OpenGL es compatible con todas las plataformas de juego, incluyendo Mac, Windows, Linux, PS3 (que es un envoltorio GCM), Wii, iPhone, PSP y DS.

Bueno, toda plataforma de juego, excepto para la Xbox - que nos lleva a nuestro siguiente tema:

¿Qué es DirectX?


Desde MS-DOS, Microsoft ha entendido que los juegos, tienen un papel importante en la elección de los usuarios de sistemas operativos. Por esta razón, en 1995, creó un conjunto de librerías con el fin de fomentar los juegos  para su nuevo sistema operativo Windows95 de manera exclusiva. Estas librerías incluyen Direct3D, DirectInput y DirectSound, todas estas librerías llegarían a ser conocida como DirectX.

Cuando Microsoft entró en el mercado de las consolas en 2001, se presentó el cuadro de DirectX Box, o Xbox para abreviar. La Xbox fue un líder de pérdidas (tuvieron pérdida por más de 4 mil millones de dólares), intentando posicionarse para dominar el mercado de los juegos en la próxima generación.

En cuanto a la escena de juegos actual, está claro que esta estrategia está teniendo éxito. La mayoría de los juegos de PC más importantes ahora utilizan DirectX, y funciona tanto en Windows y Xbox 360. Con pocas excepciones, no trabajan en las plataformas de la competencia, tales como la Playstation, Mac OS, y Wii. Estos son mercados importantes para dejar de lado, nos trae a la gran pregunta:

¿Por qué todo el mundo utiliza DirectX?

Todo el mundo utiliza DirectX, porque la elección de la API en el desarrollo del juego es un bucle de retroalimentación positiva, y se cambió a favor de DirectX en 2005.

Se trata de un bucle de retroalimentación positiva, porque cada vez se vuelve más popular la API, se mantiene cada vez más popular debido a los efectos de red. Los efectos de red más importantes son los siguientes: la API más popular consigue un mejor apoyo a los vendedores de tarjetas gráficas, los gráficos y los programadores tienen más probabilidades ya que saben cómo usarlo.

El Uso de la API se desplazó a favor de DirectX por la campaña  de Microsoft y las dos vertientes en torno al lanzamiento de Xbox 360 y Windows Vista, incluida la propagación de FUD (FEAR, UNCERTAINTY, DOUBT= miedo, incertitumbre y duda) sobre el futuro de OpenGL, y la exageración desmesurada de los méritos de DirectX. Desde entonces, los efectos de red se han ampliado esta discrepancia hasta OpenGL casi ha desaparecido por completo de los juegos de PC convencionales.

1. Los efectos de red y ciclos viciosos


En Windows, es un hecho que los controladores gráficos de DirectX se mantienen mejor que los controladores de gráficos OpenGL. Esto es causado por el círculo vicioso de soporte del proveedor. Como creadores del juego son expulsados de OpenGL a DirectX por otros factores, los fabricantes de tarjetas de gráficos (vendedores) recibe menos de fallos en los informes de sus controladores, extensiones y documentación de  OpenGL. Esto se traduce en controladores más inestable, por lo que los desarrolladores de juegos se cambian de OpenGL a DirectX, repitiéndose el ciclo.

Del mismo modo, es un hecho que los programadores de juego de gráficos saben cómo utilizar más DirectX que OpenGL, por lo que es más barato (ya que se necesita menos formación) para hacer un juego que utiliza DirectX que OpenGL. Este es el resultado de otro círculo vicioso: como hay más proyectos para juego que utiliza DirectX, más los programadores tienen que aprender a usarlo. A medida que más programadores a aprender a usarlo, se vuelve más barato para los proyectos de juego utilizar DirectX que utilizar OpenGL.

2. FUD sobre OpenGL y Vista


Microsoft inicio una campaña de miedo, incertidumbre y duda (FUD por sus siglas en ingles), contra el OpenGL durante el lanzamiento de Windows Vista. 


En 2003, Microsoft abandonó el OpenGL Architecture Review Board -lo que demuestran que ya no tenía ningún interés en el futuro de OpenGL. 


Luego, en 2005, se realizaron presentaciones en SIGGRAPH (grupo de interés especial para los gráficos) y WinHEC (Windows Hardware Engineering Conference), dando la impresión de que Windows Vista eliminaría el soporte para OpenGL, exceptuando para mantener la compatibilidad con aplicaciones de Windows XP. 


Esta versión de OpenGL sería capas en la parte superior de DirectX, como se muestra aquí, (desde la presentación de WinHEC), causando una actuación dramática exitosa. Esta campaña se llevó a pánico en la comunidad de OpenGL, llevando a muchos programadores profesionales gráficos a cambiarse a DirectX.

Cuando se lanzó Vista, se dio marcha atrás en sus pretensiones con OpenGL, permitiendo a los vendedores para crear los controladores de cliente rápidamente instalables para restaurar el soporte OpenGL nativo. El Consejo de OpenGL, envio boletines demostrando que OpenGL es todavía un ciudadano de primera clase, y que el rendimiento de OpenGL en Vista todavía, al menos, es tan rápido como Direct3D. Desafortunadamente para OpenGL, el daño ya estaba hecho - la confianza del público en OpenGL era sentido.

3. Engañosas campañas de marketing


Las estrategias de lanzamiento de Windows Vista y Windows 7 fueron acompañadas de un impulso de marketing inmensa por parte de Microsoft DirectX, en la que se mostró un "antes" y "después" de capturas de pantalla de las versiones de DirectX diferentes. 


Muchos jugadores piensan ahora que el cambio de DirectX 9 y DirectX 10, por arte de magia transforma los gráficos de estúpidamente oscuro a lo normal (como en la comparación arriba), o de Halo 1 a Crysis. Un grupo de periodistas demostró que no había ninguna diferencia entre Crysis DX9 yDX10, y que su características "DX10" trabajando muy bien con DX9 con solo ajustar un archivo de configuración. Sin embargo, a pesar de sus inexactitudes evidentes, la comercialización ha convencido a muchos jugadores que se actualiza DirectX son la única forma de acceder a las últimas características de gráficos.

Mientras que muchos juegos participar en farsa de marketing de Microsoft, muchos programadores gráficos inteligentes como John Carmack se niegan a ser arrastrado por él. Se puso de esta manera: "Personalmente, no hare el salto a algo como DX10 ahora. Dejare que las cosas se asienten un poco y espere hasta que haya una necesidad muy fuerte para ello".

Entonces, ¿por qué usar OpenGL?

Teniendo en cuenta que OpenGL tiene menos apoyo de proveedores, ya no se utiliza en los juegos, está siendo constantemente atacados por Microsoft, y no tiene el impulso de marketing, ¿por qué todavía se utiliza? ¿No sería más rentable el uso de DirectX, como todos los demás? No, porque en realidad, OpenGL es más poderoso que DirectX, compatible con más plataformas, y es esencial para el futuro de los juegos.

1. OpenGL es más poderoso que DirectX


Es de conocimiento común que OpenGL dibujar más rápido DirectX (ver presentaciones como esta de NVIDIA si no quieren tomar mi palabra), y tiene acceso primero a las nuevas características de las GPUs a través de extensiones del proveedor. OpenGL le da acceso directo a todas las nuevas características de gráficos en todas las plataformas, mientras que DirectX sólo proporciona capturas de pantalla de vez en cuando en su versión más reciente de Windows. La tecnología Tesselation que Microsoft está promoviendo intensamente para DirectX 11 ha sido una extensión OpenGL por tres años. Incluso ha sido posible durante años antes de que, mediante la creación de instancias rápido y vértice-textura-fetch. Yo no sé qué nuevas tecnologías se expondrán en el próximo par de años, sé que estará disponible primero en OpenGL.

Microsoft ha trabajado duro en DirectX 10 y 11, y que ahora están casi tan rápido como OpenGL, y el apoyo casi tantas características. Sin embargo, hay un gran problema: no funciona en Windows XP! La mitad de los jugadores de PC todavía usanXP, así que usar DirectX 10 o 11 no es realmente una opción viable. Si realmente se preocupan por tener los mejores gráficos posibles, y entregarlos a medida que los jugadores como sea posible, no hay más remedio que OpenGL.

2. OpenGL es multiplataforma


Más de la mitad de los de Lugaru usan Mac o Linux (como se muestra en esta entrada del blog), y no me sorprendería si el mismo será el caso de nuestro nuevo juego de Overgrowth. Cuando hablamos con los desarrolladores de juegos más importantes, se nos dice que el apoyo a Mac y Linux es una pérdida de tiempo. Sin embargo, nunca he visto ninguna prueba de esta afirmación. Blizzard siempre libera versiones para Mac de sus juegos de forma simultánea, y son una de las compañías de juegos de más éxito en el mundo! Si están haciendo algo de una manera diferente de los demás, entonces probablemente sea el camino correcta.

Como John Carmack, dijo cuando se le preguntó si la Rage fue un juego de DirectX, "Todavía es OpenGL, aunque obviamente utilizar una API de D3D-ish [en Xbox 360], y el CG en la PS3. Es interesante lo poco que le importa lo que la tecnología de la API que está usando y lo que la generación de la tecnología que te encuentres. Tienes un pequeño número de archivos que se preocupan por lo que están en la API, y millones de líneas de código que son agnósticos a la plataforma que estan alli". Si usted puede usarlo en cada plataforma usando OpenGL, ¿por qué disparar en el pie, apoyándose en DirectX?

Incluso si lo único que importa es el de Windows, me permito recordarles de nuevo que la mitad de los usuarios de Windows todavía utiliza WindowsXP, y no podrá jugar su juego si utiliza las últimas versiones de DirectX. La única manera de ofrecer lo último en gráficas a los jugadores de Windows XP (la única plataforma de juegos más grande de escritorio) es a través de OpenGL.

3. OpenGL es mejor para el futuro de los juegos


OpenGL es una organización sin fines de lucro estándar abierto creado para permitir a los usuarios en cualquier plataforma para experimentar la más alta calidad de su hardware de gráficos que puede proporcionar. Su uso está siendo aplastado por un ataque de monopolio de un gigante corporativo monolítico tratando de dominar una industria que es demasiado joven para protegerse a sí misma. Como Direct3D se convierte en el juego de API gráficos solo compatible con Windows, Microsoft está adquiriendo un dominio absoluto sobre los juegos de PC.

Necesitamos la competencia y la libertad para bajar los precios y elevar la calidad. Un monopolio de Microsoft en juegos de azar sería muy malo para los jugadores y los desarrolladores de juegos.

¿OpenGL pueden recuperar?

En 1997, la situación era similar a como es ahora. Microsoft se ejecuta una campaña de marketing masivo para Direct3D, y pronto todo el mundo "sabía" que era más rápido y mejor que OpenGL. Esto comenzó a cambiar cuando Chris Hecker publicó su carta abierta denunciando a DirectX. Poco después, John Carmack posteo su famoso descarga OpenGl, y puso su dinero donde está su boca por la aplicación de todos los juegos de Id Software en OpenGL, demostrando una vez por todas que DirectX no era necesaria para los juegos 3D de alta definición.

Esta lección parece haber sido olvidado durante los últimos años. La mayoría de los desarrolladores del juego han caído bajo el hechizo de la comercialización de DirectX, o en el remolino de los círculos viciosos y las ventajas de la red. Es hora de quitarse el velo de los anuncios y palabras de moda, y ver lo que está sucediendo realmente. Si utiliza DirectX, usted tiene que elegir entre usar a los débiles, hinchado con DirectX 9 o sacrificar la mayor parte de su base de usuarios que utilizan DirectX 10 o 11.

Por otra parte, si utiliza OpenGL, se obtiene más rápidez y potencia que con los que cuenta los gráficos de DirectX 11, y conseguirlo que en todas las versiones de Windows, Mac y Linux, así como la PS3, Wii, PSP, DS, y el iPhone. Usted también obtiene estas características con el estándar WebGL de rápido desarrollo, que podrían ser la base para la próxima generación de juegos de navegadores.

Si eres un desarrollador de juegos, todo lo que pido es hacer la investigación y comparar las cifras, y decidir si OpenGL es una mejor opción. Algunos programadores prefieren el estilo de la API DirectX 11 a OpenGL, pero va a ser envasado bajo estas API de nivel inferior en una capa de abstracción de todos modos, de modo que no debería ser un factor decisivo. Si hay algo acerca de OpenGL que no te gusta, entonces simplemente hacer que el ARB para cambiarlo - que existen para servirle a usted!

Si eres un jugador que usa Windows XP, Mac o Linux, espero que usted puede ver que DirectX solo existe para mantener a los nuevos juegos llegando a su plataforma, y la única manera de luchar es apoyando los juegos que utilizan OpenGL.


Bibliografía
Why You should use OpenGL and not DirectX
http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX