我在OS X上使用MonoDevelop和MonoGame运行我的游戏项目,但游戏中的颜色非常混乱。例如,黄色显示为蓝色。这可能是什么原因?我的游戏是从XNA移植过来的。Android和iOS移植版没有这个颜色问题。
所有颜色都是错误的。应该显示的颜色实际上显示为其他颜色。例如,黄色显示为蓝色,蓝色显示为橙色等。除此之外,图形显示正常。
我只是直接将SpriteBatch渲染到缓冲区,没有运行任何效果或后处理。我的
当我绘制纹理时,例如像这样绘制:
我尝试用.xnb文件替换所有的.png文件,游戏仍然可以运行,但我仍然得到相同的错误颜色。
我已经意识到
所有颜色都是错误的。应该显示的颜色实际上显示为其他颜色。例如,黄色显示为蓝色,蓝色显示为橙色等。除此之外,图形显示正常。
我只是直接将SpriteBatch渲染到缓冲区,没有运行任何效果或后处理。我的
Begin()
代码如下:spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.LinearClamp, DepthStencilState.Default, RasterizerState.CullNone, null, SpriteScale);
当我绘制纹理时,例如像这样绘制:
spriteBatch.Draw(texture, new Vector2(0f, 0f), Color.White);
我尝试用.xnb文件替换所有的.png文件,游戏仍然可以运行,但我仍然得到相同的错误颜色。
我已经意识到
BlendState.NonPremultiplied
不应该是正确的设置,但是当我没有设置它时,我会得到这些真的很糟糕的轮廓和白色块围绕着那些不应该存在的图像。
BlendState.Alpha
是首选 - 但它需要您的内容进行预乘(这是由XNA内容管道默认完成的)。 - Andrew Russell