Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Pregunta sobre Rendertargets

Iniciado por CocoMestah, 27 de Enero de 2008, 08:53:42 PM

« anterior - próximo »

CocoMestah

Hola!

Estoy intentando hacer un 'listbox' dibujandolo con m_gfx y creo que voy bien encaminado, pero igualmente, me gustaria que comentarais ideas alternativas... aya voy!

La idea es crear visualmente un 'listbox' como los que lleva VB, pero dibujándolo todo nosotros. Según he probado con los comandos RenderTarget (create, open, close) he podido hacer el 'Contenedor del Listbox' y los datos de dentro (mirar dibujo de abajo, que lo clarifica un poco)


Ahora, mi dilema está en que cuando creamos los mapas en donde dibujar, como bien dice EX3, tienen que ser potencia de 2 (64x64,256x256,etc) por lo tanto, tengo que crear un 'listbox' de 256x256 (por ejemplo) y no puedo crear de 120x60 por ejemplo.

¿Alguien tiene alguna otra idea?
(La de dibujar el texto directamente no me vale, ya lo probé, y con 70 líneas de texto me caen los FPS en picado, por lo que casi que no)

:D  ¡gracias a todos de antemano!

[EX3]

Teniendo en cuenta que el render target mantiene su base transparente, no tendrias que dibujar sobre toda la superficie, por lo que podrias perfectamente pintar un area irregular de 160 de ancho dentro del render target.

Si el render target de dx_lib32 funcionara como es debido esta seria una buena forma de sacarle provecho. La verdad que yo para un cuadro de lista simple, con lo minimo, pensaria algo mas liviano y sin render targets.

Supongamos que tenemos un array E con los elementos que contiene la lista, una variable A para el indice del primer elemento visible de la lista y una variable S que indica el indice del elemento seleccionado. El cuadro de lista lo representamos mediante una simple caja o rectangulo de n elementos visibles. Tomando A como referencia para el dibujado de elementos, y el numero de elementos del array (N), simplemente tendrias que dibujar los elementos a partir de A que entren en el area del cuadro de lista:

La lista contiene 6 indices (0-5) y el cuadro solo muestra un total de 4.
Cada elemento o cadena de texto mide C pixeles.

for i = A to 3
   if i > N then exit for ' Si llegamos al final del array salimos del bucle.
   Dibujar texto(E(i), X + (C * i), Y) ' X,Y coordenadas 0,0 del area del cuadro de lista.
next i

A = 0 ' El primer elemento visible es el primero del array (indice 0)

++++++++++++++
+(0) Manzana +
+(1) Pera    +
+(2) Aguacate+
+(3) Melon   +
++++++++++++++

A = 3 ' El primer elemento visible es el 4º (indice 3)

++++++++++++++
+(3) Melon   +
+(4) Lima    +
+(5) Fresa   +
+            +
++++++++++++++

A la hora de dibujar el elemento compruebas si es el elemento seleccionado y le aplicas el efecto que gustes para resaltarlo, un rectangulo de color o un color distinto al del resto de elementos. Igual, de esta forma yo lo veria mas facil para situar las cajas de colision que identificarian cada elemento visible de la lista a la hora de hacer clic sobre el (indice del elemento visible + A = elemento del array).

Vagamente y sin detallar mas, esta seria la forma que yo intentaria usar para hacer un cuadro de lista. Luego añadirle un scroll seria mas o menos sencillo, un cuadro para subir nivel y otro para bajar (no intentaria hacer el slider del scroll xD)

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

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

CocoMestah

Gracias por publicar, pero igualmente no me serviría este sistema.
Olvidé mencionar arriba que el comportamiento sería como el de un ListBox, pero mas bien sería rollo una especie de 'DataGrid' con varios campos, que funcionase como un listbox.

Al dibujar el texto directamente (70 líneas x 5 columnas) se me petan los FPS y bajo de 210fps a 7fps, entonces parece que este ejecutando un programa en mi antiguo Amstrad  :lol:

Como el problema lo tengo con que quiero que la 'Tabla-listbox' quede dentro de una ventana concreta, y al moverlo verticalmente, que no quede por 'debajo' de los botones y imágenes que hay en ese mismo momento mostrándose, al final creo que dibujare un cuadrado negro que tape el resto de la tabla que no se tenga de visualizar.

Gracias! y Salu2 tambien.

[EX3]

El render de texto TTF de Direct3D es harto lento :? Siendo eso lo que buscas hacer entonces tienes que usar RenderTargets para evitar bajada de rendimiento.

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

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






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.