Ошибка создания окна C++/SFML

Что ж, я попытался сделать все, как показано в руководстве, но он просто показывает консоль и ничего больше. Попробовал эту программу часов, и она работает просто отлично. Я подключил все библиотеки и скопировал все файлы .dll, поэтому действительно не знаю, где я ошибаюсь. Подскажите, пожалуйста, что сделать, чтобы показывалось окно. Я использую VS2010, SFML 1.6, и вот мой код.

    #include <SFML\Window.hpp>

    int main()
    {

         sf::Window App(sf::VideoMode(640, 480, 32), "wut");

         while (App.IsOpened())
         {
              sf::Event Event;
              while (App.GetEvent(Event))
              {
               // Window closed
               if (Event.Type == sf::Event::Closed)
                   App.Close();

               // Escape key pressed
               if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                  App.Close();        
               };
              App.Display();

          }
     };

person Dreat    schedule 23.07.2012    source источник


Ответы (3)


Попробуй это:

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

int main()
{
    // Create the main rendering window
    sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics");

    // Start game loop
    while (App.IsOpened())
    {
        // Process events
        sf::Event Event;
        while (App.GetEvent(Event))
        {
            // Close window : exit
            if (Event.Type == sf::Event::Closed)
                App.Close();
        }

        // Clear the screen (fill it with black color)
        App.Clear();

        // Display window contents on screen
        App.Display();
    }

    return EXIT_SUCCESS;
}
person Ben Gates    schedule 31.07.2012
comment
Тем не менее он показывает только консоль, а окно не появляется. У меня в VS 2010 нет ни ошибок, ни предупреждений. Мне нужно все это как можно скорее. Я надеюсь, что есть способ заставить его работать, или есть какой-нибудь графический движок, такой же простой, как SMFL (объектно-ориентированный). - person Dreat; 03.08.2012

Вы ссылаетесь на библиотеку sfml-main? Если нет, попробуйте это, если это не поможет, попробуйте выполнить WinMain вместо функции main(). Кроме того, убедитесь, что Visual Studio не установила для вашего проекта консольную программу.

person Prof. Falken    schedule 24.11.2012

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

#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>

Это должно быть sf::RenderWindow, а не sf::Window

Это должно быть while (App.isOpen()) не IsOpened()

Если кажется, что в вашем RenderWindow нет функции "isOpen", у вас, вероятно, нет SFML2, который я рекомендую немедленно получить.

Вы пересобирали библиотеки для своего компьютера или просто пытались использовать .dll, которые они предоставляют? Возможно, вам придется пересобрать их с помощью Cmake и любого другого компилятора. Я знаю, что я сделал.

Наконец, я также рекомендую использовать последнюю версию Code::Blocks в качестве вашей IDE, но я думаю, что переключитесь только в крайнем случае.

person Leon Frickenschmidt    schedule 18.03.2014