IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

[SDL+OpenGL] Initialisation de OpenGL orienté objet ?


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Points : 39
    Points
    39
    Par défaut [SDL+OpenGL] Initialisation de OpenGL orienté objet ?
    Salut !

    J' essaye de faire une petite classe OpenGL me permettant de faciliter l' affichage de ce dernier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    class SCREEN
    {
    public:
      SCREEN(char * T = "VMAP SCENE", bool FULL = false, int S_w = 800, int S_h = 600, int S_bpp = 16);
      void InitVMAP(void);
      void Draw(void);
     
    private:
      /* WINDOW PROPERTIES */
      int SCREEN_w;
      int SCREEN_h;
      int SCREEN_bpp;
      char * TITLE;
     
      bool MainLoop;
      Uint8 * Keys;
      Uint32 Vflags;
      int FpsT;
      SDL_Surface * Screen;
      SDL_Event E;
      void ReshapeGL(void);
    };
     
    void SCREEN::InitVMAP(void)
    {
      if(SDL_Init(SDL_INIT_VIDEO) < 0)
      {
        cerr << "Unable to open SDL: " << SDL_GetError() << endl;
        exit(1);
      }
      atexit(SDL_Quit);
     
      FpsT = SDL_GetTicks();
     
      SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
      SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 5);
      SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
      SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
      SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
     
      if(!(Screen = SDL_SetVideoMode(SCREEN_w, SCREEN_h, SCREEN_bpp, Vflags)))
      {
        cerr << "Unable to set Videomode: " << SDL_GetError() << endl;
        exit(1);
      }
      atexit(SDL_Quit);
     
      SDL_FillRect(Screen, NULL, SDL_MapRGBA(Screen->format, 0, 0, 0, 0));
      ReshapeGL();
     
      SDL_WM_SetCaption(TITLE, NULL);
     
      glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
      glClearDepth(1.0f);
      glDepthFunc(GL_LEQUAL);
      glEnable(GL_DEPTH_TEST);
      glEnable(GL_CULL_FACE);
      glShadeModel(GL_SMOOTH);
      glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
     
      return;
    }
     
    void SCREEN::Draw(void)
    {
      while(!SDL_PollEvent(& E) || E.type != 2)
      {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();
        glBegin(GL_TRIANGLES);
        glVertex3f(0.0f, 1.0f, 0.0f);
        glVertex3f(-1.0f, -1.0f, 0.0f);
        glVertex3f(1.0f, -1.0f, 0.0f);
        glEnd();
     
        SDL_GL_SwapBuffers();
      }
     
      return;
    }
    Ce code compile parfaitement, mais malheureusement la fonctio Draw n' affiche rien ! Aurai-je oublié une étape d' initialisation ou autre ?


    Merci d' avance

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    oui tu as oublié quelques inits :
    - tu n'initialises pas le viewport ni la perspective
    - tu ne sélectionne pas la matrice GL_MODELVIEW avant de traiter ton affichage
    - de plus ton triangle est en z = 0 après un glLoadIdentity donc il ne peut etre visible, il faudrait faire un glTranslate vers le fond de la scène afin de le positionner devant la vue
    - tu ne donne pas de couleur à ton triangle

    vois déjà si cela fait quelque chose et reviens nous voir
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

Discussions similaires

  1. problème SDL 2.0 et opengl
    Par Lintel-oo dans le forum SDL
    Réponses: 3
    Dernier message: 03/04/2015, 00h57
  2. opengl : probleme vecteur local a un objet
    Par lanael dans le forum OpenGL
    Réponses: 3
    Dernier message: 02/01/2007, 18h36
  3. Initialisation d'un type d'objet
    Par fdraven dans le forum Oracle
    Réponses: 3
    Dernier message: 28/10/2005, 11h05
  4. Initialisation d'openGL (Visualisation et repère)
    Par franco01 dans le forum OpenGL
    Réponses: 1
    Dernier message: 23/07/2005, 01h10
  5. OpenGL sans fenetre OpenGl
    Par ihuop dans le forum OpenGL
    Réponses: 10
    Dernier message: 20/04/2005, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo