Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





De Directx 7 A 8

Iniciado por averbell, 03 de Marzo de 2005, 06:41:53 PM

« anterior - próximo »

averbell

 Estoy liado con un proyecto que estava programando en directx 7 por el tema de directdraw para gráficos 2D, pero supongo que para 8.1 tambien habra una similitud sabeis que funciones equivaldrian a los de la 7?


_Grey

 En las 8 no hay DDraw.

Sorry....

averbell

 pero puedo trabajar con prespectiva 2D o no se puede usar?

Zaelsius

 Te tocaria hacerte un pequeño motor 2D basado en "quads"(dos triángulos) texturizados. Mi consejo es que uses una libreria 2D directamente y te abstraigas de la API. No hay necesidad de pelearse con DirectX ni OpenGL para hacer juegos.. conozco personalmente esa fiebre por usar las API's, pero al final si quieres terminar cosas, no vale la pena. No me cansaré de repetirlo :D , soy un pesao lo sé.

_Grey

 Si, puedes trabajar 2D, pero desde Direct3d, es lo que la gente suele hacer, con el problema añadido de que piden hardware 3D para sus programas, pero es factible.

Saludos.

martiño

 Todo el mundo tiene una tarjeta 3D hoy en dia, yo usaria Direct3D9 o OpenGL. En ambos puedes usar una proyeccion ortográfica. En OpenGL de hecho puedes usar point sprites.

AgeR

Cita de: "martiño"Todo el mundo tiene una tarjeta 3D hoy en dia, yo usaria Direct3D9 o OpenGL. En ambos puedes usar una proyeccion ortográfica. En OpenGL de hecho puedes usar point sprites.
Eso de las tarjetas 3D no es del todo cierto, aunque sí que es verdad que las demás tienden a desaparecer.
Si se trata de un proyecto shareware típico por internet, mejor abarcar lo máximo posible.

Ya puestos, si eso te da igual, en las DirectX9 también puedes usar la clase Sprite que está para ello.

[EX3]

 Si no recuerdo mal, averbell, tu programabas en VB. Pasate por http://directx4vb.vbgamer.com/, ahi encontraras varios ejemplos de como trabajar en 2D con Direct Graphics aunque no encontraras ejemplos del uso de la clase DXSprite, muy util y sencilla para dibujar sprites con efectos, rotaciones y demas historias en D3D, pero es facil de usarla, no tiene mucho misterio.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

averbell

 Eso es lo que estava revisando ahora, el tema es hacer un creador de aventuras gráficas para vagos, a base de un entorno gráfico. Logicamente estoy haciendo el motor, que ya tenia empezado con dx7 pero estando el 8 i 9...

averbell

 ya ta solucionado, tanto tema de textos con texturas ,textos simples, insertccion de imagenes, supongo que tu ex3 te preguntaras por que no uso tus dlls, es por el mero echo de romperme la Chola(Vicio a counter strike).
Ahora voy por el tema colisiones, como puedo detectarlas? para tema pixels.

[EX3]

 
Cita de: "averbell"supongo que tu ex3 te preguntaras por que no uso tus dlls, es por el mero echo de romperme la Chola(Vicio a counter strike).
Jejeje, eso esta bien, aprender por uno mismo. La dx_lib32 es justo para la gente que no quiere romperse la cabeza aprendiendo DirectX y desean empezar a desarrollar su proyecto a la de ya, y ademas, si tuvieses que usar la dx_lib32 esperate mejor a la version 2.0 que estara mas terminada y algo mas optmizada que la 1.03 aparte de estar totalmente documentada. La actual solo es un aperitivo para que la gente lo conozca y tenga un primer contacto ;)

Sobre lo de las colisiones, te recomiendo dos metodos:
1. Puedes usar el sistema de Regiones del API de Windows para detectar colisiones con regiones irregulares, algo asi como mascaras, pudiendo mezclar estructuras RECT y regiones, no es muy complicado de implementar y parece ser lo suficientemente rapido como para usarlo en un juego, yo aun estoy mirandolo a fondo para posiblemente implementarlo en la dx_lib32.

Todo sobre Regiones en la MSDN: http://msdn.microsoft.com/library/default....egions_6o6r.asp

2. Que implementes mapas de durezas, esto casi que es mas sencillo de implementar que las regiones.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

averbell

 En mi caso el tema por ahora es detecatar las colisiones con el mouse.  

nsL

 Eso mismo pregunte yo estos dias por aqui. En un principio pregunte para colisiones de sprites y al final acabe implementando colisiones para el mouse :P

Yo lo que hago es crear una mascara para cada sprite.
1º Detecto si hay colision con el bounding box (creo q se llama asi, Rect pa los amigos).
2º Si hay colision obtengo el pixel donde se encuentra el raton, pero OJO, el pixel respecto de la mascara, no del sprite.
3º Dependiendo del color del pixel:
En mi caso:
-Si pixel negro = Colision
-Si pixel blanco = No Colision
(En la mascara la figura esta en negro y lo demas en blanco)

Mirando por webs, vi que hay muchos mas metodos de los que pensaba. Se puede hacer incluso sin maskaras, comprobando si el pixel es del color key que las transparencias. O incluso creando mascaras de bits.
Para este ultimo caso creo que seria:
1º Crear una mascara de bits del sprite, donde por cada pixel miras si es el color de transparencia, en cuyo caso le corresponde un 0, y sino le pones un 1. Ya tenemos la mascara
2º Detecto si hay colision con el bounding box .
3º Si hay colision, miro la posicion del raton y lo comparo con el pixel de la mascara. Si es un 1 hay colision, si es un 0 no la hay.

Este ultimo metodo se parece mucho (lo quiero implementar yo) para detectar colisiones en sprites. Te lo pongo por si te interesa:
1º Crear la mascara de bits...
2º Colisiones en BBox
3º Si hay colision, obtener el Rect que contenga a los 2 trozos del sprite qu colisionan.
4º Hacer un AND logico para las mascaras en dicho rect.
5º Con que salga un 1, ya hay colision.

Como sabes, las 2 mascaras tienen 1 cuando hay un pixel visible (que queremos detectar colision) y 0 si es transparente. Si hacemos un AND logico de 0&0 , de 0&1 , 1&0 nos da 0, luego no hay colision. En cambio si hacemos 1&1 nos da y nos indica que hay colision. :D
Segun lei pr ahi es bastante rapido y es lo que llevan usando desde hace mucho tiempo para las consolas antiguas y demas. A ver si lo implemento un dia de estos (o al menos lo intento ;))

Espero no haberme ido por las ramas.

Saludos!  B)
Yo no muero hasta la muerte -

averbell

 cargare las maskaras en memoria y are la conversion de los colores en ella misma, para no tener que crear mas ficheros.

averbell

 alguien me podria explicar el funcionamiento de bitbtl?






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.