OpenGLut开发入门系列教程0:OpenGL开发库介绍

系列教程索引:OpenGLut开发入门系列教程索引

OpenGL系列分为OpenGL标准版、ES版、SC。

OpenGL

OpenGL PC版为最全版本,一般由显卡厂商提供最全的支持。不同系统与OpenGL交互接口为WGL/GLX/AGL

在嵌入式设备中(比如手机、树莓派等等)使用简化版的OpenGL,即OpenGL ES(Embedded System)。系统窗口与OpenGL ES交互接口为EGL

在飞机、汽车等实时性要求比较高的情况下,OpenGL ES再次简化为OpenGL SC(Safety Critical Profile),只有十几个函数。

下表是开发所需要的库说明:

名称功能版本备注
GLGraphic Library,图形程序库。OpenGL的主链接库。libGL.so.1.7.0
GLUOpenGL utility,扩展了GL库中3D数学部分。libGLU.so.1.3.1
glutOpenGL Utility Toolkit是一个处理OpenGL程式的工具库,负责处理和底层操作系统的调用以及I/O。(代替aux库的独立GUI)libglut.so.3.11.0
GLXGLX是OpenGL Extension to the X Window System的缩写。它作为x的扩展,是x协议和X server的一部分,已经包含在X server的代码中了。GLX提供了x window system使用的OpenGL接口,允许通过x调用OpenGL库。OpenGL 在使用时,需要与一个实际的窗口系统关联起来。在不同平台上有不同的机制以关联窗口系统,在Windows上是WGL,在Linux上是GLX,在Apple OS上是AGL等。libGLX_nvidia.so.450.80.02
EGLEGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,且它最好是与平台无关的。因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁。libEGL.so.1.1.0
GLEWglew(The OpenGL Extension Wrangler Library)是对底层OpenGL接口的封装,可以让你的代码跨平台。不同的显卡公司,也会发布一些只有自家显卡才支持的扩展函数,你要想用这些涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl/glu/glext/wgl/glx的全部函数。libGLEW.2.2.0
gladglad与glew作用相同,可以看作它的升级版。
freeglutOpenGL Utility Toolkit主要用于创建OpenGL上下文、接收一些鼠标键盘事件等等。
glfwGraphics Library Framework是Freeglut升级版,作用基本一样。libglfw.3.3
GLUS一个开源的C库,它提供了一个硬件和操作系统抽象,以及使用OpenGL、opengles或OpenVG进行图形编程所需的许多函数。

通常来说glad和glfw配合使用。glew和Freeglut配合使用,比如OpenGL红宝书上面的例子。

说明:如果需要glu开头的函数,就需要包含GLU开发库,以此类推。

Qt开发配置

1
2
3
4
5
6
7
INCLUDEPATH += /usr/include/GL \
/usr/include/GLES2 \
/usr/include/GLES3 \
/usr/include/GLFW \
/usr/include/EGL

LIBS += -lglut -lGL -lGLU -lglfw

Makefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
file = none
CXX = g++
INCPATH = -I. -isystem /usr/include/GL \
/usr/include/GLES2 \
/usr/include/GLES3 \
/usr/include/GLFW \
/usr/include/EGL
LIBS = -L/usr/lib \
-lglut -lGL -lGLU -lglfw

all:
$(CXX) -c $(INCPATH) $(file).cpp
$(CXX) -o $(file) $(file).o $(LIBS)
rm *.o

CMake

Qt开始逐步使用CMake代替QMake。本系列的所有编译工具使用CMake。

这样有Qt可以使用Qt打开,没有Qt使用命令行编译。

所有源代码地址:OpenGL

下一篇:OpenGLut开发入门系列教程1:hello world