2017-04-09 11 views
0

このコードは、ゼロでないアルファチャンネルを持つテクスチャを作成します。XNA。テクスチャ2D。 SetData。間違ったアルファチャンネル

Texture2D result = new Texture2D(Program.MainThread.GraphicsDevice, (Int32)texture_size, (Int32)texture_size); 
Color[ ] colorData = new Color[result.Width * result.Height]; 
for (UInt32 x = 0; x < result.Width; x++) { 
    for (UInt32 y = 0; y < result.Height; y++) { 
     UInt32 index = (UInt32)(x * result.Width + y); 
     colorData[index] = new Color(1f, 0f, 0f, 0f); 
    } 
} 
result.SetData(colorData); 

色がやや透明になります。しかし、およそ0.5fの値になります。なぜこうなった?

P.S. Color.Transparentが正常に動作しますが、私はプログラム的に計算するアルファチャンネルを持って、例えば:

colorData[index] = new Color(1f, 0f, 0f, 1f - temp); 

答えて

0

XNAでテクスチャを透明にするために、私は次の操作を実行することは非常にうまく機能することを見つける:

Color color = new Color(r,g,b) * alpha; 

これが機能するかどうかを確認してください。

関連する問題