Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: opengl 3 + sfml 2 impossible d'afficher un triangle [Résolu]  (Lu 4260 fois)

0 Membres et 1 Invité sur ce sujet

sylflo

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Bonjour,
Je souhaiterais apprendre l'openGL avec la SFML. J'ai donc suivi le tutoriel sfml qui explique comment utiliser opengl dans une fenêtre sfml, pour créer un contexte opengl. Et j'ai ensuite suivi le tutoriel sur le site du zéro pour pouvoir afficher un triangle (http://www.siteduzero.com/informatique/tutoriels/developpez-vos-applications-3d-avec-opengl-3-3/afficher-un-triangle-3). Je suis sur Arch/Linux, et je n'ai pas de dossier GL3. J'ai donc vérifié ma version avec d'openGL avec la commande suivante  "glxinfo | grep "OpenGL version string" qui me retourne OpenGL version string: 3.0 Mesa 9.1.3.
Donc je suis sur la version 3 d'openGL et ne posséde pas gl3.h je l'ai donc téléchargé depuis le site d'openGL. Je l'ai donc inclu dans le fichier .cpp mais ça ne compile pas alors que les fonctions sont bien protypées dans gl3.h. J'obtiens l'erreur suivante quand GL/glew.h n'est pas présent " error: 'glVertexAttribPointer' was not declared in this scope
       glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);". Si j'inclus GL/glew.h et que je link avec -lGLEW le code compile mais segfault au niveau des fonctions glVertexAttribPointer.

De plus j'ai testé le code source suivant dans le premier post  http://en.sfml-dev.org/forums/index.php?topic=11179.0. Et j'obtiens le même problème, c'est à dire que si je change ces lignes
settings.majorVersion = 3;
   settings.minorVersion = 0;
(dans ce cas rien ne s'afffiche) par celles-ci.
setings.majorVersion = 3;
   settings.minorVersion = 0;
Là j'ai un affichage correct.

Je vous remercie d'avance de votre aide.

#include <GL/glew.h>
#include <SFML/Window.hpp>
#include <SFML/OpenG#
define GL3_PROTOTYPES 1L
//#include "gl3.h"

int main()
{
  // cr?e la fen?tre
  float vertices[] = {-0.5, -0.5,   0.0, 0.5,   0.5, -0.5};
  sf::Window window(sf::VideoMode(800, 600), "OpenGL", sf::Style::Default, sf::ContextSettings(32));
  window.setVerticalSyncEnabled(true);
  // chargement des ressources, initialisation des ?tats OpenGL, ...
  // la boucle principale
  bool running = true;
  while (running)
    {
      // gestion des ?v?nements
      sf::Event event;
      while (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);
            }
        }
      // effacement les tampons de couleur/profondeur
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      // dessin...
      // On remplie puis on active le tableau Vertex Attrib 0
      glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
      glEnableVertexAttribArray(0);

      // On affiche le triangle
      glDrawArrays(GL_TRIANGLES, 0, 3);

      // On d?sactive le tableau Vertex Attrib puisque l'on n'en a plus besoin
      glDisableVertexAttribArray(0);

      // termine la trame courante (en interne, ?change les deux tampons de rendu)
      window.display();
    }
  return 0;
}
« Modifié: Juin 12, 2013, 01:51:50 pm par sylflo »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Réponse #1 le: Juin 11, 2013, 03:29:39 pm »
Pour utiliser GLEW il faut appeler glewInit ("ça compile" n'est pas suffisant, il faut lire la doc hein ;)).
Laurent Gomila - SFML developer

sylflo

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Réponse #2 le: Juin 11, 2013, 04:55:02 pm »
Merci, je n'ai plus de segfault ça m'apprendra à lire la doc x). Par contre je n'arrive toujours pas à voir un triangle. Lorsque j'utilise.
settings.majorVersion = 2;
J'obtiens une fenêtre noire, et j'arrive à quitter normalement sans problème. Mais lorque j'utilise.
settings.majorVersion = 3
Le PC se met à laguer enormément et lorsque je clique sur la croix pour fermer la fenêtre, il faut un certain laps de temps avant que la fenêtre se ferme. J'ai l'impression d'avoir une boucle infinie.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Réponse #3 le: Juin 11, 2013, 08:47:38 pm »
Tu as peut-être une implémentation software pour OpenGL 3.
Laurent Gomila - SFML developer

Cpl.Bator

  • Hero Member
  • *****
  • Messages: 540
    • Voir le profil
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Réponse #4 le: Juin 11, 2013, 10:08:50 pm »
+1
pour moi le grep me renvois :
Citer
OpenGL version string: 4.2.0 NVIDIA 304.48

met à jour tes pilotes graphique , pour ma part j'ai utilisé le .run de chez nvidia

sylflo

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Re : opengl 3 + sfml 2 impossible d'afficher un triangle [Résolu]
« Réponse #5 le: Juin 12, 2013, 01:51:35 pm »
J'étais avec les pilotes libres, j'ai installé les pilotes propriétaires. Ca fonctionne parfaitement :). Mais dommage que ça marche mal avec les pilotes libres :/.