2009-05-13 21 views
42

Sto cercando di imparare OpenGL e migliorare le mie competenze C++ passando attraverso il Nehe guides, ma tutti gli esempi sono per Windows e attualmente sono su Linux. Non ho davvero idea di come far funzionare le cose sotto Linux, e il codice sul sito che è stato portato per Linux ha molto più codice in esso che non è spiegato (finora, l'unico che ho ottenuto il lavoro è l'esempio SDL: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). C'è qualche altra risorsa là fuori che è un po 'più specifica verso OpenGL sotto Linux?Learning OpenGL in Ubuntu

+0

Ammetto che le chiusure di argomenti su Stack Overflow stanno diventando un po 'naziste, ma sono sicuro che molte persone hanno questo problema; sarebbe più adatto a [GameDev StackExchange] (http://gamedev.stackexchange.com/) – cossacksman

risposta

65

La prima cosa da fare è installare le librerie OpenGL. Mi raccomando:

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

Una volta li installato, il link a loro quando si compila:

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

In example.cpp, includere le librerie OpenGL in questo modo:

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

Poi , per abilitare le opzioni opengl più avanzate come gli shader, posiziona questo dopo il tuo glutCreateWindow Call:

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");

Questo dovrebbe abilitare tutte le funzionalità di OpenGL, e se così non fosse, allora dovrebbe dirvi i problemi.

+0

c'è un modo per ottenere la funzionalità 4.5 opengl? o almeno 4.1? –

+0

'fprintf (stdout,"% s \ n ", glGetString (GL_VERSION));' output '3.0 Mesa 17.3.0-devel' anche se ne ho 4.5 'Versione del profilo core OpenGL stringa: 4.5 (Profilo principale) Mesa 17.3.0-devel' –

1

Forse ti piacerebbe usare Qt per disegnare finestre e widget.

Here è un tutorial basato sulle guide di Nehe per mostrare come creare immagini OpenGL con Qt.

Per imparare OpenGL, è necessario leggere OpenGL Red Book. C'è una versione online. Ha ottime spiegazioni ed esempi.

8

Indovino che è il processo di compilazione che è la differenza più grande inizialmente. Ecco un utile Makefile per compilare semplici app OpenGL su 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 

Salva anche questo un file chiamato Makefile , e dovrebbe essere nella stessa directory. Compilare scrivendo fare dal terminale o: fare da Vim.

Buona fortuna