Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: Endilicam en 30 de Noviembre de 2007, 04:30:06 PM

Título: Cambiar color de un Texture
Publicado por: Endilicam en 30 de Noviembre de 2007, 04:30:06 PM
Buenas estoy haciendo un jueguecillo en C# y 2D y tengo una imagen cargada en un objeto Texture, pués me gustaría por ejemplo cambiar todos los píxeles de color rojo a color azul, es decir, todos los píxeles con color X cambiarlos a color Y.

Gracias :).
Título: Cambiar color de un Texture
Publicado por: Martinez en 30 de Noviembre de 2007, 05:06:54 PM
Supongo que lo estas haciendo en XNA.


Texture2D texture;  // Textura
// Carga la textura de dnd sea

//....
Color x=new Color(255,0,0);  // Rojo
Color y=new Color(0,0,255);  // Azul

// Array de Color
Color[] pixels = new Color[texture.Width * texture.Height];

// Obtenemos los pixels
texture.GetData(pixels);

// Recorremos el array
for(int i=0; i<pixels.Length; i++)
  if(pixels[i]==x)
      pixels[i]=y;

// Ponemos los pixels en la textura
texture.SetData(pixels);



No lo he probado pero deberia funcionar. Fijate que el array es de una sola dimension.
Título: Cambiar color de un Texture
Publicado por: Endilicam en 03 de Diciembre de 2007, 05:29:58 PM
Gracias por la respuesta pero no uso XNA, uso DirectX 9 con C#, he mirado algún método parecido al GetData del Texture2D y no he encontrado nada :/, así que sigo esperando ayuda ;).
Título: Cambiar color de un Texture
Publicado por: BeRSeRKeR en 03 de Diciembre de 2007, 06:14:12 PM
Hola, échale un vistazo a los métodos LockRectangle/Unlock de Texture.

Aquí (http://www.gamedev.net/community/forums/topic.asp?topic_id=327935) tienes un post en GameDev con información que te podría ser útil.

Saludos.
Título: Cambiar color de un Texture
Publicado por: Endilicam en 05 de Diciembre de 2007, 01:38:56 PM
Muchas gracias, con un poco de ese post y algo más de investigación he conseguido lo que quería, lo dicho gracias :).