Alors, j'ai essayé de faire un condensé de mes fonctions :
m_window = new sf::RenderWindow(sf::VideoMode(m_xWin, m_yWin), m_titleWin.c_str(), sf::Style::Default, m_setSettings);
GLenum glew_status = glewInit();
if (glew_status != GLEW_OK)
{
std::cout << "[ERROR] Cannot init GLEW : " << glewGetErrorString(glew_status) << std::endl;
return false;
}
if (!GLEW_VERSION_2_0)
{
std::cout << "[ERROR] Your graphic card does not support OpenGL 2.0." << std::endl;
return false;
}
// Enable alpha
glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
//glDepthFunc(GL_LESS);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
bool running = true;
// Declare and load a font
sf::Font font;
font.loadFromFile("arial.ttf");
// Create a text
sf::Text text("Hello");
text.setFont(font);
text.setCharacterSize(10);
text.setStyle(sf::Text::Bold);
text.setColor(sf::Color::Red);
text.setPosition(100,100);
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
Cube cubeTest;
Plan planTest;
glm::mat4 modelview = glm::lookAt(glm::vec3(3.0, 2.0, 5.0), glm::vec3(0.0, 0.0, 0.0), glm::vec3(0.0, 1.0, 0.0));
glm::mat4 projection = glm::perspective(60.0f, 1.0f * m_xWin/m_yWin, 0.0001f, 1000.0f);
while (running)
{
// gestion des évènements
sf::Event event;
while (m_window->pollEvent(event))
{
if (event.type == sf::Event::Closed)
{
// on stoppe le programme
running = false;
}
else if (event.type == sf::Event::Resized)
{
// on ajuste le viewport lorsque la fenêtre est redimensionnée
glViewport(0, 0, event.size.width, event.size.height);
m_xWin = event.size.width;
m_yWin = event.size.height;
}
}
// effacement les tampons de couleur/profondeur
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
m_window->pushGLStates();
m_window->draw(shape);
m_window->draw(text);
m_window->popGLStates();
// dessin...
cubeTest.draw(modelview, projection);
planTest.draw(modelview, projection);
// termine la trame courante (en interne, échange les deux tampons de rendu)
m_window->display();
}
Voilà, j'espère que c'est assez clair et concis
Il y a peut être quelques incohérences, mais le tout est placé dans plusieurs méthodes d'une classe, donc bon...
EDIT : Et avec ce code, je n'ai ni rond vert, ni texte...