我正在尝试通过Nehe指南学习OpenGL并提高我的C++技能,但所有的例子都是针对Windows而我目前正在使用Linux.我真的不知道如何在Linux下工作,并且已经为Linux移植的网站上的代码中有更多的代码没有解释(到目前为止,我唯一得到的代码)工作是SDL的例子:http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz).还有其他任何资源在Linux下对OpenGL更具针对性吗?
首先要做的是安装OpenGL库.我建议:
freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev
安装完成后,在编译时链接到它们:
g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example
在example.cpp中,包含OpenGL库,如下所示:
#include#include #include #include #include
然后,要启用更高级的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");
这应该启用所有OpenGL功能,如果没有,那么它应该告诉你问题.
我猜这是编译过程最初的最大区别.这是一个有用的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的文件中,该文件应位于同一目录中.通过从终端编写make或从Vim 编写make来编译.
祝好运