Hola!
(Antes de nada,decir que ya he publicado éste mensaje en mi tema anterior (VB no ha muerto...) pero he decidido publicarlo mejor como un nuevo tema, por si no lo veíais. Para la proxima vez, ¿Cuales son las normas del foro al respecto?)
Mucha gracias por responder tan rápido, así da gusto.
Efectivamente trabajo con .NET (Concretamente con la versión 3.5.Empeze con 4.0,pero he decidido usar la anterior para tener mayor compatibilidad).
Haber si me podeis ayudar con algunos problemillas que tengo:
He empezado a hacer pruebas para el desarrollo del "SimCity" que comenté. La idea es que sea en perspectiva isométrica.
Lo que he hecho es crear algunas estructuras para manejar elementos en el espacio (Punto3D,Vector3D,etc),y luego mediante una transformación dibujo dichos elementos en isométrico.
Para generar un escenario guardo en una matriz los valores tridimensionales de los vértices de la malla. Por ejemplo,en un escenario de 100x100 sería así:
Dim Malla(99,99) as Punto3D
For i As Integer = 0 To 99
For j As Integer = 0 To 99
Malla(i, j).X = i * 10
Malla(i, j).Y = j * 10 'Así la celda tiene 10 pixels de ancho y de alto
Malla(i, j).Z = 0
Next
Next
Y luego para dibujarlo obtengo sus representaciones y uso el método DRAW_Trapezoid:
Dim Vertices(3) as Vertex
for i as integer=0 to 99
for j as integer=0 to 99
Vertices(0).X=Matriz(i,j).RepresentacionIsometrica.X
Vertices(0).Y=Matriz(i,j).RepresentacionIsometrica.Y
Vertices(0).Color=Color.Blue.ToArgb
..... Así con los cuatro vertices
next
next
Graphics.DRAW_Trapezoid(Vertices)
Vi en la documentación el tema de los RenderTarget y me pareció perfecto: Así solo recalcula cuando hago zoom,y el movimiento de cámara lo hago dibujando la textura del RenderTarget en un lado u otro.
Establecí el tamaño de éste a 2048x2048. Mi problema es que al hacer zoom hay veces que el tamaño de la textura es menor que el del mapa dibujado. Como el movimiento de la cámara solo cambia el centro de dibujo del buffer principal, la textura sale cortada.
Se os ocurre algún método para solucionarlo?