Bug en la funcion BLUR dentro de LOOP

Started by FreeYourMind, April 14, 2011, 03:20:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Hola, pienso que es un bug, la funcion BLUR si la llamamos para asignar un grafico dentro de un LOOP, devuelve siempre el grafico 1, aunque le pasemos otro id...

en el Main tenemos:

blur_letra_menu(FPG_Principal, 642, 160, 120);


que es esta:


PROCESS blur_grafico(file, grafico, x, y)
PRIVATE
intensidade = 3;

BEGIN
  z = -4;
  graph = grafico; //blur(file, grafico, intensidade);
  say(grafico);
  say(graph);
  LOOP
     //graph = blur(file, grafico, intensidade);
   graph = blur(file, 642, intensidade); // Bug Bennu ? Pinta siempre el grafico 1 el cual no asgnamos en ningun sitio
   //say(file);
   //say(grafico);

    FRAME (30); // Lento
  END
END

SplinterGU

#1
quien te dijo que blur te devuelve un grafico???!!!!

blur trabaja sobre el mismo grafico que le pasas de parametro...

el bug esta en no leer la wiki o documentacion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

xDDDDDDDDDDDDDDDDDD

Y ya que estamos,en la wiki donde esta la info de esta funcion:

FILTER(INTEGER, INTEGER, POINTER)

FreeYourMind

#3
Vale, he corregido el ejemplo, mi pregunta es, porque despues de tener intensidade = 0, que se corresponde con BLUR_NORMAL, en los siguientes frames el grafico continua siendo afectado hasta que desaparece por completo ?

(Por cierto os estoy pasando un ejemplo sencillo y cojonudo de efectos :D)

PROCESS blur_grafico(file, grafico, x, y)
PRIVATE
intensidade = 3;

BEGIN
 z = -4;
 graph = grafico;
 blur(file, grafico, intensidade);

 LOOP
 
   intensidade--;
IF (intensidade <= 0) intensidade = 0; END

blur(file, grafico, intensidade);

say(intensidade);

   FRAME (600); // Lento
 END
END

SplinterGU

y... partiendo de la base que el grafico source es el mismo que se modifica y si pones el efecto en un loop, es logico que se vaya siendo afectado hasta desaparecer...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Claro, que tonto soy, me estan afectando tantas horas delante del ordenador, estoy seriamente pensando en dejarlo xD

Y un ejemplo de FILTER donde lo puedo encontrar ?

No se puede aplicar efectos de blur a fuentes en loop tambien ? Las ttf lo permitian ? (a ver si josebita se pronuncia)

FreeYourMind

Tengo un problema/duda:

Como restauro de nuevo el grafico en memoria a su estado original despues de aplicarle el efecto blur (en un proceso que despues ya no existe), de forma a poder utilizar ese gráfico despúes en otros sitios del programa ?
(sin la solución de descargar y volver a cargar el mapa del fpg)

SplinterGU

no necesitas descargarlo, con cargarlo, ya te basta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Pero lo voy a tener que cargar mas veces ? No hay forma de resetear su estado ?

SplinterGU

te lo respondo con una pregunta.

si esculpis (no confundir con escupir) una piedra con un cincel, luego de finalizar tu trabajo, podes volver a restaurar la pierda a su estado original?

porque eso es exactamente lo que haces con blur, esculpir el mapa.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Para eso, mejor que clones el mapa y le hagas el blur al clon.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.

;) :D

sobraba el comentario me parece... :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Siguiendo esa filosofia Splinter ya ni necesitamos pedirte nada mas para Bennu  ;D

Y clonando el mapa, imaginate que vuelvo a poner el proceso de nuevo en el juego, tengo que estar siempre creando nuevos mapas xDDD No me queda otra que separar esos graficos en un fpg chiquito y cargar/descargar en cada modificacion de blur...

Se agradeceria un ejemplo mister Drumpi  :D

SplinterGU

tienes miles de formas de hacerlo, lo importante es que si no entendes el comportamiento del blur (y cualquier otra de la libreria effects) vas a estar preguntando estas cosas sin sentido...

tu pregunta es lo mismo que preguntar, "como hago para volver a tener el grafico original despues de hacer un UNLOAD_MAP o DRAWING_MAP+MAP o un MAP_PUT, etc?" es exactamente lo mismo, una vez que alteras el grafico original no hay forma de restaurarlo sino lo preservaste antes o si no lo volves a cargar, y no necesitas tener el original 100 mil veces guardado, con guardarlo 1 sola vez y clonarlo las que necesites es mas que suficiente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Quote from: SplinterGU on April 22, 2011, 05:27:03 PM
Quote from: Drumpi on April 22, 2011, 05:05:39 PM
Para eso, mejor que clones el mapa y le hagas el blur al clon.

;) :D

sobraba el comentario me parece... :D

Vistas las preguntas que se hacen últimamente, creo que la aclaración de que existe una función para CLONAR mapas no sobra :P

Free, si tienes cargado el FPG, y el proceso lo usa, significa que has guardado el ID del FPG en una variable ¿Es que cargas el FPG en ese proceso? En ese caso te recomiendo que hagas la carga y descargas de gráficos, así como de sonidos y demás, en el proceso "padre", entendiendo como "padre" al proceso que controla la acción de los demás procesos. Puede ser el main, o el proceso "juego" o el proceso "jugar_nivel".

Y al igual que cargas el FPG en una variable global, puedes crear el clon del gráfico en una variable global. Recuerdo que no es necesario asignarla a un FPG de memoria, ya que los mapas creados durante la ejecución pertenecen al FPG cero, y tienen IDs superiores al 1000 (pero no se sabe cual).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)