Rebonjour,
Me revoilà avec un nouveau problème : je cherche à afficher des images 2D via SFML au sein d'un affichage 3D géré par OpenGL. Or, mon image 2D ne s'affiche pas, ou encore, elle s'affiche, mais le décor 3D ne s'affiche, lui, pas ; d'où ce problème vient-il ?
Voici mon code (attention c'est le bazar, y'a tout et n'importe quoi^^) :
// Includes nécessaires
#include "SceneManager.h"
#include "Game/Scenes/TitleScreen.h"
#include "ScriptingEngine/LuaDatabase.h"
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <GL/gl.h>
#include <GL/glu.h>
// Namespaces utilisés
using namespace sf;
// Point d'entrée du programme
int main()
{
LuaDatabase lua;
lua.setWindowSize();
lua.setWindowTitle();
// Fenêtre de rendu
RenderWindow *app =
new RenderWindow(VideoMode(lua.getWindowSize().width, lua.getWindowSize().height), lua.getWindowTitle());
// Gestionnaire de scène
SceneManager *sceneManager = new SceneManager(app);
Sprite sprite;
Image img;
img.LoadFromFile("Graphics/Pictures/Cursor.png");
sprite.SetImage(img);
// Create a clock for measuring time elapsed
sf::Clock Clock;
// Set color and depth clear value
glClearDepth(1.f);
glClearColor(0.f, 0.f, 0.f, 0.f);
// Enable Z-buffer read and write
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
// Setup a perspective projection
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.f, 1.f, 1.f, 500.f);
// Boucle principale
while (app->IsOpened())
{
sprite.SetPosition(app->GetInput().GetMouseX(), app->GetInput().GetMouseY());
sf::Event Event;
while (app->GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
app->Close();
// Escape key : exit
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
app->Close();
// Resize event : adjust viewport
if (Event.Type == sf::Event::Resized)
glViewport(0, 0, Event.Size.Width, Event.Size.Height);
}
app->SetActive();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -200);
glRotatef(Clock.GetElapsedTime() * 50, 1, 0, 0);
glRotatef(Clock.GetElapsedTime() * 30, 0, 1, 0);
glRotatef(Clock.GetElapsedTime() * 90, 0, 0, 1);
glBegin(GL_QUADS);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f( 50.f, 50.f, 50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(50.f, -50.f, -50.f);
glVertex3f(50.f, 50.f, -50.f);
glVertex3f(50.f, 50.f, 50.f);
glVertex3f(50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, 50.f);
glVertex3f(-50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, -50.f);
glVertex3f( 50.f, -50.f, 50.f);
glVertex3f(-50.f, 50.f, 50.f);
glVertex3f(-50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, -50.f);
glVertex3f( 50.f, 50.f, 50.f);
glEnd();
app->Draw(sprite);
app->Display();
}
// On libère l'espace mémoire alloué
free(app);
free(sceneManager);
app = NULL;
sceneManager = NULL;
// Fin du programme
return EXIT_SUCCESS;
}