Welcome, Guest. Please login or register. Did you miss your activation email?

Author Topic: opengl 3 + sfml 2 impossible d'afficher un triangle [Résolu]  (Read 5118 times)

0 Members and 1 Guest are viewing this topic.

sylflo

  • Newbie
  • *
  • Posts: 3
    • View Profile
    • Email
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;
}
« Last Edit: June 12, 2013, 01:51:50 pm by sylflo »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Reply #1 on: June 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
  • *
  • Posts: 3
    • View Profile
    • Email
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Reply #2 on: June 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
  • *****
  • Posts: 32498
    • View Profile
    • SFML's website
    • Email
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Reply #3 on: June 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
  • *****
  • Posts: 540
    • View Profile
Re : opengl 3 + sfml 2 impossible d'afficher un triangle
« Reply #4 on: June 11, 2013, 10:08:50 pm »
+1
pour moi le grep me renvois :
Quote
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
  • *
  • Posts: 3
    • View Profile
    • Email
Re : opengl 3 + sfml 2 impossible d'afficher un triangle [Résolu]
« Reply #5 on: June 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 :/.

 

anything