在Ubuntu学习OpenGL

我试图学习OpenGL,并通过讷河指南来提高我的C ++技能,但所有的例子都是针对Windows的,而我目前在Linux上。 我真的不知道如何让Linux在Linux下工作,并且已经移植到Linux上的代码有更多的代码,这是没有解释(到目前为止,我唯一得到的代码工作是SDL的例子: http : //nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz )。 有没有其他的资源在Linux下对OpenGL更具体一些?

首先要做的是安装OpenGL库。 我build议:

 freeglut3
 freeglut3-dev的
 libglew1.5
 libglew1.5-dev的
的libglu1台面
的libglu1台面-dev的
填实libgl1台面-GLX
填实libgl1台面-dev的

一旦你安装了它们,在编译时连接到它们:

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

在example.cpp中,像这样包含OpenGL库:

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

然后,为了启用更高级的opengl选项(如着色器),请在您的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"); 

这应该使所有的OpenGLfunction,如果没有,那么它应该告诉你的问题。

我猜测编译过程最初是最大的区别。 这是一个有用的Makefile,用于在Ubuntu上编译简单的OpenGL应用程序。

 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 

另外保存一个名为Makefile的文件 ,并且应该在同一个目录下。 从terminal编写make或从Vim编译。

祝你好运

makefile的一个小的更新,因为我发现@Millthorn这个旧的答案,它没有奏效:你不需要definde包含path,因为它是在标准库中https://stackoverflow.com/a/2459788/1059828

编译开放GL的最小makefile可能如下所示:

 LDFLAGS=-lglut -lGL -lGLU -lGLEW -lm all: your_app 

http://surflab.cise.ufl.edu/wiki/Getting_Started_with_OpenGL_in_Ubuntu

也许你想用Qt来绘制窗口和小部件。

这里有一个基于讷河指南的教程,向您展示如何用Qt创buildOpenGL图像。

要学习OpenGL,必须阅读OpenGL红皮书 。 有一个在线版本。 它有很好的解释和例子。