Je suis en train d'apprendre OpenGL et améliorer mon C++ compétences en passant par la Nehe guides, mais tous les exemples sont pour Windows et je suis actuellement sur Linux. Je n'ai pas vraiment d'idée de comment avoir des choses à travailler sous Linux, et le code sur le site qui a été porté pour Linux a beaucoup plus de code qui n'est pas expliqué (pour l'instant, le seul que j'ai eu à travailler est la SDL exemple: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). Est-il de toute autre ressource qui est un peu plus spécifique vers OpenGL sous Linux?
Réponses
Trop de publicités?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, en lien lors de la compilation:
g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example
Dans example.cpp, inclure les bibliothèques OpenGL comme suit:
#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glext.h>
Puis, afin de permettre la plus avancée opengl, comme les options de shaders, place cet après votre glutCreateWindow Composez le:
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");
Qui devraient permettre à toutes les fonctionnalités OpenGL, et si elle ne le fait pas, il doit vous indiquer les problèmes.
J'imagine que c'est le processus de compilation qui constitue la plus grande différence au départ. Voici un fichier 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 $@ $(LIBDIR) $< $(LIBS) # The initial white space is a tab
Enregistrez aussi un fichier appelé Makefile , et devrait être dans le même répertoire. Compilez en écrivant make from terminal ou: make à partir de Vim.
Bonne chance
une petite mise à jour pour le makefile parce que j'ai trouvé cette vieille réponses de @Millthorn et il n'a pas travaillé: vous n'avez pas besoin de definde le chemin de l', puisque c'est dans la norme lib http://stackoverflow.com/a/2459788/1059828
un minimum de makefile 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_Ubuntu
Peut-être voudriez-vous utiliser Qt pour dessiner les fenêtres et les widgets.
Voici un tutoriel basé sur les guides Nehe pour vous montrer comment créer des images OpenGL avec Qt.
Pour apprendre OpenGL, OpenGL Red Book est une lecture incontournable. Il y a une version en ligne. Il a de très bonnes explications et exemples.