Frage

Ich habe die Tutorials auf SFML verfolgt und versucht, eine Textur mit dem folgenden Code zu laden

sf::Texture texture;
if (!texture.loadFromFile("image.png"))
{
    return sf::Texture();
}

Dies kann die Textur nicht laden, das Sprite ist weiß, was nicht die Farbe meines Sprites ist.

War es hilfreich?

Lösung

Wie direkt aus dem Tutorial für Grafik-Sprite auf der SFML-Website genommen

"The loadFromFile function sometimes fails with no obvious reason. First, check the error message printed by SFML in the
standard output (check the console). If the message is unable to open file, make sure that the working directory (which is the
directory any file path will be interpreted relatively to) is what you think it is: when you run the application from the explorer, the
working directory is the executable folder, but when you launch your program from your IDE (Visual Studio, Code::Blocks, ...) the
working directory is sometimes set to the project directory instead. This can generally be changed easily in the project settings." 

Stellen Sie daher sicher, dass Ihr Bild zuerst richtig benannt ist, und stellen Sie nacheinander sicher, dass es sich im richtigen Ordner befindet, dh in Ihrem Arbeitsverzeichnis.

Auch wenn die Textur nicht lädt, anstatt ein leeres Sprite zurückzugeben, können Sie einen Fehler an die Konsole melden und dann eine Ausnahme ausgeben. Auf diese Weise wird Ihnen mitgeteilt, dass der Sprite nicht richtig geladen wird und das Programm die Ausnahme behandeln muss, da es sonst beendet wird. Auf diese Weise sollte kein Sprite im Spiel eine weiße Textur haben, sofern nicht beabsichtigt

Etwas wie das:

sf::Texture texture;
if (!texture.loadFromFile("image.png"))
{
    throw std::runtime_error("Could not load image.png");
}

Andere Tipps

Ein PNG laden? Machen Sie es 8bit. Andere PNG -Formate können geladen werden, werden jedoch immer als weiße Quadrate angezeigt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top