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

Auteur Sujet: SFML + OpenGL  (Lu 3232 fois)

0 Membres et 1 Invité sur ce sujet

Yruama

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
SFML + OpenGL
« le: Mai 14, 2014, 10:24:52 pm »
Bonsoir.

J'essai de coupler SFML et OpenGL pour ne pas avoir SDL dans les pattes.

J'essai donc comme tout bon noob d'afficher un triangle ...

Seulement rien ne s'affiche et je ne comprend pas pourquoi. J'ai fais des recherches sur internet mais tous ceux qui y sont parvenu ont le même code que moi ....

#include <iostream>
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <SFML/Config.hpp>
#include <SFML/Audio.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Network.hpp>
#include <SFML/OpenGL.hpp>
#include "gl3.h"

int                     main()
{
  bool                  running = true;
  float                 vertices[] = {-0.5, -0.5, 0.0, 0.5, 0.5, -0.5};
  sf::Event             event;
  sf::ContextSettings   settings;
  sf::RenderWindow      window(sf::VideoMode(900,900), "OpenGL", sf::Style::Close, sf::ContextSettings(\
32));
  sf::Shader            shader;

  settings.majorVersion = 3;
  settings.minorVersion = 3;
  window.setVerticalSyncEnabled(true);
  while (running)
    {
      window.clear();
      while (window.pollEvent(event))
        {
          if (event.type == sf::Event::Closed ||
              sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            running = false;
          if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
            {
              std::cout << "Space pressed" << std::endl;
            }
        }
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      if (!shader.loadFromFile("vertex_shader.vert", "fragment_shader.frag"))
        std::cerr << "Error Shader" << std::endl;
      sf::Shader::bind(&shader);
      glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);
      glEnableVertexAttribArray(0);
      glDrawArrays(GL_TRIANGLES, 0, 3);
      glDisableVertexAttribArray(0);
      window.pushGLStates();
      window.popGLStates();
      window.display();
      sf::Shader::bind(NULL);
    }
  return 0;
}
 


Merci de votre aide.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML + OpenGL
« Réponse #1 le: Mai 14, 2014, 11:48:23 pm »
Ton utilisation de la variable "settings" n'a ni queue ni tête. Ce sera mieux comme ça :

sf::ContextSettings settings;
settings.depthBits = 32;
settings.majorVersion = 3;
settings.minorVersion = 3;

sf::RenderWindow window(sf::VideoMode(900,900), "OpenGL", sf::Style::Close, settings);
 
Laurent Gomila - SFML developer

Yruama

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : SFML + OpenGL
« Réponse #2 le: Mai 15, 2014, 03:50:23 pm »
J'ai changé :).

Seulement mon programme Segfault a la ligne "glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertices);"
« Modifié: Mai 15, 2014, 04:02:17 pm par Yruama »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML + OpenGL
« Réponse #3 le: Mai 15, 2014, 04:18:30 pm »
Il faut appeler glewInit() si tu utilises GLEW.
Laurent Gomila - SFML developer

Yruama

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : SFML + OpenGL
« Réponse #4 le: Mai 15, 2014, 05:32:16 pm »
Ca ne SegFault plus, mais ca ne m'affiche toujours pas ce ****** triangle ...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML + OpenGL
« Réponse #5 le: Mai 15, 2014, 08:41:52 pm »
Ca peut être tes shaders, qu'on ne voit pas ici.

Est-ce que tu sais ce que tu fais ? Parce que là tu sembles tâtonner un peu dans tous les sens, il faudrait peut-être que tu passes un peu plus de temps à bosser tes bases de C++ / SFML / OpenGL avant d'essayer d'afficher quelque chose.
Laurent Gomila - SFML developer

Yruama

  • Newbie
  • *
  • Messages: 6
    • Voir le profil
Re : SFML + OpenGL
« Réponse #6 le: Mai 16, 2014, 12:30:03 pm »
Ca marche j'ai du mettre a jour les drivers de ma carte graphique pour avoir la version 4.4 d'OpenGL.