簡體   English   中英

使用框架繪制精靈時的C ++ Sfml白色方塊

[英]C++ Sfml white square when drawing sprite with framework

我正在制作一個sfml框架,該框架中有一個makeSpr()函數。 該函數具有在其內部創建精靈的常規代碼,但是繪制了一個白色正方形。 我在另一個精靈上使用了紋理,該精靈未使用該函數繪制。 它正常繪制。

makeSpr()函數:

sf::Sprite makeSpr(sf::Texture tex, int x,int y, int sizeX,int sixeY) {
    sf::Sprite spr;
    spr.setTexture(tex);
    spr.setScale(sizeX,sizeY);
    spr.setPosition(x,y);
    return spr;
}

使用makeSpr將其分配給Sprite():

sf::Sprite sprTest = makeSpr(texTxtBox, 100,100, 5,5);

在window.clear()和window.diplay()之間的主循環中繪制精靈

window.draw(sprTest);

如果我在沒有框架的情況下正常繪制紋理,則該紋理效果很好。

sf::Sprite sprTxtBox;
sprTxtBox.setTexture(texTxtBox);

通過const引用傳遞tex

sf::Sprite makeSpr(const sf::Texture& tex, int x,int y, int sizeX,int sixeY)

當您編寫sf::Sprite makeSpr(sf::Texture tex, ...並調用sf::Sprite sprTest = makeSpr(texTxtBox, ...tex實際上是texTxtBox的副本,並且在return spr;之后會免費return spr;makeSpr ,因此您的spr現在具有無效的紋理(已被破壞),因此僅繪制白色,您要通過(const)引用傳遞texTxtBox本身,並且必須確保texTxtBox不再使用sprTest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM