2016-09-14 20 views
0

私はSFML 2.3を使ってゲームを構築していますが、私は非常に奇妙な問題があります。私は2つの異なるテクスチャファイルを持っています。どちらも.pngですが、そのうちの1つは描画されません。SFMLでテクスチャを構築してテクスチャの描画を拒否する

どちらのエラーメッセージも表示されません。何らかの理由でTextureAが機能していて、うまく表示されますが、TextureBは描画されません。

私はコードが正しいことを確認し、大文字を確認しました。私は両方とも同じフォルダにあり、すべてを試しました。 私はTextureBの代わりにTextureAを入力しようとしましたが、TextureAは上手く描かれました。私は問題が.pngファイル自体にあるかもしれないと思うが、私はそれが何であるか把握できない。

ありがとうございます!

+0

http://www.sfml-dev.org/tutorials/2.4/graphics-sprite.php –

+2

質問にあなたのコードを投稿してください。最小の例をご覧ください - [SSCCE](http://sscce.org/) –

+0

[mcve](http://stackoverflow.com/help/mcve) –

答えて

2

テクスチャとSFMLのキャッチがあります。スプライトは、それらがテクスチャリソースの所有者ではないとみなします。それによって、描画しようとするときにテクスチャがまだ存在することを保証する必要があります。ここでこのコードを見てください:

sf::Sprite makeSprite() { 
    sf::Texture tex; 
    tex.loadFromFile("someTexture.png"); 

    sf::Sprite sprite; 

    sprite.setTexture(tex); 

    // You indeed return the sprite, but tex is going out of scope here. 
    return sprite; 
} 

// further code will draw the sprite as a white square. 

代わりに、読み込まれたテクスチャのリストにテクスチャを保存してみてください。あなたはベクトルをどこかに置くことができます。または、関数makeSpriteに静的変数としてテクスチャを置きます。 は、設計上の欠陥の最初の兆候であるため、静的変数またはグローバル変数を使用することを強くお勧めしますが、依然として有効な解決策です。

+0

idkを見てください。どうもありがとう! – Zbadrawy

+2

@Zbadrawy本当に追加した理由を知らずに本当に行きたいですか? – user2296177

関連する問題