Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





No entiendo MAP_SetRegion

Iniciado por fabianunali, 27 de Junio de 2006, 03:21:48 AM

« anterior - próximo »

fabianunali

No entiendo MAP_SetRegion, no me es clara la documentacion, :shock:
si me dan un ejemplo real de como funciona lo voy a agradecer.  :oops:
esde ya muchas gracias.
      Fabian unali

[EX3]

CitarNo entiendo MAP_SetRegion, no me es clara la documentacion  :shock:
Increible! alguien que se ha mirado la documentacion antes de preguntar! :lol:

Es muy sencillo su concepto, te explico. Imagina que tienes un grafico del que solo quieres dibujar una porcion o 'region' de el en vez de todo el grafico. MAP_SetRegion() te permite especificar que region del grafico quieres dibujar. Un sencillo ejemplo:

Tomando este grafico para el ejemplo:



El siguiente codigo dibuja 4 regiones diferentes del mismo grafico:

Option Explicit

Dim m_GFX As New dx_GFX_Class
Dim Texture As Long
Dim Looping As Boolean
Dim Region(3) As GFX_Rect 'Definimos 4 regiones diferentes.

Private Sub Form_Unload(Cancel As Integer)
   Looping = False

End Sub

Private Sub Form_Load()
   Me.Show

   Call m_GFX.Init(Me.hWnd, 640, 480, 16, True)

   Texture = m_GFX.MAP_Load("texture.png", 0)

   Looping = True

   Do While Looping
       'Dibujamos una region de 128x128:
       With Region(0)
           .Width = 128
           .Height = 128

       End With

       Call m_GFX.MAP_SetRegion(Texture, Region(0))
       Call m_GFX.DRAW_Map(Texture, 0, 0, 0, 0, 0)

       'Dibujamos una region de 128x128 tomando como origen la coordenada x = 128 del grafico:
       With Region(1)
           .X = 128
           .Width = 128
           .Height = 128

       End With

       Call m_GFX.MAP_SetRegion(Texture, Region(1))
       Call m_GFX.DRAW_Map(Texture, 256, 0, 0, 0, 0)

       'Dibujamos una region de 128x128 tomando como origen la coordenada y = 128 del grafico:
       With Region(2)
           .Y = 128
           .Width = 128
           .Height = 128

       End With

       Call m_GFX.MAP_SetRegion(Texture, Region(2))
       Call m_GFX.DRAW_Map(Texture, 0, 256, 0, 0, 0)

       'Dibujamos una region de 128x128 tomando como origen la coordenada x = 128, y = 128 del grafico:
       With Region(3)
           .X = 128
           .Y = 128
           .Width = 128
           .Height = 128

       End With

       Call m_GFX.MAP_SetRegion(Texture, Region(3))
       Call m_GFX.DRAW_Map(Texture, 256, 256, 0, 0, 0)

       'Mostramos la escena:
       Call m_GFX.Frame(m_GFX.ARGB_Set(255, 0, 0, 255))

   Loop

   Call m_GFX.MAP_Unload(Texture)
   Call m_GFX.Terminate

   End

End Sub


Una vez ejecutado el codigo quedaria asi la escena final:



Esta funcion es util si por ejemplo tienes todos los fotogramas de una animacion en un solo grafico, de esta forma podrias ir dibujando el fotograma que necesites ahorrando asi memoria al solo tener un grafico en memoria y ser mas rapido que ir accediendo a varios graficos independientes. Esto es una tecnica muy comun desde hace muchos años.

Espero haberte solucionado la duda :wink:

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

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

seba123neo

perdon mi ignorancia [EX3] pero no me funciona tu codigo ya que me tira como error en todos los puntos donde dice m_GFX.

¿que puede ser ,o tengo que hacer antes otra cosa?

PD:¿que pasa en esta pagina que en todos los foros hay post para paginas porno,no los pueden parar a estos tipos?

[EX3]

Me imagino que te dira algo como "se esperaba =". En Visual Basic 6.0, si usas parentesis para encerrar los argumentos en una llamada a una rutina o funcion el compilador da por echo siempre que esa llamada es una funcion y que debe devolver un resultado, de lo contrario o no se usan los parentesis o se añade la instruccion Call al principio de la llamada. Gracias a Dios esta estupidez la corrigieron en Visual Basic .NET.

Segun recuerdo este codigo lo escribi de cabeza en vez de copiarlo de una prueba que hice (no me preguntes por que). Acabo de corregir el codigo añadiendo las instrucciones Call y alguna leve correccion mas, y ya funciona correctamente.

En fin, un pequeño error por mi parte, gracias por avisarlo ;)

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

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

seba123neo

a gracias [EX3] ahora funciona perfecto,perfecto.
:o

Pilton88

EX3... hay algo que no entiendo. ¿Por que hay que definir las regiones dentro del ciclo si o si?
Saludos

PD: Disculpen la ignorancia, pero aun no entre a entender muy bien la logica en la programacion de Juegos.






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.