使用MonoGame将游戏移植到OS X:奇怪的颜色问题

4
我在OS X上使用MonoDevelop和MonoGame运行我的游戏项目,但游戏中的颜色非常混乱。例如,黄色显示为蓝色。这可能是什么原因?我的游戏是从XNA移植过来的。Android和iOS移植版没有这个颜色问题。
所有颜色都是错误的。应该显示的颜色实际上显示为其他颜色。例如,黄色显示为蓝色,蓝色显示为橙色等。除此之外,图形显示正常。
我只是直接将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不应该是正确的设置,但是当我没有设置它时,我会得到这些真的很糟糕的轮廓和白色块围绕着那些不应该存在的图像。

1
听起来像是RGB与BGR的问题(红色和蓝色通道被交换)。如果这是MonoGame中的一个错误,那也不会让我感到惊讶。另外:BlendState.Alpha是首选 - 但它需要您的内容进行预乘(这是由XNA内容管道默认完成的)。 - Andrew Russell
嗨,David,你在你的MacOS项目中使用xnbs还是本地位图(png、jpeg等)? - Dominique
1
确保您正在构建最新版本的Monogame开发分支,或者将它们合并到您的分支中。我知道在这个领域有几个修复措施是在过去几个月中发生的。 - James
1个回答

0

这个问题在 RGB -> BGR 纠正之前或之后被提出,无论哪种情况,它都已经得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接