SFML C++ Ошибка при загрузке текустуры

263
06 апреля 2022, 02:00

Есть отдельный класс Resources,в котором хранятся контейнеры:

map<string, sf::Texture> textures; map<string, sf::Sprite> sprites

и методы:

loadTexture(path) - создает Texture

void Resources::loadTexture(std::string path)
{
    if (textures.find(path) == textures.end())
    {
        sf::Texture texture;
        texture.loadFromFile(path);
        //texture.setRepeated(true);
        textures.emplace(path, texture);
    }
}

loadSprite(path, sf::IntRect rect) - если нет спрайта, создает спрайт, перед этим вызвав loadTexture(path) и вернув итератор на него, если есть просто возращает итератор

std::map<std::string, sf::Sprite>::iterator Resources::loadSprite(std::string path, sf::IntRect rect)
{
    if (sprites.find(path) == sprites.end())
    {
        loadTexture(path);
        sprites.emplace(path, sf::Sprite(textures.find(path)->second));
        sprites[path].setTextureRect(rect);
        sprites[path].setPosition(0, 0);
    }
    return sprites.find(path);
}

В классе Field, есть итератор которому присваивается loadSprite в конструкторе.

this->sprite_iterator = resources.loadSprite("images/tiles.png", sf::IntRect(0, 0, 25, 25));

Но при отладке выдает исключение либо в loadTexture, либо во время выполнения метода draw

void  Field::draw_field(sf::RenderTarget& target)
{
    for (int i = 0; i < this->fieldSize_x; i++)
        for (int j = 0; j < this->fieldSize_y; j++)
        {
            (*sprite_iterator).second.setTextureRect(sf::IntRect(displayGrid[i][j] * 25, 0, 25, 25));
            (*sprite_iterator).second.setPosition(((i * 25) + (700 / 4)), (j * 25) + 50);
            target.draw((*sprite_iterator).second);
        }
}

READ ALSO
Ошибки при компиляции qt

Ошибки при компиляции qt

Установил mingwВот версия компилятора: 6

92
Как взять значение формы

Как взять значение формы

у меня есть форма, которая дает возможность добавить и удалить строчкиПри нажатии кнопки отправить, надо собрать все значения, которые пользователь...

221