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;
}