C# GraphicsDevice.Clear与x27之间的关系;s颜色和绘制到屏幕上的颜色

C# GraphicsDevice.Clear与x27之间的关系;s颜色和绘制到屏幕上的颜色,c#,xna,kinect,xna-4.0,C#,Xna,Kinect,Xna 4.0,我是XNA的初学者,正在试用我的新kinect for windows,因此决定遵循以下教程: 做了这个之后,我注意到所有的颜色都是浅蓝色的。例如,rgb 20,20,20的颜色将看起来像深蓝色,而不是深灰色 我注意到GraphicsDevice.Clear()正在使用Color.CornflowerBlue。我试着把它改成Color.Black,果然所有的东西都变成了黑色 GraphicsDevice.Clear(颜色)和绘制到屏幕上的颜色之间有什么关系 这是我的绘图功能: /// <s

我是XNA的初学者,正在试用我的新kinect for windows,因此决定遵循以下教程:

做了这个之后,我注意到所有的颜色都是浅蓝色的。例如,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);
}
//
///这就是所谓的比赛应该平局的时候。
/// 
///提供计时值的快照。
受保护覆盖无效绘制(游戏时间游戏时间)
{
图形设备。清晰(颜色。黑色);
spriteBatch.Begin();
spriteBatch.Draw(KineTrGBVideo,新矩形(0,0,640,480),颜色为白色);
spriteBatch.DrawString(字体,连接状态,新矢量2(20,80),颜色.黑色);
spriteBatch.End();
基础。抽签(游戏时间);
}
(根据要求,以答案的形式。)

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


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

尝试在调用该方法时更改。这说明了当颜色在彼此上方绘制时如何混合。很好!它工作得很好,把它改成一个答案,我会接受的。哦,顺便问一下,你知道为什么使用BlendState.不透明会导致文本显示为块。这种猜测很有道理,很可能就是原因。谢谢你的回答!关于
不透明
,你是对的。这正是正在发生的事情。它对于绘制3D模型很有用,但对于精灵来说就不那么有用了。