Bonjour/Bonsoir,
J'essais de faire fonctionner OpenGL avec la SFML, mais j'ai un petit soucis au lancement de l'application.
Plutôt que de m'afficher mon joli petit triangle, la fenêtre se ferme tout simplement dès le lancement de l'application sans aucune erreur.
J'ai tester sf::Event::Closed pour voir et effectivement, l'événement est appelé dès le début de l'application...
La SFML Aurait un système qui fait que si rien est affiché la fenêtre se ferme automatiquement?
J'ai essayer d'afficher un shape et la fenêtre reste bien ouverte avec seulement le shape d'affiché...
Fait très étrange, si je place ce code avant ma boucle mais sans draw le shape:
sf::CircleShape shape(50);
shape.setFillColor(sf::Color(100, 250, 50));
L'application se lance et m'affiche bien le triangle... Il n'y a pas moyen de garder la fenêtre ouverte autrement?
#include <iostream>
#include <glm/glm.hpp>
#include <GL/glew.h>
#include <SFML/OpenGL.hpp>
#include "SFML/Graphics.hpp"
#include "include/Engine/Engine.hpp"
#include "include/Engine/SystemEngine.hpp"
#include "include/RessourceManager/RessourceManager.hpp"
int main()
{
sf::ContextSettings settings;
settings.depthBits = 24;
settings.stencilBits = 8;
settings.antialiasingLevel = 4;
settings.majorVersion = 3;
settings.minorVersion = 0;
sf::RenderWindow window(sf::VideoMode(200, 200), "Pymous Project", sf::Style::Default, settings);
window.setVerticalSyncEnabled(true);
Engine::getInstance();
SystemEngine::getInstance().setWindow(&window);
GLenum initialisationGLEW( glewInit() );
if(initialisationGLEW != GLEW_OK)
{
AbstractLogger::log().setLogger(new FileLogger("Logs/GlewReports.log"));
AbstractLogger::log() << "Une erreur est survenu lors de l'initialisation de glew.";
return -1;
}
float vertices[] = {-0.5, -0.5, 0.0, 0.5, 0.5, -0.5};
bool running = true;
while(running)
{
SystemEngine::getInstance().updateEvents();
if(SystemEngine::getInstance().getWindowEvents().windowClosed)
{
std::cout << "On demande la fermeture de l'application" << std::endl;
running = false; // On ferme la fenêtre
}
if(SystemEngine::getInstance().getWindowEvents().windowResized)
glViewport(0, 0, SystemEngine::getInstance().getWindowEvents().windowSize.x, SystemEngine::getInstance().getWindowEvents().windowSize.y);
window.setActive(true);
glClear(GL_COLOR_BUFFER_BIT);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
window.display();
window.setActive(false);
SystemEngine::getInstance().resetAllEvents();
}
RessourceManager::destroy();
Engine::destroy();
return 0;
}
Merci et bonne soirée!