2012-03-11 2 views
0

Comment définir chaque pixel non transparent dans un Texture2D arbitraire pour dire Color.White temporairement?C# XNA Comment définir un Texture2D sur une seule couleur?

+1

Voulez-vous dire que vous voulez réellement changer la texture? Ou simplement dessiner comme blanc? Si vous dessinez, vous pouvez utiliser un shader, [consultez cette réponse] (http://stackoverflow.com/questions/9598832/make-a-sprite-white-in-xna-4-0-w-simple- shader-alpha-issues/9600620 # 9600620), notez qu'il fait référence à un shader externe, mais ce n'est pas trop compliqué. –

Répondre

1

Juste une boucle conditionnelle? Ce ne sera pas la syntaxe exacte, mais quelque chose entre les lignes de:

Texture2D texture = /*copy the texture you want to change*/; 
Pixel pixel;/*note it's really inexact, so don't mind it, the idea is to show how it would be done*/ 
for(int i=0; i<texture.width; i++) 
{ 
    for(int j=0; j<texture.height; j++) 
    { 
    pixel = texture.GetPixel(i, j); 
    if(pixel.Color.A==1) 
     pixel.Color = Color.White; 
    } 
} 

Je ne peux insister assez sur ce point: ne vous contentez pas de copier coller ce dans, ce qui est similaire à pseudocode, juste là pour montrer comment il serait fait.

1

ai pas testé, mais hors de ma tête, vous pourriez faire quelque chose comme ceci:

Color[] az = Enumerable.Range(0, 100).Select(i => Color.White).ToArray(); 
    Texture2D texture = new Texture2D(GameRef.GraphicsDevice, 10, 10, false, SurfaceFormat.Color); 
    texture.SetData(az); 

Ce premier crée un tableau avec 100 éléments, et il remplit de Color.White Ensuite, en utilisant la SetData, nous le remplissons avec le colorarray.

Assurez-vous que le tableau est la même taille que la taille de la texture (hauteur * largeur)

+0

OP ne voulait pas définir * chaque * pixel, seulement les pixels opaques – MattDavey

Questions connexes