2016-09-14 1 views
0

Ich benutze SFML 2.3, um ein Spiel zu bauen, und ich habe ein extrem seltsames Problem. Ich habe zwei verschiedene Textur-Dateien, beide .png, aber einer von ihnen weigert sich, gezeichnet zu werden.Erstellen eines Spiels mit SFML und Textur weigert sich zu zeichnen

Ich bekomme keine Fehlermeldung in beide Richtungen. Aus irgendeinem Grund funktioniert TextureA und erscheint sehr gut, aber TextureB zeichnet nicht.

Ich stellte sicher, dass der Code korrekt ist, auf Caps überprüft, habe ich beide im selben Ordner, und alles versucht. Ich habe sogar versucht, TextureA anstelle von TextureB und TextureA einzutragen. Ich denke, dass das Problem mit der .png-Datei selbst sein kann, aber ich kann nicht herausfinden, was es ist.

Vielen Dank im Voraus!

+0

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

+2

Geben Sie Ihren Code in der Frage ein. Minimal Beispiel bitte - siehe [SSCCE] (http://sscce.org/) –

+0

Bitte werfen Sie einen Blick auf [mcve] (http://StackOverflow.com/Help/Mcve) –

Antwort

2

Es gibt einen Haken mit Texturen und SFML. Sprites geht davon aus, dass sie nicht Eigentümer der Texturressource sind. Dadurch müssen Sie sicherstellen, dass die Textur weiterhin vorhanden ist, wenn Sie versuchen zu zeichnen. Schauen Sie sich diesen Code hier:

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. 

Stattdessen versuchen Textur in einer Liste der geladenen Texturen zu halten. Sie könnten einen Vektor irgendwo behalten oder einfach Ihre Textur als statische Variable in die Funktion makeSprite setzen. Ich empfehle dringend nicht statische oder globale Variablen zu verwenden, da sie das erste Anzeichen für Designfehler sind, aber es ist immer noch eine gültige Lösung.

+0

idk warum aber das Hinzufügen funktionierte. Danke vielmals! – Zbadrawy

+2

@Zbadrawy Willst du wirklich gehen, ohne zu wissen, warum das Hinzufügen funktioniert? – user2296177

Verwandte Themen