SFML RenderWindow не открывается в заставке

0

Я пытаюсь отобразить заставку в течение 5 секунд в SFML 2.1, дисплей отображается в главном режиме gameloop, но в методе init ничего не отображается, значки отображаются в течение 5 секунд на доке, но нет окна...

int initGame(){
    gameState = GAME_LOADING;
    // Create the main window
    window.create(mainVideoMode, "SFML Window", sf::Style::Default);
    // Set the Icon
    if (!icon.loadFromFile(resourcePath() + "icon.png")) {
        gameState = GAME_EXIT;
    }
    sf::Texture texture;
    if (!texture.loadFromFile(resourcePath() + "splashscreen.png"))
    {
        gameState = GAME_EXIT;
    }
    window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
    sf::Sprite sprite(texture);

    window.clear();
    window.draw(sprite);
    window.display();

    // Create a graphical text to display
    /*if (!font.loadFromFile(resourcePath() + "sansation.ttf")) {         If Needed
        return EXIT_FAILURE;
    }*/

    sf::sleep(sf::seconds(5));
    gameState = GAME_PLAYING;
    return 1;
}
Теги:
game-engine
sfml

1 ответ

0

Вам нужен базовый игровой цикл, и вам нужно заменить вызов сна на конструкцию таймера, подходящую для игр. Пожалуйста, посмотрите здесь подробный ответ.

Что бы ни происходило в вашей игре, никогда не может повлиять на цикл цикла игры ввода/обновления/рендеринга. Если вы хотите не принимать вход и не обновлять в течение 5 секунд, отлично. Но вам нужен этот цикл для запуска.

PseudoCode, потому что у меня нет компилятора:

variable timePassed = 0 seconds;

while(window is open && timePassed < 5 seconds)
{
    timePassed += the time that passed since the last loop

    window.clear();
    window.draw(splashscreen);
    window.display();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню