将sf :: Texture作为参数传递给函数时,为什么我的SFML总是崩溃

时间:2019-05-06 21:09:02

标签: c++ sfml

当我尝试将Texture作为参数传递给函数,然后运行该程序时,我在运行它时立即在窗口上收到“ Program.exe 已停止工作”消息

我可以在函数内部创建纹理,然后纹理将起作用,但是这会破坏函数末尾的纹理,所以我得到的只是一个白框。

void create_sprite(sf::Texture texty, float lenScale, float widScale, int houseNum, int fieldNum){
    sf::Sprite* spritey = new sf::Sprite(texty);
    spritey -> setScale(lenScale, widScale);
    spritey -> setPosition(fieldWidCoor[houseNum-1][fieldNum-1], fieldLenCoor[houseNum-1][fieldNum-1]);
    houseList.push_back(*spritey);
}

Then in main{}

    sf::Texture grassTex;
    grassTex.loadFromFile("images/field-grass.png");
    create_sprite(grassTex, 0.2, 0.3, 1, 1);


It should cause all calls to the function to create another sprite with the same Texture, but all I get is the crash.

1 个答案:

答案 0 :(得分:0)

基本上,sf :: Sprite实例保留对其使用的纹理的引用。因此,当sf :: Sprite使用sf :: Sprite时,无法破坏它,这是您要尝试执行的操作并导致错误。