[英]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.