Bueno, esto no quiere ser una pregunta demasiado técnica. Simplemente me gustaría que ustedes que lleváis mucho tiempo programando juegos me explicáseis una cosilla que nunca me quedó clara.
Llevo poco tiempo programando videojuegos, ahora estoy haciendo un juego en 2D, pero ya me pica el gusanillo y estoy viendo tutoriales de programacion en 3D y veo que mucha gente utiliza tecnología como Direct3D (creo que es) que se puede utilizar en un solo sistema operativo (Windows). Yo en mi casa sólo utilizo Software Libre, pero la pregunta no va si el Software Libre es mejor que el propietario
¿Porque utilizar una tecnología que es propietaria de un sólo sistema operativo si se puede utilizar otra que es multiplataforma y se puede llegar a más gente?
Ya digo que no programo en 3D pq lo que puede ser que sea por miles de motivos, como que hay mas documentacion de una cosa, como que tiene mas posibilidades, o cualquier otra. Me gustaría que me dijéseis cual es vuestra razón si es vuestro caso. Yo lo tengo claro, no pienso gastar mi tiempo en una tecnología propietaria de un sistema operativo. Lo mismo diría para algo que sólo fuese sólo para Linux.
No quiero crear polémica sobre que es mejor ni peor, ni una disputa alrededor del Software Libre, no va por ahí. Además esa polémica no se tiene que dar aquí
Saludos y gracias a todos
Yo hace poco me puse a trastear con cosillas 3D, aunque lo dejé algo de lado por falta de tiempo. Mi solución es sencilla, yo no quiero programar solo para Windows.
Si quieres programar también para Linux, aunque sea en un futuro lejano, o simplemente vas a dejar el código fuente para otros, si es OpenGL será más útil.
Yo desde luego no me he planteado aprender DirectX, o el día que decida hacer algo para otro SO tendré que aprender OpenGL. Y si algún día necesitara usar DirectX, como las bases son similares...
Sobre que API es mejor, no te puedo decir nada, ya que solo he usado OpenGL y no tengo mucho nivel, la verdad.
prefiero opengl+sdl porke lo encuentro mas facil que directx
tantan
En rendimientos y capacidad son casi exactamente iguales, para mi, OpenGL es mucho mas sencillo que DirectX y a la vez: multiplataforma.
Ahora, toca esperar algun partidario de las directx... jeje
Usa Direct3D, llegarás a más gente con ese sistema propietario que con uno libre y multiplataforma como OpenGL (la polémica la dejo para otro post). Si eso te da igual, y es por aprender, pues OpenGL es más facilito.
Yo después de trastear con ambos me decidí por ninguno, y opté por un motor3D que soporte ambos. Mirate el motor Irrlicht si estás empezando :D
pues voy a contestar yo hehehe.
he usado, ambos, tando OpenGL, como DirectX, la diferencia entre ambos es sencilla, opengl es sólo para graficos, directX asume todo lo que una API debe proporcionar.
-sonido
-red
-graficos 3D
-graficos 2D
...
lo asume todo, cierto es que con SDL tienes un rendimiento a favor, y además es multiplataforma, yo personalmente no utilizo la SDL, uso sólo OPENGL + GLUT, el resto de temas prefiero librerias más especializadas en esos temas en concreto.
en DirectX lo que mayormente he tocado es 2D, aprender es dificil, eso es cierto, pero una vez sabes utilizar DirectX todo se vuelve más sencillo, te montas tus propias funciones para no tener tantos punteros a NULL por medio.
Lo de que DirectX no es multiplataforma, es cierto en parte, hay ports de DirectX para LINUX.
Yo sigo en mi caso de utilizar OPENGL, pero por el único motivo de ser código libre, la comunidad es la comunidad.
Cita de: "senior wapo"Usa Direct3D, llegarás a más gente con ese sistema propietario que con uno libre y multiplataforma como OpenGL
(ses) Mí no entender.
¿Cómo puedes llegar a más gente con algo que funciona en menos sistemas?
Muy buenas,
yo he estado trasteando un poco con las dos y creo que es mejor DirectX, ni que se para la comodidad del programador. DirectX es una API que incluye funciones de más alto nivel ( D3DX... ) que facilitan un monton las cosas. Como contra quizá tiene el inconveniente de que te tendras que pegar un poco con todo el tema más coñazo de windows y las ventanas, aunque si solo lo quieres para hacer demos, ya tienes un framework bastante bien echo, que es el que ellos utilizan para los ejemplos.
Pero bueno, tampoco se diferencian tanto, así que una vez que sepas cómo va una, no te costará mucho aprender la otra, a parte que lo importante no es aprender una API de miedo, sinó saber como funcionan los algoritmos.
Espero que te haya servido de algo.
VinCenT
Si quieres aprender rápido y con mucha potencia, escoje Managed DX. Hay muchos tutoriales para empezar con C# y MDX, y te aseguro que en 2 patadas resuelves la mayoría de los típicos problemas sin necesidad de leer cientos de tutoriales.
Cita de: "sés"Cita de: "senior wapo"Usa Direct3D, llegarás a más gente con ese sistema propietario que con uno libre y multiplataforma como OpenGL
(ses) Mí no entender.
¿Cómo puedes llegar a más gente con algo que funciona en menos sistemas?
Porque hay mas compradores usando un PC con Direct3D funcional que utilizando OpenGL.
Hay más plataformas que soportan OpenGL, pero la base instalada total de PCs con OpenGL funcional (no testimonial) es menor. Y de ellos, ¿ cuantos compran juegos?
Si te vas a preguntar un foro de frikis informáticos como stratos, 3D poder y similares, pues te saldra un porcentaje anormalmente alto de PCs con un OpenGL instalado aceptable para correr juegos sin problemas. Win98 SE viene de fábrica con DX6, W2k con DX7 y XP con DX8. Y funcionando aceptablemente. OpenGL no.
No convirtamos este hilo en OGL vs DX, si quieres abre otro y me comentas todo lo que quieras sobre DOOM, Macintosh, Linux y la leyenda urbana de GarageGames sobre el % de ventas de juegos Mac(OGL). :)
El hecho de que DX sea una solución completa (no es sólo D3D) ya es un motivo importante. Y también estoy de acuerdo con senior wapo en que DX funciona sólo en Windows, pero en todos los Windows. OGL funciona en cualquier SO, pero sólo en algunas máquinas. Sin ir más lejos, yo no pude trastear con OGL porque en mi PC no me funciona casi ningún programa que use OGL.
Eso del OpenGL funcional,... no se yo...
Yo lo unico que se es que cuando programaba con DX, siempre tenia que decirle a la gente que tenia que tener la version tal de DirectX (normalmente la ultima) y la ultima version de los drivers.
Con OpenGL solo he tenido que decir lo de los drivers...
Yo empeze a programar con DX y me pase a OGL por poder hacer cosas con Linux.
Empeze con DX pq empeze con DirectDraw, y en aquella epoca era lo unico que conocia para 2D rapido y no tenia inquietudes de multiplataforma.
Cita de: "Haddd"Hay muchos tutoriales para empezar con C# y MDX
Podrias recomendar alguno Haddd?
Merci!
Uhmm.... quien tiene ahora un windows 98? (no digo ya un 95) o un winnt?? creo q nadie q quiera jugar tiene esas cosas ya.... asike... se puede asumir que hay lo mismos ordenadores corriendo dx q opengl(en los antiguos es cierto, q el soporte opengl no era muy bueno y tal...pero es cosa del pasado).
Si kieres algo rapido..escoge la via de haddd, managed dx utilizando C# (y pq no su motor, q encima tienes las fuentes y puedes aprender modificar todo lo q kieras).
Si kieres algo multiplataforma...opengl y por ejmplo...sdl...
ese argumento de q dx es todo(graficos, sonido, red, etc.) y opengl no lo es... es cierto a medias... usando conjuntamente opengl y sdl te kitas todo el marron del medio y MULTIPLATAFORMA :).
q es eso del port de directx para linux? tambien hay un emulador de windows para linux... y funcionar funciona...pero a pedales.... por ahi no paso jeje
y weno...hasta ahora, todo han sido mas o menos comentarios subjetivos y sobre gustos o demas... a mi me gustaria saber mas...sobre el tema tecnico, no controlo tanto sobre el tema para pronunciarme... pero me gustaria saberlo...se que d3d suele estar mas avanzado y listo para los nuevos juegos(punto de vista tecnologico) y que opengl se actualiza menos (ahora viene la version 2...bien!) pero tiene sus extensiones....
a ver si alguien, nos abre los ojos :) :ph34r:
Yo uso OpenGL por las ventajas de multiplataforma, no es propietario (o por lo menos de una compañia) y por que lo veo de un uso mas general para mas cosas que juegos (por ejemplo aplicaciones cientificas). Las dos APIs son igual de potentes en cuanto a gráficos.
Pero he de admitir que DirectX te da muchas mas facilidades en cuando a utilidades y código ya programado (como las librerias matematicas, los archivos FX, carga de imagenes, carga de modelos, etc) que OpenGL no trae de 'serie'. Es cierto que hay muchas librerias por ahi que te ofrecen similitudes e incluso son mas potentes (cal3D...) pero eso supone tener que trastear con diferentes APIs.
Creo que por esto mismo con OpenGL se aprende muchisimo ya que mucho tienes que currartelo tu, pero esto tambien relantiza. Como siempre, todo depende de lo que se quiera.
Hoy tengo vena posteadora y no voy a pasar una (twist)
% de las distintas plataformas (basándose en las trazas que dejan los navegadores web al visitar sitios web, fecha Noviembre 2004):
Indie WikiLinkando con el SDK de DX7 (de serie con W2k) alcanzas al 70%+ de la base instalada, con sistema operativo de fábrica sin instalar nada extra. Nada.
Si programas para DX9 pues si que tienes rollos de instalación para el usuario, pero si no estas desarrollando un AAA no se que pintas linkando con el DX9, a lo mejor quieres hacer un revolucionario comecocos con todo el código metido en shaders de la GPU xD
Es mucho suponer que si quieren jugar ya tendrán instalado lo ultimisimo.
Creo que alguno no es consciente de la cantidad de personas que juega desde ordenadores poco potentes o sin actualizar. Por ejemplo, desde el trabajo, alli no intalas OpenGL ni DX actualizado ni nada, juegas con lo que hay. Y si, compran juegos solamente para eso. ¿ Alguna vez has tenido un curro de 9 horas con 1 para comer y te sobren 40 minutos ? ¿ O tu jefe se pira 1 hora antes que tu? O vete a saber que...
Hace poco alguien mencionaba en otro hilo que su hermana estaba mosqueada porque le regalaron un maghjong 3D y le pedía que instalara DX9. Esa reacción no es poco común en absoluto. No todos los que juegan (y compran) se ajustan al perfil varón, 16-23, friki del counterstrike+nosekecraft+quakeX ni sabe lo que significa overclocking ni usa el PC todos los dias. Y si, compran software, que no todos ellos son españoles =p
Y eso para un PC, no entro ya en el mundo de los portátiles (yo voy ya por mi tercero, y he configurado bastantes cuando me dedicaba a ello). OpenGL = kk, desde el punto de vista de soporte técnico.
El mercado de los juegos no lo conforman sólo la trinidad HL2+Warcraft3+FIFA (AAA FPS+RTS+deportivos), ni se mide solamente por quién mueve más polígonos, usa más shaders o más horas de voz digitalizada. Puedes hacer juegos chulos con DX7 (soporta HW T&L) y venderlos tu o con publisher share.
Ojo, que no soy un fan de DX, me gusta más el API OpenGL y mi código en general es multiplataforma (por manía mía, mas que nada), pero hay que ser objetivo.
Una vez más, si se trata solo de aprender, o por hobby, usas lo que te sea más cómodo o te apetezca. claro. :D
PD: Amenazo con pegar links guiris a diestro y siniestro, abramos otro hilo.
Yo empecé como casi todos por OpenGL, y ahora mismo sólo uso DirectX. Por qué?
DirectX tiene un SDK completísimo, con ejemplos, código, y documentación (más o menos buena, pero suficiente la mayoría de veces).
Tiene funciones para carga de imágenes de casi cualquier tipo, sin necesidad de librerías externas. En el caso de OpenGL te has de hacer tú mismo tus funciones de carga de texturas o usar una librería, por ejemplo.
En OpenGL además está todo el tema de las extensiones, mientras que con DirectX puedes comprobar con una simple llamada "cualquier" característica de tu tarjeta.
Las DirectX tienen en contra que no son multiplataforma. Bien, si quieres algo multiplataforma, usa OpenGL, si te da lo mismo, yo te recomendaría DirectX sin dudarlo. No es nada difícil aprender (y como dicen ahora con C# y MDX mucho menos), y en la práctica, cualquiera que tenga interés en ver lo que hagas, lo verá.
Bueno, es mi opinión (basada en mi corta experiencia) :ph34r:
OGL y DX... para gusto los colores.
Si bien en rendimiento, el tema debe ser inapreciable usar una o otra, la API de OGL es más 'salvaje' mientras que DX esta más 'domesticado'. Las DX estan convertidas en un semi-motor para programación grafica, mientras que OGL no, solo aporta lo básico.
CitarEn OpenGL además está todo el tema de las extensiones, mientras que con DirectX puedes comprobar con una simple llamada "cualquier" característica de tu tarjeta.
Ese es el pro de las DX ... el contra es que hasta que actualizan la versión de DX no puedes utilizar la 'capacidades' de la tarjeta aunque las tengas. Por cierto sacaran Dx10 ? o le cambiaran el nombre ? (apuesto por lo primero, acordaros del descalabro de Max Mix 10, fue el numero !!! )
Cita de: "MAMestre"] Por cierto sacaran Dx10 ? o le cambiaran el nombre ?
Yo creia que iban a llamarlo XNA a partir de la siguiente versión, e iba a ser una solución aún más completa.
En fin, comparto la opinión de Ager y habiendo visto las dos opciones recomiendo DX, si bien es cierto que con la versión managed tienes cosas interesantes funcionando en dos patadas, como bien dice Haddd.
En mi opinión la aparente facilidad de ogl se convierte luego en un lío de extensiones y librerías...
Creo que una razón importante para usar OpenGL y no DX, cuando lo que quieres es aprender, es que DX en cada versión se tira a la basura y se rehace de nuevo (esto da una idea de lo bien diseñada que esta el API).
Así que si tienes código en DX8 y quieres utilizar alguna capacidad que se incorporó en DX9, tienes que portar todo a DX9 (y a DX10 cuando salga, etc...). En OpenGL el código es compatible hacia atras, OpenGL 2.0 por ejemplo añade nuevas funciones, pero las antiguas siguen funcionando igual.
Hoy en día las tarjetas ATI+Nvidia suman el 90% del mercado y soportan OpenGL perfectamente, asi que lo de que con DX llegas a mas gente no creo que sea una razón.
A mi el API de OpenGL me parece mucho mas elegante y cómoda (yo no diria mas fácil, diria menos latosa), el único problema que le veo es la falta de una documentación de referencia seria, cosa que DX si que tiene.
Hola,
de graficos nada, pero para mi tocayo vincent
aqui hay otro tutorial de MDX y C# que me parece bastante bueno. Un saludo!
Vicente
Cita de: "martiño"Creo que una razón importante para usar OpenGL y no DX, cuando lo que quieres es aprender, es que DX en cada versión se tira a la basura y se rehace de nuevo
Yo tb estoy deacuerdo con eso....
Ademas de que te sirve que te pongan las cosas ya hechas (como por ejemplo los skinned meshes) si despues para poder usarlas no hay informacion, o hay bugs, o.... Ahi estan Hadd y Bersk q son unos hachas y han optado por ponerle soporte MD5 a su motor, pq usar los X era mas dificil/enrevesao.
Si se quieren las cosas hechas, casi mejor tirar de un motor ya hecho :P
Y volviendo a las versiones de DX,.... cuantos de aqui siguen programando en DX7 y cuantos lo hacen en DX9 ? :^P
Da igual que los usuarios se hayan quedado en DX7. Los developers de DX tienden a programar en la ultima version; lo se pq yo lo he hecho.
Yo desde que me pase a OpenGL no tengo agobios cada vez que DX cambia de version (he usado desde DX3 hasta DX8). La de codigo que habre reescrito cada vez... ¬¬
Yo he usado ambas APIs. Mi conclusión es que segun lo que quieras hacer, es mejor elegir una u otra. Si no sabes cual elegir, es porque no sabes qué quieres hacer.
Mi otro consejo es que si quieres hacer un juego y terminarlo, es no uses niguna API directamente y vayas a por una libreria o motor 3d.
Pero sé que al final cada uno hace lo que le place.. no será por avisar (twist)
Cita de: "Lord Trancos 2"Y volviendo a las versiones de DX,.... cuantos de aqui siguen programando en DX7 y cuantos lo hacen en DX9 ? :^P
Da igual que los usuarios se hayan quedado en DX7. Los developers de DX tienden a programar en la ultima version; lo se pq yo lo he hecho.
Si hubiese logrado implementar de manera eficaz los efectos en sprites (o poligonos en mis ultimos intentos) como espejados (esto no lo logre en Direct3D7) y cosas asi en DirectDraw o Direct3D7 y ke hubiese alcanzado unos resultados aceptables y no 20fps a 640x480x16 dibujando 4 sprites en pantalla hubiese seguido con DirectX7 ya que para mi era mucho mas comodo aunque tuve problemas a la hora de implementar cosas como modo ventana en DirectDraw y trabajar con colores en modos de 16/24/32 bits de manera ke fuesen el mismo valor en cualquier modo de resolucion (no se si me explico)
Ojo, no estoy diciendo ke no se pueda hacer, BlitzBasic lo hace y muy bien, seguro ke si lo intentase ahora lo lograria, pero mi trabajo lo pase a DirectX 8, donde solucione la mayoria de problemas que tenia en DirectDraw y Direct3D7: espejados, modo ventana, conversion de colores de 16 o 32 bits, velocidad (aunque no mucha)... y ganando problemas como el ultimo con lo de la perdida del Device en D3D8 y ke sigo sin lograr solucionar y sin encontrar ayuda, cosa ke en DirectDraw esta tirado de hacer.
Por lo demas con Direct3D8 me va bien, no de lujo como me iba con DirectDraw pero de sobra y no tengo intencion de pasar a DirectX9 ni nada nuevo.
Salu2...