Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





No Me Creo Esto De Direct3d...

Iniciado por MChiz, 11 de Diciembre de 2003, 09:25:42 AM

« anterior - próximo »

MChiz

 Hola a todos!

Tengo un problemilla con D3D. Estoy realizando una aplicacion y necesito pintar lineas con un grosor determinado. Al principio pense 'bah, esto sera una mamonada'. Me puse a buscar la equivalente de glLineWidth en D3D y: O no la supe encontrar o realmente no existe! Lo mas parecido que vi fue la interface ID3DXLine, que me deja fijarle un grosor, pero no quiero usar esa clase solo por eso. Alguien tiene idea de como hacer lo que necesito?

Muchisimas gracias por adelantado.

Saludotes!

DraKKaR

 OpenGL siempre ha estado mejor pensado desde la base (con muchísimas capacidades que incluso hoy no se han llegado a utilizar en juegos), y de hecho nunca se le ha hecho una modificación, tan solo han extendido el núcleo robusto sin perder ningún tipo de compatibilidad hacia atrás. Por contra, Direct3D no ha tenido una base sólida, simplemente se han dedicado a implementar en un API las necesidades de cada momento, lo que ha resultado en un API cambiante versión tras versión y que no aporta muchas cosas, digamos "raras". Es decir, que si en la actualidad, en los juegos no se usa el pintar líneas de distintos tamaños, lo más seguro que Direct3D no tenga implementado nada para eso.

PD: Porque los renderers que hago para mi motor salen más rápidos en opengl que en direct3d? y eso que le dedico muchísimo más tiempo de optimización a este último. Invito a cualkiera a que escriba un rendere (plugin) para mi motor y que me quite la idea de que Direct3D = lentitud && complicación && engorro.

PD2: Espero que no se me tiren al cuello demasiados aférrimos de direct3d XD

CoLSoN2

 digo yo que si D3D fuera tan lento, engorroso y blablablá no sería hoy en día prácticamente un estandar en cuanto a realización de videojuegos para PC (Windows, vaya).
Yo he utilizado DX y no he tenido muchos problemas, tampoco los tuve con OpenGL, y si algún día tengo que volver a tocar uno de estos dos APIs (ya que por ahora paso de hacer motores xD) espero que sea OpenGL, ya estándar (2.0)
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

BeRSeRKeR

 La forma que se me ocurre para crear líneas de diferente grosor es crearlas con billboarding (utilizando triangle-strips, por ejemplo). Una ventaja de este método es que podrías crear líneas con un degradado vertical/horizontal, añadirle textura con canal alpha para emular ciertos patrones, etc. Otra ventaja es que no tienes limitación a la hora de especificar un grosor :D

Saludos.

PD: buscando, he encontrado en flipcode un COTD de Pierre Terdiman que trata este tema.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheWind

 Colson2, el que D3D sea mas usado que OpenGL no tiene nada que evr con las virtudes tecnicas de uno u otro, sino más bien por el hecho de que Microsoft se encargo de atornillarlo en Windows y disponer de una mayor base de usuarios. Ni más ni menos, si fuese por virtudes tecnicas esta claro que estariamos con OpenGL u otros estandares más avanzados, pero el mercado rara vez se mueve por las virtudes tecnicas de un producto, sino por el marketing que hay tras el.


BeRSeRKeR

 Yo creo que la clave está en que OpenGL y Direct3D surgieron para solventar problemas diferentes.

No conozco demasiado bien los orígenes de OpenGL, pero supongo que surgió con la simulación y el diseño 3D en mente, campos en los que se requieren ciertas características "especiales".

Direct3D, al contrario que OpenGL, fue desarrollado para rellenar el vacío que existía a la hora de desarrollar aplicaciones gráficas para la plataforma de Microsoft. Concretamente está orientado a juegos. Y es evidente que las necesidades entre uno y otro campo son distintas. Como ha dicho Drakkar son características que en un juego rara vez se utilizan.

De todas formas siempre hay una solución para todo. Con este método podemos hacer líneas más bonitas que con el sistema estándar de OpenGL. Pero precisamente ahí es donde vamos, ¿realmente es necesario?. Pues sí o no, depende de las necesidades.

Así que para terminar, comparando ambas APIs en el campo del desarrollo de videojuegos, creo que no podemos decir que OpenGL sea una solución mejor que Direct3D. Es más, en estos momentos Direct3D es, a mi modo de ver, una solución más compacta (que no completa) que OpenGL. Tenemos que gente devota a OpenGL, ha dado el salto a Direct3D por su facilidad de programación a la hora de hacer uso de las últimas capacidades de las aceleradoras. Supongo que el caso más llamativo es el de Humus. Las demos más recientes que ha creado están todas programadas con Direct3D.

En fin, que hay que empezar a olvidar el famoso discurso de John Carmack acerca de Direct3D. No vivamos en el pasado ;)

De todas formas, creo que todos (si, yo también) estamos un poco a la expectativa, esperando la salida de OpenGL 2.0. Sinceramente, yo no deseo para nada que OpenGL se convierta en un API venida a menos. Todo lo contrario, creo que siempre tiene que haber una elección de calidad.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

TheWind

BeRSeRKeR, la aparición de Direct3D -y DirectX- no vino por esa vía, ya existían excelenets implementaciones OpenGL para windows antes de la aparición de D3D. La aparición de DirectX y D3D se debio principalmente a una decisión exclusivamente de política de empresa: No usar desarrollos externos. Es por ello que Microsoft adquirío a una pequeña empresa que estaba haciendo un API 2D/3D y renombro el producto (Incicialmente si no recuerdo mal se llamava Vortex) a DirectX/D3D. El objeto era no depender de 3º, y controlar el desarrollo, sin tener en mente ningun objetivo principal. OpenGL igualmente tampoco nacio con el objeto de servir solo para simulacion y diseño -algo que si tiene en mente Heidy o Cascade- sino con el objeto de dar una interfaz sencilla para la creación de aplicaciones gráficas que fuese universal, desde tiempos muy tempranos existían juegos 3d en OpenGL para workstations, mucho despues llegaría D3D -para ser exactos 11 años despues-.

Las comparaciones se dicen, son odiosas, y comparar OGL con D3D no es justo puesto que una ha sido fuertemente impulsada por un fabricante y la otra saboteada: preguntale a SGI que opina de microsoft y su comportamiento en el proyecto Farenheit, accion tipica de la compañia de redmond por otra parte. Es posible que el estandard OGL 1.4 no este a la altura de DX9, pero me consta que tiene las mismas prestaciones que el 8.1 y algunas cuantas mas -no sigo el tema de forma asidua, cada vez me siento mas alejado de estos berenjenales- y hay cosas que OpenGL tiene y D3D no: portabilidad entre plataformas con hardwrae muy diverso, independencia de los caprichos de una compañia, estandard ampliamente documentado. Estos puntos no son carencias inherentes a D3D, sino a la politica de Redmond de no permitir implementaciones de 3os o para otras plataformas., decisiones tomadas el objetivo de eliminar competencia: se ata a los desarrolladores a una unica api, pq desarrollar para 2 o más apis si con una cubro el 90% de los ordenadores?

ALBSIM

  Otra vez la eterna discusión DX/OGL. ¿Ya cansa no? Es como decir quién es mas fuerte, Superman o Hulk. Con todos los respetos me parece bastante absurdo. Los dos tienen sus virtudes y sus defectos, y la elección de uno u otro depende del proyecto, pero con cualquiera de los dos se pueden hacer maravillas (Doom III / HL2)

BeRSeRKeR

 
Cita de: "BeRSeRKeR"Direct3D, al contrario que OpenGL, fue desarrollado para rellenar el vacío que existía a la hora de desarrollar aplicaciones gráficas para la plataforma de Microsoft.
Tal vez debí ser más claro. Lo que quería decir es que había un gran vació en el tema de desarrollo para videojuegos por parte de la propia Microsoft. Está claro que OpenGL ya era una solución en el aspecto gráfico tiempo atrás en la propia plataforma de Microsoft.

Por otro lado yo no dudo de la competencia desleal por parte de Microsoft. Hablas del caso de Farenheit. También tenemos el caso de la OpenGL ARB Board, la cual Microsoft abandonó no hace mucho tiempo, supongo que para el alivio de los demás miembros :). Lo que quiero decir es que dejando atrás todo el tema de las artimañas de Microsoft para hacerse con el mercado, si nos atenemos a cuestiones puramente técnicas, Direct3D es una solución con tanta calidad como OpenGL. Y en ciertos aspectos, su uso se hace más sencillo que OpenGL.

Lo que yo digo es, ¿por qué nadie cree que Microsoft pueda hacerse con el mercado por la calidad de su solución y no por temas "oscuros"?. ¿Es que sus ingenieros son retrasados?. Y si damos por hecho que Direct3D es una buena solución, y vemos que la mayor parte del mercado de entretenimiento se lo llevan las plataformas basadas en soluciones de Microsoft (PC/XBox), ¿por qué no utilizar Direct3D?.

Vale, dicho esto, nos encontramos con otro problema. ¿Cuál es la consecuencia de todo esto?. Pues que le estamos haciendo el juego a Microsoft y las consecuencias pueden ser graves. Ejemplo concreto. La tecnología Paladium. Cuando leí de que iba el tema, me daban escalofríos de ver hasta que punto se nos podían recortar las libertades y violar nuestra privacidad.

Conclusión. Tal vez debería estar más comprometido con la causa...pero no hoy. Y tu dirás, si todos pensaran como tú, estaríamos perdidos...cierto.

Pero bueno, creo que no voy a seguir con esto. Primero, porque ya conocemos el final de este tipo de discusiones. Segundo, entramos en temas que yo desconozco por lo que ahí no tengo ninguna credibilidad.

Pues ya está. En lo que se ha convertido esta discusión, ¿eh MChiz?. Lo siento. Por lo menos espero haber sido de ayuda en tu problema.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Zaelsius

 No nos emocionemos con el tema M$...  XD

Imaginemos el caso contrario: Igual que aquí se comenta lo de pintar líneas, ahora digo yo que OpenGL es una basura porque no tiene funciones para cargar texturas(png,bmp,tga,etc..) y Direct3D sí que tiene.

Cada uno es libre de elegir API, y de fastidiarse con las putadillas que tiene cada una.

BeRSeRKeR

 Hombre, si a Direct3D le sumamos D3DX, entonces hablamos de un API más completa que OpenGL, de eso no hay duda. Tenemos carga de texturas, modelos, animación, librería matemática, integración con vertex & pixel shaders (ASM o HLSL). En fin, muchas cosas que aceleran el desarrollo de las aplicaciones.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

 Por cierto, después de probar los vertex & pixel shaders, la fixed pipeline acaba pareciéndote patética :D
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

NeLo

 Preguntarle a Carmack lo que ha tenido que hacer para que Doom 3 pueda usarse en varias tarjetas. OpenGL esta desfasada.

Saludos.
Drowning deep in my sea of loathing

TheWind

 
CitarPor otro lado yo no dudo de la competencia desleal por parte de Microsoft. Hablas del caso de Farenheit. También tenemos el caso de la OpenGL ARB Board, la cual Microsoft abandonó no hace mucho tiempo, supongo que para el alivio de los demás miembros :).
No solo a ese caso, hay muchos mas similares: por ejemplo como recientemente ha hundido literalmente a la empresa que desarrollo el Windows para SmartPhone al cancelar todos los acuerdos una vez que esta hubo terminado el proyecto, y haber pasado esos acuerdos a la compañia rival.

CitarLo que yo digo es, ¿por qué nadie cree que Microsoft pueda hacerse con el mercado por la calidad de su solución y no por temas "oscuros"?. ¿Es que sus ingenieros son retrasados?. Y si damos por hecho que Direct3D es una buena solución, y vemos que la mayor parte del mercado de entretenimiento se lo llevan las plataformas basadas en soluciones de Microsoft (PC/XBox), ¿por qué no utilizar Direct3D?.
El argumento de las moscas de nuevo? no confundamos predominio con calidad. La calidad no es condición sine qua non del predominio de mercado, y viceversa, no tiene nada que ver. El vhs domino el mercado domestico del video pese a ser , y con notable diferencia, la peor de las tecnologias, al igual que tenemos hoy en dia una plataforma hard (PC y derivados, incluyendo la XBOX) que en algunos aspectos dan pena y no han evolucionado en 20 años.

El motivo de no utilizar exclusivamente DirectX es el de la independencia, el de no tener un punto por el cuál una empresa te pueda obligar a hacer algo que no quieres -como desarrollar para una única plataforma, o no hacer drivers para tal SO, etc..- o que pueda limitarte el mercado. El primer interesado eres tú: que pasará si mañana deja de haber implementaciones OpenGL aceleradas por hardwrae para Windows y a M$ le da por poner el SDK de DX de pago? Ya ha hecho cosas similares en el pasado y ha anunciado que las hara en el futuro: según el jefe de desarrollo de IE la versión 6SP1 será la última que no vaya unida al sistema operativo (las siguientes requerian actualizar el SO forzosamente).

Y si Carmack es casi dios,. pero ultimamente tiene mas el cerebro en Armadillo Aerospace -su proyecto para conseguir elñ X-Prize- q en otra cosa, además hasta donde yo se Doom3 esta pensado con OGL 1.3 en mente y no la 1.4 o la 1.5 que incorporan todas las funcionalidades hasta D3D9 incluida -incluyendo un lenguaje de shaders neutro a lo CG- .

Que OpenGL no es perfecta? Por supuesto que no, ni D3D, ni ninguna api que puedas buscar. Pero hay que ser un poco inteligentes y mirar un poco, solo un poco, mas alla de nuestras narices, no por los demas, sino por nuestros propios intereses; ya lo dice la celebre frase: "Primero vinieron a por los judíos, y no dije nada por que yo no era judío. Luego vinieron a por los comunistas y no dije nada por que yo no era comunista. Luego vinieron a por los sindicatos obreros y no dije nada por que no era uno de ellos. Finalmente vinieron a por mi y no habia nadie para hablar por mi"

¿Quieres ser el proximo caido?
Pensad en ello.

El

BeRSeRKeR

 
Cita de: "TheWind"El primer interesado eres tú: que pasará si mañana deja de haber implementaciones OpenGL aceleradas por hardwrae para Windows y a M$ le da por poner el SDK de DX de pago?
Si, precisamente a eso me refiería cuando dije esto:

CitarSinceramente, yo no deseo para nada que OpenGL se convierta en un API venida a menos. Todo lo contrario, creo que siempre tiene que haber una elección de calidad.

No es que no esté de acuerdo contigo. Es sólo que después de probar Direct3D me parece más sencillo (aunque a la gente parece que le ocurre al revés) que OpenGL. Mi elección se debe simplemente a aspectos puramente técnicos. Lo que no quiere decir, que no esté de acuerdo en el peligro que conlleva dar rienda suelta a Microsoft. Por ese mismo motivo me alegra ver que aún hay mucha gente que sigue utilizando OpenGL. Yo no intento evangelizar (como diría evanGLizr :)) a nadie. Es simplemente mi elección personal. De todas formas estoy esperando a OpenGL 2.0. Quien sabe, a lo mejor significa la vuelta a mis orígenes ;)

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.