2

私はSFMLのチュートリアルに従っており、次のコードを使用してテクスチャをロードしようとしました

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

これはテクスチャの読み込みに失敗します。スプライトは白で、スプライトの色ではありません..

4

2 に答える 2

1

SFML Web サイトのグラフィック スプライト チュートリアルから直接取得したもの

"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." 

したがって、最初にイメージに正しい名前が付けられていることを確認し、次にそれが正しいフォルダー、つまり作業ディレクトリにあることを確認してください。

また、空のスプライトを返す代わりにテクスチャの読み込みに失敗した場合は、コンソールにエラーを報告してから例外をスローすることができます。このようにして、スプライトが正しくロードされないことが通知され、プログラムは例外を処理する必要があります。そうしないと、プログラムは終了します。このようにして、意図的な場合を除き、ゲーム内のスプライトは白いテクスチャを持つべきではありません

このようなもの:

sf::Texture texture;
if (!texture.loadFromFile("image.png"))
{
    throw std::runtime_error("Could not load image.png");
}
于 2013-11-08T09:38:24.697 に答える
-1

PNG をロードしていますか? 8bitにしてください。他の png 形式を読み込むことはできますが、常に白い四角で表示されます。

于 2013-11-08T09:42:38.383 に答える