Ошибка The content view is not a valid SFOpenGLView. Почему?

Пишу игру на SFML. Создал свой класс кнопки и пытаюсь отслеживать нажатие в другом потоке. Возникает ошибка.

Создаю потоки для метода одного и того же класса, но для разных экземпляров.

    SpriteButton BTN_two_players(window, T_two_players_btn_upr, T_two_players_btn_pr);
    BTN_two_players.SetRect(sf::IntRect(0, 0, 256, 128));
    BTN_two_players.SetPosition(220, 260 + 128);
    sf::Thread TH_BTN_two_players(&SpriteButton::CheckPressed, &BTN_two_players);

    SpriteButton BTN_single_player(window, T_single_player_btn_upr, T_single_player_btn_pr);
    BTN_single_player.SetRect(sf::IntRect(0, 0, 256, 128));
    BTN_single_player.SetPosition(220, 250);
    sf::Thread TH_BTN_single_player(&SpriteButton::CheckPressed, &BTN_single_player);

После этого запускаю эти методы:

    TH_BTN_two_players.launch();
    TH_BTN_single_player.launch();

И проверяю, не нажаты ли кнопки:

    while (window.isOpen()) {
        sf::Event event;
        if (BTN_single_player.IsButtonPressed()) {
            TH_BTN_single_player.terminate();
            TH_BTN_two_players.terminate();
            window.close();
            Snd_game_begin.play();
            SinglePlayer single_player_mode(cell_cnt, cell_size, boarder_size);
            single_player_mode.Start();
            return;
        }
        if (BTN_two_players.IsButtonPressed()) {
            TH_BTN_single_player.terminate();
            TH_BTN_two_players.terminate();
            window.close();
            Snd_game_begin.play();
            TwoPlayersMode two_players_mode(cell_cnt, cell_size, boarder_size);
            two_players_mode.Start();
            return;
        }
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed) {
                TH_BTN_single_player.terminate();
                TH_BTN_two_players.terminate();
                window.close();
            }
        }
        window.clear(sf::Color(50, 50, 50));
        window.draw(S_logo);
        window.draw(BTN_single_player.GetButton());
        window.draw(BTN_two_players.GetButton());
        window.display();
    }

Выдаёт ошибку, а я не понимаю, в чём дело:

The content view is not a valid SFOpenGLView

Вот класс SpriteButton:

class SpriteButton {
private:
    bool is_pressed;
    sf::Texture T_pressed;
    sf::Texture T_not_pressed;
    sf::Sprite button;
    sf::RenderWindow& window;
public:
    SpriteButton(sf::RenderWindow& win, sf::Texture not_pressed) : T_pressed(not_pressed), T_not_pressed(not_pressed), window(win) {
        button.setTexture(T_not_pressed);
        is_pressed = false;
    }
    SpriteButton(sf::RenderWindow& win, sf::Texture not_pressed, sf::Texture pressed) : T_pressed(pressed), T_not_pressed(not_pressed), window(win) {
        button.setTexture(T_not_pressed);
        is_pressed = false;
    }
    void SetRect(sf::IntRect rect) {
        button.setTextureRect(rect);
    }
    void CheckPressed() {
        sf::Vector2f size(button.getTextureRect().width * button.getScale().x,
                button.getTextureRect().height * button.getScale().y);
        while (!is_pressed) {
            sf::Vector2i m_pos = sf::Mouse::getPosition(window);
            bool inside = (m_pos.x <= button.getPosition().x + size.x && m_pos.x >= button.getPosition().x)
                          && (m_pos.y <= button.getPosition().y + size.y && m_pos.y >= button.getPosition().y);

            if (inside) button.setTexture(T_pressed);
            else button.setTexture(T_not_pressed);

            if (!sf::Mouse::isButtonPressed(sf::Mouse::Left) || !inside) continue;
            while (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {}


            m_pos = sf::Mouse::getPosition(window);
            inside = (m_pos.x <= button.getPosition().x + size.x && m_pos.x >= button.getPosition().x)
                     && (m_pos.y <= button.getPosition().y + size.y && m_pos.y >= button.getPosition().y);

            is_pressed = inside;
        }
    }
    bool IsButtonPressed() { return is_pressed; }
    void SetPosition(float x, float y) { button.setPosition(x, y); }
    void SetScale(float x, float y) { button.setScale(x, y); }
    sf::Sprite& GetButton() { return button; }
};

Ответы (0 шт):