SFML无法正确呈现8位位图

时间:2019-03-12 11:28:45

标签: c# bitmap rendering sfml

使用SFML,我可以使用以下代码来呈现任何图片格式:

        SFML.Graphics.Image     img = new SFML.Graphics.Image("pic.bmp");
        SFML.Graphics.Texture   tex = new Texture(img);
        SFML.Graphics.Sprite    sprite = new Sprite(tex);
        renderWindow.Draw(sprite);

但是,这对于某些以8位(256种颜色)格式设置的位图(扩展名为.bmp的文件)无法正常工作。看起来SFML库正在尝试以16位或32位读取它。

On the left is the original picture, on the right the one that failed to render.

有什么办法可以解决这种情况?


更新:我用油漆打开了有问题的bmp文件,并以相同的格式(8位)保存了它们,然后SFML能够正确显示这些文件。但这只是一个测试,我不能使用油漆来做,我需要一个仅代码解决方案。

1 个答案:

答案 0 :(得分:0)

如果再次将文件保存在其他应用程序中解决了此问题,那么听起来stb_image不支持SFML,因此不支持这种特殊格式。

我强烈建议使用PNG格式,因为它支持适当的透明度并使用无损压缩。