本文整理自LearnOpenGL 及LearnOpenGL CN ,后者为前者的中文版。完整学习的话建议前往原网站。
GLFW
GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入。
GLFW在不同平台下使用时需要导入的头文件并不一样。
GLEW
GLEW(OpenGL Extension Wrangler Library),用于获取OpenGL中的函数位置(指针),以便于调用该函数。
编译和链接GLEW
静态(Static)链接是指编译时就将库代码里的内容整合进你的二进制文件。优点就是你不需要管理额外的文件了,只需要发布你单独的一个二进制文件就行了。缺点就是你的可执行文件会变得更大,另外当库有升级版本时,你必须重新进行编译整个程序。
动态(Dynamic)链接是指一个库通过.dll或.so的方式存在,它的代码与你的二进制文件的代码是分离的。优点是使你的二进制文件大小变小并且更容易升级,缺点是你最终发布程序时必须带上这些DLL。
如果你希望静态链接GLEW,必须在包含GLEW头文件之前定义预处理器宏GLEW_STATIC
#define GLEW_STATIC
#include <GL/glew.h>
Linux下编译时需要使用-lGLEW -lglfw3 -lGL -lX11 -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lm -pthread -ldl -std=c++11
等参数。