SFML неправильно отображает 8-битные растровые изображения - PullRequest
0 голосов
/ 12 марта 2019

Используя 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);

Но это работает неправильно с несколькими растровыми изображениями (файлы с расширением .bmp), которые отформатированы в 8 бит(256 цветов).Похоже, что библиотека SFML пытается прочитать ее в 16 или 32 битах.

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

Есть что-то, чтобы исправить эту ситуацию?


Обновление: Я открыл проблемные bmp-файлы с краской и просто сохранил их в том же формате (8 бит), после чего SFML смог правильно их отобразить.Но это всего лишь тест, и я не могу сделать это с помощью краски, мне нужно решение только для кода.

1 Ответ

0 голосов
/ 15 марта 2019

Если повторное сохранение файлов в другом приложении решает проблему, то мне кажется, что у вас есть специальный формат, который не поддерживается stb_image и, следовательно, не поддерживается SFML.

Я настоятельно рекомендую использовать формат PNG, поскольку он поддерживает надлежащую прозрачность и использует сжатие без потерь.

...