Alors voilà, j'ai réussi à afficher le sf::RenderWindow mais avec un thread différent :
#include <SFML/Graphics.hpp>
#include "all_screens.hpp"
Engine::Engine(sf::RenderWindow &w) : App(w)
{
}
void Engine::Run()
{
App.Create(sf::VideoMode(1024, 768, 32), "Nouveau Jeu", sf::Style::Close);
// Vue
sf::View view(sf::FloatRect(0, 0, 1024, 768));
App.SetView(view);
// Menu/Jeu/Options
Menu s_menu; // Creation d'un menu
screens.push_back(&s_menu);
Jeu s_jeu; // Creation d'un affichage pour le jeu
screens.push_back(&s_jeu);
int screen(0);
while(screen >= 0)
{
cout << screen << endl;
screen = screens[screen]->Run(App);
}
}
int main(int argc, char** argv)
{
sf::RenderWindow Window;
Engine App(Window);
App.Launch();
sf::Clock c;
while(c.GetElapsedTime() < 20);
return EXIT_SUCCESS;
}
#ifndef HEADER_ALL_SCREENS
#define HEADER_ALL_SCREENS
#include "Screen.hpp"
// Screens :
#include "Menu.hpp"
#include "Jeu.hpp"
class Engine : public sf::Thread
{
public :
Engine(sf::RenderWindow &w);
virtual void Run();
private :
sf::RenderWindow &App;
std::vector<Screen*> screens;
};
#endif
Et la fonction Run de Menu et Jeu :
int Menu::Run(sf::RenderWindow &w)
{
sf::RenderWindow &App = w;
// ....
}
Donc tout s'affiche correctement, le seul problème est que ce que le problème initial (le sujet de la discussion) n'est pas résolu. Lorsque je clique, déplace la fenêtre, le programme s'arrête toujours et donc dans mon cas, les collisions (le plus important actuellement) sont ignorées.