[OpenGL][SFML] ptit PB SFML

Le côté programmation du développement d'un jeu vidéo.

ptit PB SFML

Messagepar valentin » 17 Juil 2009, 18:21

slt a tous,

j'ai un ptit soucis SFML qui me bloque un peu,

j'essaie de charger une texture sur un objet opengl et rien...

voila, jvois pas l'erreur , j'appelle a l'aide HELP!!!

Code: Tout sélectionner



int main()
{
   sf::WindowSettings Settings;

   Settings.AntialiasingLevel = 2;  // Demande 2 niveaux d'anti-crénelage
   sf::RenderWindow App(sf::VideoMode(800, 600, 32), "chute",sf::Style::Close, Settings);

   sf::Image image;
   image.LoadFromFile( "data\\arnold.PNG" );


   glClearDepth(1.f);
   glClearColor(0.f, 0.f, 0.f, 0.f);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);

   GLuint Nom;
   glGenTextures(1,&Nom); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);   
   glBindTexture(GL_TEXTURE_2D,Nom);
   glTexImage2D ( GL_TEXTURE_2D,
               0,
               GL_RGBA,
               image.GetWidth(),
               image.GetHeight(),
               0,
               GL_RGBA,
               GL_UNSIGNED_BYTE,
               image.GetPixelsPtr()); 



   bool Running = true;
   while (Running)
   {   
      sf::Event Event;
      while (App.GetEvent(Event))
      {
         // Fenêtre fermée
         if (Event.Type == sf::Event::Closed)
            Running = false;

         // Touche 'echap' appuyée
         if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
            Running = false;
         if (Event.Type == sf::Event::Resized)
         glViewport(0, 0, Event.Size.Width, Event.Size.Height);
      }

      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(0.f, 800.f, 0.f, 600.f,-1000.f,1000.f);

      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glEnable(GL_TEXTURE_2D);
      glBindTexture(GL_TEXTURE_2D,1);

      glColor3f(1,1,1);
      glBegin(GL_QUADS);
      glTexCoord2f(0,0);
      glVertex3f( 0.f, 0.f, 0.f);
      glTexCoord2f(0,1);
      glVertex3f( 0.f,  600.f, 0.f);
      glTexCoord2f(1,1);
      glVertex3f( 800.f,  600.f, 0.f);
      glTexCoord2f(1,0);
      glVertex3f( 800.f, 0.f, 0.f);
      glEnd();

      App.Display();
   }

   return EXIT_SUCCESS;


}
Avatar de l’utilisateur
valentin
Hello World, I'm new !
 
Messages: 494
Inscription: 20 Mai 2008, 16:10
Localisation: GRENOBLE

Messagepar Benos » 17 Juil 2009, 19:43

Je me gourre surement totalement mais quand tu fait ton glbind dans la boucle principale

Code: Tout sélectionner
glBindTexture(GL_TEXTURE_2D,1);


ça devrait pas plutôt être
Code: Tout sélectionner
glBindTexture(GL_TEXTURE_2D,Nom);
Benos
Hello World, I'm new !
 
Messages: 271
Inscription: 20 Oct 2005, 14:22

Messagepar valentin » 17 Juil 2009, 20:06

non, ça marche pas nonplus
Quand je met "1" jai le droit à un carré noir et quand je met n'importe quelle autre nombre cest blanc.

...
Avatar de l’utilisateur
valentin
Hello World, I'm new !
 
Messages: 494
Inscription: 20 Mai 2008, 16:10
Localisation: GRENOBLE

Messagepar Benos » 17 Juil 2009, 20:36

J'ai testé ton code ça fait pareil chez moi. J'ai repris un truc qui marche si ça t'intéresse, c'est avec le mipmapping activé:

Fait juste gaffe au nom du fichier.

Code: Tout sélectionner

#include <SFML/Graphics.hpp>

#include <iostream>
#include <fstream>
#include<assert.h>

int main()
{
   sf::WindowSettings Settings;

   Settings.AntialiasingLevel = 2;  // Demande 2 niveaux d'anti-crénelage
   sf::RenderWindow App(sf::VideoMode(800, 600, 32), "chute",sf::Style::Close, Settings);

  GLuint Texture = 0;
  {
        sf::Image Image;
        if (!Image.LoadFromFile("data\\texture.jpg"))
            return EXIT_FAILURE;
        glGenTextures(1, &Texture);
        glBindTexture(GL_TEXTURE_2D, Texture);
        gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, Image.GetWidth(), Image.GetHeight(), GL_RGBA, GL_UNSIGNED_BYTE, Image.GetPixelsPtr());
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
    }


   glClearDepth(1.f);
   glClearColor(0.f, 0.f, 0.f, 0.f);
   glEnable(GL_DEPTH_TEST);
   glEnable(GL_TEXTURE_2D);

   bool Running = true;
   while (Running)
   {
      sf::Event Event;
      while (App.GetEvent(Event))
      {
         // Fenêtre fermée
         if (Event.Type == sf::Event::Closed)
            Running = false;

         // Touche 'echap' appuyée
         if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
            Running = false;
         if (Event.Type == sf::Event::Resized)
         glViewport(0, 0, Event.Size.Width, Event.Size.Height);
      }

      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      glMatrixMode(GL_PROJECTION);
      glLoadIdentity();
      glOrtho(0.f, 800.f, 0.f, 600.f,-1000.f,1000.f);

      glMatrixMode(GL_MODELVIEW);
      glLoadIdentity();
      glEnable(GL_TEXTURE_2D);
      glBindTexture(GL_TEXTURE_2D,Texture);

      glColor3f(1,1,1);
      glBegin(GL_QUADS);
      glTexCoord2f(0,0);
      glVertex3f( 0.f, 0.f, 0.f);
      glTexCoord2f(0,1);
      glVertex3f( 0.f,  600.f, 0.f);
      glTexCoord2f(1,1);
      glVertex3f( 800.f,  600.f, 0.f);
      glTexCoord2f(1,0);
      glVertex3f( 800.f, 0.f, 0.f);
      glEnd();

    glBindTexture(GL_TEXTURE_2D,0);


      App.Display();
   }

   return EXIT_SUCCESS;
}

Benos
Hello World, I'm new !
 
Messages: 271
Inscription: 20 Oct 2005, 14:22

Messagepar valentin » 17 Juil 2009, 20:50

\o/ oura ça marche merci, c'est super jvais donc commencer mon projet pour les novendiales

encore 2 jours ça devrait le faire lol.
Avatar de l’utilisateur
valentin
Hello World, I'm new !
 
Messages: 494
Inscription: 20 Mai 2008, 16:10
Localisation: GRENOBLE

Messagepar Benos » 18 Juil 2009, 00:43

Je suis content que ça puisse t'aider. Bon courage deux jours c'est très court XD.
Benos
Hello World, I'm new !
 
Messages: 271
Inscription: 20 Oct 2005, 14:22

Messagepar teto » 18 Juil 2009, 15:29

Un app.Clear efface l'affichage opengl.

Sinon je trouve que vous vous embetez bien, un Image.Bind() bind l'image en opengl :D
Avatar de l’utilisateur
teto
 
Messages: 1168
Inscription: 26 Juil 2005, 19:02
Localisation: /home/Paris


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités

cron