2009-05-13 6 views
42

J'essaie d'apprendre OpenGL et d'améliorer mes compétences C++ en passant par le Nehe guides, mais tous les exemples sont pour Windows et je suis actuellement sur Linux. Je n'ai vraiment aucune idée de comment faire fonctionner les choses sous Linux, et le code sur le site qui a été porté pour Linux contient beaucoup plus de code qui n'est pas expliqué (jusqu'à présent, le seul que j'ai obtenu le travail est l'exemple SDL: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). Existe-t-il d'autres ressources plus spécifiques à OpenGL sous Linux?Apprendre OpenGL dans Ubuntu

+0

J'admets que les clôtures de sujets sur Stack Overflow deviennent un peu nazies, mais je suis sûr que beaucoup de gens ont ce problème; il serait mieux adapté à [GameDev StackExchange] (http://gamedev.stackexchange.com/) – cossacksman

Répondre

65

La première chose à faire est d'installer les bibliothèques OpenGL. Je recommande:

 
freeglut3 
freeglut3-dev 
libglew1.5 
libglew1.5-dev 
libglu1-mesa 
libglu1-mesa-dev 
libgl1-mesa-glx 
libgl1-mesa-dev 

Une fois que vous les avez installés, un lien vers eux lorsque vous compilez:

g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example 

En example.cpp, inclure les bibliothèques OpenGL comme ceci:

#include <GL/glew.h> 
#include <GL/glut.h> 
#include <GL/gl.h> 
#include <GL/glu.h> 
#include <GL/glext.h> 

Ensuite, , pour activer les options opengl plus avancées comme les shaders, placez ceci après votre appel glutCreateWindow:

GLenum err = glewInit(); 
if (GLEW_OK != err) 
{ 
    fprintf(stderr, "Error %s\n", glewGetErrorString(err)); 
    exit(1); 
} 
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION)); 

if (GLEW_ARB_vertex_program) 
    fprintf(stdout, "Status: ARB vertex programs available.\n"); 

if (glewGetExtension("GL_ARB_fragment_program")) 
    fprintf(stdout, "Status: ARB fragment programs available.\n"); 

if (glewIsSupported("GL_VERSION_1_4 GL_ARB_point_sprite")) 
    fprintf(stdout, "Status: ARB point sprites available.\n");

Cela devrait permettre toutes les fonctionnalités OpenGL, et si ce n'est pas le cas, il devrait vous indiquer les problèmes.

+0

est-il un moyen d'obtenir la fonctionnalité opengl 4.5? ou au moins 4,1? –

+0

'fprintf (stdout,"% s \ n ", glGetString (GL_VERSION));' sorties '3.0 Mesa 17.3.0-devel' bien que j'en ai 4.5 'Chaîne de version de profil de noyau OpenGL: 4.5 (Profil de base) Mesa 17.3.0-devel' –

1

Peut-être que vous voulez utiliser Qt pour dessiner les fenêtres et les widgets.

Here est un tutoriel sur la base des Nehe guides pour vous montrer comment créer des images OpenGL avec Qt.

Pour en savoir OpenGL, le OpenGL Red Book est un incontournable. Il y a une version en ligne. Il a de très bonnes explications et des exemples.

8

Je suppose que c'est le processus de compilation qui est la plus grande différence au départ. Voici un Makefile utile pour compiler des applications OpenGL simples sur Ubuntu.

INCLUDE = -I/usr/X11R6/include/ 
LIBDIR = -L/usr/X11R6/lib 

FLAGS = -Wall 
CC = g++         # change to gcc if using C 
CFLAGS = $(FLAGS) $(INCLUDE) 
LIBS = -lglut -lGL -lGLU -lGLEW -lm 

All: your_app        # change your_app. 

your_app: your_app.o 
    $(CC) $(CFLAGS) -o [email protected] $(LIBDIR) $< $(LIBS) # The initial white space is a tab 

Enregistrer ce trop un fichier appelé Makefile, et devrait être dans le même répertoire. Compiler en écrivant make à partir du terminal ou: make from Vim.

Bonne chance