2012-03-11 11 views
0

任意のTexture2Dの非透明ピクセルをすべて設定して、Color.Whiteを一時的に表示させるにはどうすればよいですか?C#XNA Texture2Dを単一の色に設定するにはどうすればよいですか?

+1

はあなたが実際にテクスチャを変更したい意味するかと配列が同じサイズであることを確認してください?それとも、白く描くのですか?あなたが描画している場合は、シェーダを使用することができます[この答えをチェックアウト](http://stackoverflow.com/questions/9598832/make-a-sprite-white-in-xna-4-0-w-simple- shader-alpha-issues/9600620#9600620)、それは外部シェーダを参照していることに注意してください。しかしそれほど複雑ではありません。 –

答えて

1

ただ条件付きループですか?ただ、これを内貼り付けるコピーしないでください、これはどのようにそれを示すためにだけ存在し、擬似コードのようになります。私は十分にこれを強調することはできません

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; 
    } 
} 

:これは正確にそれのための構文が、行の中で何かができません行なわれるだろう。

1

はこれをテストしていませんが、私の頭の外に、あなたはこのような何かを行うことができます:

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); 

これは、最初の100個の要素を持つ配列を作成し、使用後Color.White でそれを埋めますSetData、colorArrayで塗りつぶします。

ジャストテクスチャサイズ(高さ*幅)

+0

OPはすべての*ピクセルを設定したくない、ちょうど不透明なものを設定する – MattDavey

関連する問題