12 de agosto de 2008

¿OpenGL en peligro?

Que conste que no tengo ni idea de temas graficos. Ademas, un servidor tiene la impresion que hace ya tiempo que DirectX tiene ganada la batalla contra OpenGL. Sin embargo hoy, tras publicarse las especificaciones de OpenGL 3.0, muchas, muchisimas voces parecen compartir esa misma opinion. Y no se refieren solamente a una batalla por conseguir que tal API sea mas usada que otra: Se refieren mas bien al aspecto puramente tecnico.

Al parecer, la opinion general es que las versiones actuales de OpenGL estan bastante desfasadas respecto al funcionamiento del hardware grafico moderno, DirectX esta mucho mejor diseñado para aprovechar ese hardware, y OpenGL 3.0 era la version que se habia prometido que solucionaria ese atraso, y que hasta cierto punto era necesaria para evitar un declive de OpenGL. Tras un año de silencio, la version 3.0 publicada no es la version que iba a rediseñar OpenGL para adecuarlo al hardware moderno. La empresa encargada de hacer OpenGL 3.0 ha elegido la opcion de continuar con el OpenGL antiguo, incapaz de competir contra DirectX, obvia y desgraciadamente impulsados por esa maldicion de no romper la compatibilidad con los programas existentes (particularmente, al parecer, programas de CAD) y los miles de millones que generan. Es una decision desgraciadamente comun en el mundo del software: comprometer la sostenibilidad futura a cambio de vivir temporalmente de las rentas del pasado.

En los foros de discusion se puede encontrar algun sujeto (raro) que defiende OpenGL 3.0 por este tema, el de la compatibilidad. Pero nadie defiende que OpenGL no esta desfasada respecto a DirectX. Nadie. En ese punto, la opinion es unanime. No es que vaya a desaparecer OpenGL, pero si que parece que los desarrolladores de juegos para Windows van a pasar bastante de ella.

20 comentarios:

  1. Direct3D NO es multiplataforma, mientras que OpenGL si lo es. Direct3D está orientado a juegos y tiene más cosas aparte de la gestión de gráficos, mientras que openGL es especifico de gráficos y de propósito general desde su concepción... Por no hablar de la multiplataformidad, el soporte multilenguaje, el hecho de que sea un estándar...

    Evidentemente es una pena que no hayan incluido la larga serie de mejoras que se preveía en la version 3.0, pero creo que también hay que comprender que hace poco sacaron la versión 2.1 y todavía no está muy extendida por lo que parece. Para mi lo lógico sería hacer revisiones que añadieran cambios de forma gradual al actual API y no hacer un cambio radical de golpe, que podría suponer mas problemas que beneficios.

    La otra solución seria sacar dos estándares a la vez durante un periodo de transición: un opengl 3.0 y un opengl 4.0 que tuviera todas las novedades radicales para ayudar a su implantación en la industria. El problema viene por parte del hardware, que no creo que estuvieran muy a favor de implementar compatibilidad con los dos estándares a la vez.

    ResponderEliminar
  2. El problema es que por muy estándar que sea, si papá Carmack (o quien sea el dios de los videojuegos en estos momentos) no hace los motores para OpenGL, esta carece de un inmenso apoyo.

    ResponderEliminar
  3. Anónimo8:07 p. m.

    $ apt-get install directx
    E: No se pudo encontrar el paquete directx

    Lo siento, para mí Direct3D no es que sea mejor o peor, es que ni siquiera existe.

    ResponderEliminar
  4. Que es OpenGL?

    quien puede ocupar eso si Direct3D cumple todas mis nesecidades.

    ResponderEliminar
  5. Las dos ultimas entradas de comentarios dicen mas que todo lo anterior

    Por mi parte... estoy deacuerdo con la 1º de ellas

    ResponderEliminar
  6. Realmente no es que DirectX9 y 10 aproveche mejor el hardware grafico.

    Es que las ultimas generaciones de hardware grafico (almenos el orientado a juegos) esta _basado_ en especificaiones microsoft para DirectX.

    Solo hay que darse cuenta de que ati fabrico el R600 para Xbox360, cuyos jeugos se programan en su mayoria en c# con un compilador especial para juegos.

    ResponderEliminar
  7. Anónimo9:10 p. m.

    El problema es bastante mas serio de lo que parece. Desarrolladores como este humilde servidor, que trabaja exclusivamente con DirectX, estabamos esperando fervientemente OpenGl 3 para empezar a desarrollar aplicaciones para linux y Mac, pero con lo que han sacado, muchos desarrolladores, entre los que me incluyo, vamos a seguir desarrollando en exclusiva para windows.

    Al contrario de lo que estoy leyendo en varios foros españoles, el hecho de que OpenGl3 haya salido "rana" supone una grandisima perdida para linux y apple, simplemente por la cantidad de proyectos que podrian haber sido multiplataforma, y ahora seran exclusivos de windows.

    Tambien he leido los tipicos comentarios de que si directx o opengl son esto o aquello... aqui y ahora os digo, que hasta que no hagan los cambios que tienen que hacer, yo no lo pienso usar para mis desarrollos... y si lo dice un desarrollador, por algo sera... ;)

    ResponderEliminar
  8. Anónimo9:18 p. m.

    Esta claro que DirectX tiene ganada la batalla a OpenGl en windows, lo raro sería lo contrario.
    Pero y si por ejemplo se populariza muchísimo Mac OS X y Linux y tienen mucha couta de mercado, ¿entonces portaran DirctX a esos sistemas operativos o ganará entonces la batalla OpenGl?.
    Y si se populariza muchísimo mas la PlayStation y la Wii y la Xbox se queda con poca cuota ¿también ganara la batalla DirectX?
    ¿Y se popularizan mucho mas los teléfonos que lleven OpenGl como los de Apple (iphone) o los de Nokia (Symbian) que los que lleven dirctX con Windows movile?

    ResponderEliminar
  9. anonimo #1: Yo tampoco puedo instalar directx en mi ubuntu. ¿Sabes en que me convierte eso, de momento? En un usuario encadenado a un subsistema grafico inferior. Quizas a ti eso te parezca una tonteria muy graciosa que resuelves con un "es que yo no puedo instalar directx", pero eso no hace que tu opengl deje de ser peor que el directx de un "vendido" a windows

    rrey: Desgraciadamente el problema es que el tiempo idoneo para sacar un opengl 4.0 revolucionario era hace uno o dos años. Teoricamente el problema se iba a resolver ahora, y no se ha resuelto. Lo cual deja a un hipotetico opengl 4.0 para...¿cuando? Anonimo #2 lo dice bien claro, a la larga la declinacion de opengl supone un osbtaculo para portar juegos a otras plataformas no-windows, obstaculo que podria haberse convertido en ventaja si opengl 3.0 hubiera sido lo que se prometia.


    k^s: ¿Y que las graficas actuales esten diseñadas para directx (que lo dudo, y mucho) es una excusa para que existan versiones de opengl que tambien aprovechen ese hardware? El hardware es Dios: si opengl no se adapta al hardware, la gente acabara por no usar opengl porque no sirve para crear aplicaciones que funcionen en los ordenadores reales que se venden. Asi de sencillo.

    ResponderEliminar
  10. Anónimo9:32 p. m.

    del mismo desarrollador de antes:

    Otra leyenda urbana: la XBox utiliza DirectX.

    Pero la Wii y la playstation 3 NO utilizan OpenGl... estas dos consolas vienen con su propio interfaz nativo que tiene poco o nada que ver con OpenGl.

    Si es cierto que tambien tienen opengl, pero nadie lo usa porque es mucho mas rapido usar el interfaz nativo... si acaso para hacer alguna prueba, pero para lo que es juegos terminados? no, ni locos.

    El problema no es que si tal sistema es mas popular o no. En todos los foros se valora si DirectX y OpenGl son mas rapidos, mas mejores, tienen mas share de mercado, si son multiplataforma.

    Pero una cosa que nunca se valora, y que es donde realmente ha fallado OpenGl 3, es la comodidad de uso para los desarrolladores. A ver como lo digo sin ofender a nadie... hacer un programa con openGl, a dia de hoy, y que intente aprovechar el hardware de ultima generacion, DA ASCO. Y todo lo demas son milongas.

    ResponderEliminar
  11. Anónimo9:36 a. m.

    Al desarrollador anónimo:

    La API de OpenGL te parece peor porque estás acostumbrado a la de DirectX. Es como el que dice que GIMP es un mal programa porque se hacen las cosas distintas a como se realizan en Phosothop.

    Si de verdad eres un buen desarrollador, la API te da igual siempre que funcione y sea coherente. La API de OpenGL NO es difícil, ni incoherente. Simplemente hacen falta un par de líneas de código más para algunas cosas. Nada que no se pueda solventar si tienes clases adaptadoras (patrón wrapper).

    Yo creo que OpenGL y Direct3D tienen objetivos diferentes y que OpenGL está perdiendo terreno en Windows. Es obvio, pero eso no significa que OpenGL vaya a desaparecer ni nada similar. No veo a los creadores de AutoCAD usando Direct3D.

    Tal vez algún día M$ libere las DirectX para crear un estándar (no el que ya tiene de facto) o las porte para MacOSX. Aunque eso no parece lo más posible, la cuota de mercado de Mac y GNU/Linux va creciendo (gracias, Vista) y dado que M$ gana dinero con las DirectX, es posible que llegue el día en que les convenga sacar dinero de ahí también.

    ResponderEliminar
  12. Anónimo9:27 p. m.

    "Si de verdad eres un buen desarrollador, la API te da igual siempre que funcione y sea coherente."

    Como ? Claaaro, si realmente eres buen desarrollador, te da igual el API que uses, y el lenguaje, y las capacidades de tu plataforma... y todo, no ?

    Venga hombre, seas bueno o seas malo, si tienes un API (para lo que sea) que te proporciona potencia y además es sencillo de usar, pues es mejor que uno que sea más complejo de usar, entre otras cosas porque el tiempo que dedicas a crear tus wrappers, lo puedes dedicar a desarrollar la aplicación, que es lo que importa...

    ResponderEliminar
  13. Anónimo12:12 a. m.

    Primero tendria que haber un soporte decente en linux para OpenGL el unico que hace mas o menos bien el trabajo es NVIDIA, las demas empresas no ofrecen una aceleracion por HW total.

    ResponderEliminar
  14. ""Si de verdad eres un buen desarrollador, la API te da igual siempre que funcione y sea coherente."

    Como ? Claaaro, si realmente eres buen desarrollador, te da igual el API que uses, y el lenguaje, y las capacidades de tu plataforma... y todo, no ?"

    Pues si, si solo desarrollas en una plataforma eres desarrollador de esa plataforma no desarrollador en general. La diferencia? mucha, mientras tu solo sabes manejarte con direct3D un desarrollador de verdad sabe manejarse con lo que le echen ;)

    ResponderEliminar
  15. Anónimo12:12 p. m.

    desarrollador anonimo de nuevo:

    Si eres un buen desarrollador, sabras que el tiempo es ORO, y mucho mas si tienes un jefe detras pidiendote que termines para ayer.

    A tu jefe no le van a importar las maravillosas caracteristicas de OpenGl o DirectX, solo le importan los beneficios, y a fecha de hoy, seas buen o mal programador, puedes tener un motor 3D funcionando con DirectX en la mitad de tiempo que habiendolo hecho con OpenGl.

    Solo una muestra: probad a hacer un motor3D capaz de renderizar sombras, en DirectX, y luego en OpenGl, y luego me decis.

    Y en el plano tecnico: Si, he desarrollado tanto para DirectX como para OpenGl. Y puedo decir con conocimiento de causa que, para hacer cosas complejas (shaders, texturas en formatos no estandar, etc), OpenGl no es un poco, sino muchisimo mas dificil de usar que DirectX, por una razon: porque te pasas la mitad del tiempo peleandote con las extensiones de cada fabricante, y por todo el tiempo perdido debugeando, principalmente, por engaños provocados por los drivers (informar de una extension q no existe, o no funciona como toca, o no se ajusta al estandar).

    A los openGl fanboys les dire que, me duele en el corazon que OpenGl se este hundiendo como lo esta haciendo, porque yo soy el primer interesado en que exista una plataforma de desarrollo independiente y universal... pero eso no quita que haya que admitir la realidad tal como es... y la realidad es que la han cagado soberanamente.

    ResponderEliminar
  16. Directx no es ni siquiera un decimo de lo que es OpenGL, y claro yo discrepo con los comentarios alrespecto de que es mucho más facil programar en directx que en OpenGL, pues a base de experiencia Directx y su API grafuca es un asco (tal cual) pues al igual que el sistema en el que se ejecuta (window$) son rutinas meramente amontonadas y desquiciadamente torpes...
    Al contrario de OpenGL que es mucho más flexible y potente y claro multiplataforma, a tal grado que se a podido instalar en plataformas independientes (poir decirlo de algun modo)....
    OpenGL tal vez este a la venta pero es claro que OpenGL no desaparecera (al menos eso espero...)
    Son validos todos los puntos pero claramente es obvio que tal libreria es una de las más potentes que existen para el desarrollo de (a falta de una palabra mejor)excelenetes graficos....

    ResponderEliminar
  17. Anónimo1:12 a. m.

    Soy desarrollador de VC++ y he probado tanto OpenGL como DirectX.

    Posiblemente DirectX tenga soporte a todas las características de las últimas tarjetas de los fabricantes agradecidos a Microsoft. Pero programar con DirectX es querer morirse: rellenar centenares de estructuras, punteros, exponerse a bloqueos, tratar con el hardware a bajo nivel, triangulación, cosas que te desvían del objetivo principal: la aplicación.

    OpenGL puede estar desfasado, pero está implementado en casi todas las plataformas con 3D, trabajas con objetos gráficos y operaciones sin preocuparte de cómo lo implemente el hardware. Es una librería de alto nivel.

    Lo mismo ahora directx es mucho más fácil, y obviamente NADIE programa en directx a pelo. El software profesional usa librerías de alto nivel (lo que le falta a directx).

    Microsoft puede comprar al mundo entero, pero no sabe hacer librerías. Ahí tienes el API de Windows (arcaica), la MFC (incompleta) o ATL (abandonada).

    ResponderEliminar
  18. Anónimo5:00 a. m.

    Yo no he programado mas alla de lo que hago por hobbie.. pero a pesar de que siempre te anunciaban con bombos y platillos la nueva version de DX con sus mejoras "inigualables" (lease DX10), openGL demostro varias veces con librerias con varios años de antiguedad lograr cosas increibles que superaban ampliamente a DX (como el nivel de shaders y efectos producidos en Doom3 y RE4 en gamecube, que por cierto, SI utiliza OpenGL, pero con varias librerias propietarias y, obviamente, optimizado para la estructura RISC y de GPU central, simplificando bastante). No desprestigio el poder de DX, que al decir verdad DX9 me parece brillante y tambien sencillo, pero el poder de OpenGL es inegable, ya que a pesar que no venga en "packs" como el DX y completamente organizado, OpenGL es ampliamente mas versatil que DX, aunque eso pueda sacar canas verdes a los desarrolladores o grupos de desarrollo pequeños

    Yo en mi opinion le tengo mucha fe a OpenGL 3 como le tuve a Devian y como le tengo a Ubuntu como futuro sucesor de un sistema operativo popular, ya que un sistema abierto es como una mente abierta a nuevas cosas :)

    ResponderEliminar
  19. Bien, entocnes si sacan OpenGL, habria que ver como implementan DirectX para Linux, MacOS, Solaris, FreeBS, y muchos OS mas.

    ResponderEliminar
  20. en todo caso si desapareciera opengl, que tendria que aparecer para los mac?? o tendriamos que ponerle a los mac windows??
    nooooooo no me gustaria sacarle el snow leopard a un mac, eso seria un crimen a mi modo de ver. o lo otro es que tendriamos que usar mas el crossover games, aproposito esta genial eso del crossover games, pero igual me gustaria que se pudiera jugar todo en mac de una forma nativa y no con virtualizaciones...

    ResponderEliminar