Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Dibujar un fragmento de una textura

Iniciado por bnl, 17 de Octubre de 2002, 10:07:38 PM

« anterior - próximo »

bnl

                                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                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                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.                                
Drowning deep in my sea of loathing

bnl

                                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.                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                - 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.                                
Drowning deep in my sea of loathing

bnl

                                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?                                
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NeLo

                                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.                                
Drowning deep in my sea of loathing






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.