J'essaie d'apprendre OpenGL et d'améliorer mes compétences en C++ en passant par les guides Nehe , mais tous les exemples sont pour Windows et je suis actuellement sous Linux. Je ne sais pas vraiment 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 auquel j'ai pu accéder le travail est l'exemple SDL : http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz =). Existe-t-il une autre ressource un peu plus spécifique vers OpenGL sous Linux?
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, liez-les lorsque vous compilez:
g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example
Dans example.cpp, incluez 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 activer toutes les fonctionnalités d'OpenGL, et si ce n'est pas le cas, il devrait vous indiquer les problèmes.
Je suppose que c'est le processus de compilation qui est la plus grande différence au départ. Voici un utile Makefile 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 $@ $(LIBDIR) $< $(LIBS) # The initial white space is a tab
Enregistrez-le dans un fichier appelé Makefile qui devrait être dans le même répertoire. Compiler en écrivant faire à partir du terminal ou: faire de Vim.
Bonne chance
une petite mise à jour pour le makefile car j'ai trouvé ces anciennes réponses de @Millthorn et cela n'a pas fonctionné: vous n'avez pas besoin de définir le chemin d'inclusion car il est en lib standard https://stackoverflow.com/a/2459788/1059828
un makefile minimal pour compiler open GL pourrait ressembler à ceci:
LDFLAGS=-lglut -lGL -lGLU -lGLEW -lm
all: your_app
http://surflab.cise.ufl.edu/wiki/Getting_Started_with_OpenGL_in_Ubunt
Vous souhaitez peut-être utiliser Qt pour dessiner les fenêtres et les widgets.
Ici est un tutoriel basé sur les guides Nehe pour vous montrer comment créer des images OpenGL avec Qt.
Pour apprendre OpenGL, le OpenGL Red Book est une lecture incontournable. Il y a une version en ligne. Il a de très bonnes explications et exemples.