绘制到屏幕上
我是一个初学者到XNA和我与我的Windows Kinect的新尝试于是决定遵循教程: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);
}
尝试在spriteBatch.Begin()方法的调用改变BlendState。这决定了如何将颜色混合在一起绘制在彼此之上。
我不确定为什么BlendState.Opaque
显示文本为块,但我的猜测是这种混合状态不支持alpha。因此,文本周围的透明区域变得不透明,使文本看起来像一个矩形。我现在没有工具来检查这个猜测,所以我可以验证它。
这个猜测很有意义,很可能是原因。感谢你的回答! – 2012-07-31 07:56:32
你说“不透明”。这正是发生的情况。这对于绘制3D模型非常有用 - 对于精灵来说不是那么重要。 – 2012-07-31 14:06:52
尝试在[spriteBatch.Begin()]调用时更改[BlendState](http://msdn.microsoft.com/zh-cn/library/microsoft.xna.framework.graphics.blendstate_members.aspx) (http://msdn.microsoft.com/en-us/library/ff433698.aspx)方法。这决定了如何将颜色混合在一起绘制在彼此之上。 – 2012-07-31 06:28:16
不错!它的工作非常好,将其改为答案,我会接受它。哦,顺便说一下,你知道为什么使用BlendState.Opaque会导致文本显示为块。 – 2012-07-31 06:48:41