48 votes

Apprendre OpenGL sous Ubuntu

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?

71voto

Ned Points 1796

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.

9voto

Millthorn Points 1257

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

3voto

abimelex Points 1180

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

1voto

Gaston Points 666

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X