GraphicsDevice.Clear的颜色与绘制到屏幕上的颜色之间的关系

时间:2012-07-31 05:25:04

标签: c# xna kinect xna-4.0

我是XNA的初学者,正在尝试使用我的新kinect for windows,因此决定遵循教程:http://digitalerr0r.wordpress.com/2011/06/20/kinect-fundamentals-2-basic-programming/

做完这个之后,我注意到所有的颜色都是淡蓝色。例如,rgb 20,20,20的颜色看起来像深蓝色而不是深灰色。

我注意到GraphicsDevice.Clear()正在使用Color.CornflowerBlue。我尝试将其更改为Color.Black,确定所有的东西现在都是黑色的。

GraphicsDevice.Clear(颜色)与屏幕上绘制的颜色之间的关系是什么?

这是我的绘图功能:

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.Black);

    spriteBatch.Begin();
    spriteBatch.Draw(kinectRGBVideo, new Rectangle(0, 0, 640, 480), Color.White);
    spriteBatch.DrawString(font, connectedStatus, new Vector2(20, 80), Color.Black);
    spriteBatch.End();

    base.Draw(gameTime);
}

1 个答案:

答案 0 :(得分:3)

(根据要求,以答案的形式。)

尝试在调用spriteBatch.Begin()方法时更改BlendState。这决定了颜色在彼此上方绘制时的混合方式。

我不确定为什么BlendState.Opaque将文本显示为块,但我的猜测是这种混合状态不支持alpha。因此,文本周围的透明区域转动,不透明,使文本看起来像一个矩形。我现在没有工具来检查这个猜测,所以我可以验证它。