1

我是 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(color) 和绘制到屏幕上的颜色有什么关系?

这是我的绘图功能:

/// <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);
}
4

1 回答 1

3

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

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

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

于 2012-07-31T06:54:40.787 回答