Окно отказывается отрисовывать - PullRequest
2 голосов
/ 23 декабря 2010

Я недавно начал пытаться использовать SFML. По какой-то причине моя простая программа не рендерит окно. Я попытался добавить все в main, чтобы увидеть, не было ли в моем коде ошибки, связанной с несколькими файлами и т. Д., Но безрезультатно.

Я запускаю свою программу, и ничего не появится.

В чем проблема?

//main.h
#ifndef MAIN_H
#define MAIN_H

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

#include <iostream>
#include <fstream>

using namespace std;
using namespace sf;

class game
{
    public:
    void startLoop(int SCREEN_W, int SCREEN_H, string SCREEN_NAME);
    void log(const string logging);

    game()
    {
        QUIT = false;

        pendingFile.open("Log.txt", ios::out);
        pendingFile << "---Brain Bread Log---";
    }

    ~game()
    {
        pendingFile.close();
    }

    private:
    bool QUIT;
    ofstream pendingFile;
};

#endif


//main.cpp
#include "main.h"

void game::log(const string logging)
{
    pendingFile << logging;
}

void game::startLoop(int SCREEN_W, int SCREEN_H, string SCREEN_NAME)
{
    Window Game(VideoMode(SCREEN_W, SCREEN_H, 32), SCREEN_NAME);
    while(QUIT == false)
    {
        Game.Display();
    }
}


int main(int argc, char* argv[])
{
    game gameObj;

    gameObj.startLoop(800, 600, "Brain Bread");

    return 0;
}

1 Ответ

2 голосов
/ 23 декабря 2010

Я попробовал ваш код, и он ведет себя точно так, как я ожидаю, то есть всплывающее окно без значка с черным телом, которое не реагирует на события.Это то, что вы получаете?Если нет, вам может потребоваться перестроить SFML.

Возможно, вы захотите попробовать ввести обработку событий, чтобы ваш startLoop выглядел примерно так:

void game::startLoop(int SCREEN_W, int SCREEN_H, string SCREEN_NAME)
{
    // Init stuff

    while (Game.IsOpened())
    {
        sf::Event newEvent;

        while (Game.GetEvent(newEvent))
        {
            // Process event
        }

        // Do graphics stuff

        Game.Display();
    }
}
...