使用框架绘制精灵时的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;
后得到free 17=],因此你的 spr
现在有一个无效的纹理(已经被破坏),因此它只绘制白色。您想要的是通过 (const) 引用传递 texTxtBox
本身,并且您必须确保 texTxtBox
超出 sprTest
.
我正在制作一个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;
后得到free 17=],因此你的 spr
现在有一个无效的纹理(已经被破坏),因此它只绘制白色。您想要的是通过 (const) 引用传递 texTxtBox
本身,并且您必须确保 texTxtBox
超出 sprTest
.