2016-09-14 80 views
0

我使用SFML 2.3構建遊戲,並且我有一個非常奇怪的問題。我有兩個不同的紋理文件,都是.png,但其中一個拒絕繪製。使用SFML和紋理構建遊戲拒絕繪製

我沒有收到任何錯誤消息。出於某種原因,TextureA的作品看起來很好,但TextureB沒有繪製。

我確保代碼是正確的,檢查大寫字母,我都在同一個文件夾,並嘗試了一切。 我甚至嘗試過輸入TextureA來代替TextureB,並且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捕捉。 Sprites假定他們不是紋理資源的所有者。由此,您必須確保在您嘗試繪製時紋理仍然存在。看看這裏的代碼:

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