Cambiar colores de una imagen

Started by Gabysantof, November 23, 2018, 08:58:27 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Gabysantof

Hola. Buenos dias. Mi nombre es Gabriel. Soy de Argentina. Hace poco tiempo comence a desarrollar en bennu. Estoy haciendo un juego de naves. Qusiera saber si se puede cambiar el color de las naves q tengo cargadas en mi archivo fpg de manera de poder contar con mas enemigos que parezcan diferentes pero usando los mismos sprites. Se entiende la idea? Muchas gracias!!!!

darío

Si tu archivo FPG es de 8 bits, puedes cambiar los colores de la paleta desde BennuGD usando color_set:

http://wiki.bennugd.org/index.php?title=Pal_set
Si lo que quieres es tener varios FPG con distintas paletas, Smart FPG Editor también te permite hacer esas modificationes (video: https://www.youtube.com/watch?v=Flv-RiA-7DM)

https://bitbucket.org/dacucar/smart-fpg-editor/src/master/
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

panreyes

Si trabajas en 16 o 32 bits, puedes usar rgb_scale y esta función:

Function colorea_fpg(file, float r, float g, float b);
Private
new_file;
i;
Begin
new_file=fpg_new();
from i=1 to 999;
if(map_exists(file,i))
fpg_add(new_file,i,file,i);
rgbscale(new_file,i,r,g,b);
end
end
return new_file;
End

Gabysantof

Muchas gracias! estoy tratando de usar la función... pero algo debo estar haciendo mal, estoy tratando de hacer una prueba dibujando la misma imagen, una vez sin "colorear" y luego "coloreada", pero se me muestra exactamente igual. Dejo el código
Para esta prueba estoy usando un fpg de 1 sola imagen de 32bits. Lo dejo adjunto!
Muchísimas gracias por la ayuda!

IMPORT "mod_say";
IMPORT "mod_debug";
IMPORT "mod_map";
IMPORT "mod_effects";
IMPORT "mod_proc";
IMPORT "mod_grproc";
IMPORT "mod_map";
IMPORT "mod_key";
IMPORT "mod_video";
IMPORT "mod_screen";

global


fichero;
fichero2;
end;
process main()
begin
 

  set_mode(1024,768,32);                      
  Set_fps(55,1);
 
  fichero = load_fpg("main.fpg");
  fichero2= colorea_fpg(fichero,0.3,0.59,0.11);
 
  graficar(fichero,100,100);   
  graficar(fichero2,300,300);   
  loop
    frame;   
  end 
 
end;


process graficar(paramfichero,x,y)
begin
FILE = paramFichero;
graph = 1;
loop   
   frame;
end
end

function colorea_fpg(file, float r, float g, float b);
private
   new_file;
   i;
begin
   new_file=fpg_new();
   from i=1 to 999;
      if(map_exists(file,i))
         fpg_add(new_file,i,file,i);
         rgbscale(new_file,i,r,g,b);
      end
   end
   return new_file;
end

panreyes

Creo que tendrás que poner la función antes que la llamada a la función para que te funcionen bien los floats :)

Gabysantof

Finalmente lo hice funcionar. No funciona con imágenes de 32 bits de profundidad. Lo pase a 16 y funcionó ok!