【发布时间】:2019-08-02 20:41:13
【问题描述】:
使用 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 位读取它。
有什么办法可以解决这种情况吗?
更新:我已经打开了有问题的 bmp 文件,并以相同的格式(8 位)保存它们,然后 SFML 能够正确显示这些文件。但这只是一个测试,我不能用paint来做,我需要一个纯代码的解决方案。
【问题讨论】:
-
您使用的是什么版本的 SFML.NET?我们正在使用 stb_image 加载图像。根据文档,它支持“BMP non-1bpp,non-RLE”。
-
我正在使用 SFML 2.4.0,安装的 nuget 包名为“Graphnode.SFML.Net”,它是“SFML.Net 2.4 的分支,包括 x86 和 x64 版本的 CSFML”由 Laurent Gomila 和 Zachariah Brown 创建。
-
我们最近发布了第一组官方的 SFML.Net NuGet 包,它们基于 SFML 2.5。可能想尝试一下,但我想它不会帮助您解决手头的问题:nuget.org/packages/SFML.Net