Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: bnl en 17 de Octubre de 2002, 10:07:38 PM

Título: Dibujar un fragmento de una textura
Publicado por: bnl en 17 de Octubre de 2002, 10:07:38 PM
                                Hola.
  Lo q sigue es para dibujar con DirectX8 un mapa de tiles en 2D
  Tengo un fichero bmp que contiene varias tiles de 32x32. Quiero mostrar en pantalla sobre un poligono solo un fragmento de la imagen (la parte q corresponde a una casilla) ¿como deberia hacerlo? ¿Debo cargar la imagen en una textura y luego mediante los atributos tv y tu de un vertice selecionar el trozo q me interesa? Estos solo admiten valores entre 0 y 1 por lo q deberia introducir valores como 1/16 o 1/8. No me parece muy elegante.
   Por otro lado estoy usando para los vertices el tipo D3DTLVERTEX, pero he visto q existen varios tipos parecidos como D3DTLVERTEX2, D3DVERTEX, D3DVERTEX2 ¿cual deberia usar?
   Otra cosilla ¿q es rhw? lo de reciprocal of homogeneous q dice la DSK no me dice mucho.
     Muchas gracias y perdon por las preguntas q seguro q son muy elementales                                
Título: Dibujar un fragmento de una textura
Publicado por: NeLo en 17 de Octubre de 2002, 10:42:30 PM
                                Aunque no te parezca elegante, creo que la opción adecuada es establecer las coordenadas de textura como decías.

Los RHW son vértices ya transformados por el programador, con lo que al lanzarlos a la tarjeta gráfica no son tranformados por la pipeline.

Saludos.                                
Título: Dibujar un fragmento de una textura
Publicado por: bnl en 18 de Octubre de 2002, 11:59:45 AM
                                Gracias por contestar.
hrw es un atributo de la estructura Vertice no un tipo de vertice ¿verdad?

entonces no hay otra jorma de mostrar un fragmento de una textura?

¿Cual es la diferencia entre estos tipos de vertices D3DTLVERTEX, D3DTLVERTEX2, D3DVERTEX, D3DVERTEX2? ¿Cual deberia utilizar?
Muchas gracias.                                
Título: Dibujar un fragmento de una textura
Publicado por: NeLo en 18 de Octubre de 2002, 12:22:30 PM
                                - Sí.

- Como no quieras cortar la textura en tiempo de ejecución y crear varias texturas a partir de la grande... Pero a mí me gusta más la primera forma (tendrás que utilizar menos SetTexture() y eso es bueno  :P )

- No se de que me hablas  :?:

Saludos.                                
Título: Dibujar un fragmento de una textura
Publicado por: bnl en 18 de Octubre de 2002, 01:09:48 PM
                                Gracias de nuevo
  Son tipos de vertices transformados, son estructuras q representan vertices y entre sus atributos o miembros estan las tu, tv, x, y, rhw, etc Vienen en la ayuda del SDK.
  No me quedo claro que es lo del rhw ¿puedes explicarmelo un poco mas por favor?                                
Título: Dibujar un fragmento de una textura
Publicado por: NeLo en 18 de Octubre de 2002, 01:26:45 PM
                                No he encontrado ninguna referencia en la SDK a los tipos de vértices que comentas  :o

Cuando declaras un vértice con la propiedad RHW, significa que las coordenadas de esos vértices, ya estan tranformadas, se mostraran en pantalla en la posición que definen las coordenadas. Por lo tanto, no son tranformados en la pipeline para determinar donde está la representación 2D (en el monitor) de esos vértices 3D (en el espacio).

Ese tipo de vértices se suelen utilizar para hacer el GUI. Pones la posición del vértice en pantalla, y sale exactamente donde quieres. Si intentáras mostrar un vértice normal (no RHW) en la posición de la pantalla que quieras, verías que es mucho más difícil.

Ej:
Si defino un vértice RHW con las coordenadas (0,0,0) ese vértice se mostrará en la esquina superior izquierda de la pantalla. Sin embargo esas coordenadas en un vértice no RHW, se mostrarán en el centro de la pantalla (centro del espacio 3D).

Y para mostrar un vértice RHW en la esquina inferior derecha de la pantalla, pues sus coordenadas serían (Ancho_Pantalla,Alto_Pantalla,0).

Saludos.