2009-05-13 23 views
42

Estoy tratando de aprender OpenGL y mejorar mis habilidades en C++ pasando por el Nehe guides, pero todos los ejemplos son para Windows y actualmente estoy en Linux. Realmente no tengo idea de cómo hacer que las cosas funcionen en Linux, y el código en el sitio que se ha portado para Linux tiene mucho más código que no se explica (hasta ahora, el único que he recibido) el trabajo es el ejemplo SDL: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). ¿Hay algún otro recurso que sea un poco más específico para OpenGL en Linux?Aprendizaje OpenGL en Ubuntu

+0

Reconozco que el cierre de temas en Stack Overflow se está volviendo un poco nazi, pero estoy seguro de que muchas personas tienen este problema; sería más adecuado en [GameDev StackExchange] (http://gamedev.stackexchange.com/) – cossacksman

Respuesta

65

Lo primero que debe hacer es instalar las bibliotecas OpenGL. Recomiendo:

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

Una vez que haya instalado ellas, enlace a ellos cuando se compila:

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

En example.cpp, incluir las librerías OpenGL, así:

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

Entonces , para habilitar las opciones de OpenGL más avanzadas, como los sombreadores, colóquelo después de su 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");

Eso debería habilitar toda la funcionalidad de OpenGL, y si no lo hace, entonces debería decirle los problemas.

+0

¿hay alguna manera de obtener la funcionalidad de OpenGL 4.5? o al menos 4.1? –

+0

'fprintf (stdout,"% s \ n ", glGetString (GL_VERSION));' salidas '3.0 Mesa 17.3.0-devel' aunque tengo 4.5 'Cadena de versión de perfil de núcleo de OpenGL: 4.5 (Core Profile) Mesa 17.3.0-devel' –

1

Quizás le gustaría usar Qt para dibujar ventanas y widgets.

Here es un tutorial basado en las guías de Nehe para mostrarle cómo crear imágenes OpenGL con Qt.

Para aprender OpenGL, el OpenGL Red Book es una lectura obligada. Hay una versión en línea. Tiene muy buenas explicaciones y ejemplos.

8

Supongo que es el proceso de compilación que es la mayor diferencia inicialmente. Aquí hay un útil Makefile para compilar aplicaciones OpenGL simples en 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 

Guardar esto también un archivo llamado Makefile , y debe estar en el mismo directorio. Compilar escribiendo hacer desde el terminal o: hacer desde Vim.

Buena suerte