freeglut 是OpenGL Utility Toolkit (GLUT) library 的替代版本,glut 应用广阔,但比较陈旧,很久没有更新。 我原来的opengl 用的是glut, 想更新到64位版本,怎么也找不到合适的下载。最后找到完全替代版本freeglut。
freeglut 的官方网站是https://freeglut.sourceforge.net/ , 可以在这下载,也可以在https://github.com/FreeGLUTProject/freeglut 下载。
我没有找到合适的版本,只好下载了,自己编译。
1: 当然是下载并解压,上面给出了下载地址,下载后解压到C:/study/freeglut-master
2: 用cmake 建立visual studio c++工程,我用的是visual studio 2019版本,
点Config 提示产生工程的版本,我的是Visual studio 16 2019, 然后选择平台,我选了x64,然后 Finish。
第一次Config 的结果有些红区,我再点Config:
再点Config 后就好了,显示Config Done, 我点Generate 就产生工程:
这个时候显示Genearating Done, 然后就可以打开工程了。
打开工程后就编译链接,下图是编译链接成功后的截图:
我在vc 里想改为win32 的版本,结果编译不成功,后来在CMake 的时候重做win32 的版本,这样才能编译成功。重做CMake的时候,不要覆盖原来的x64 版本, Where to build the libraries: 这里修改为biuld32
3:应用中配置
在引用的工程目录设置里
include 目录在 C:\study\freeglut-master\include
lib 目录在 C:\study\freeglut-master\build\lib\Release
和C:\study\freeglut-master\build\lib\Debug
这分别对应Release 版本和Debug 版本的库目录,库文件目录有需要dll 和静态的2个库文件。
include 的改变如下:
//#include <gl/gl.h>
//#include <gl/glu.h>
#include <GL/freeglut.h>
lib 目录中有2个库文件名,以release为例有freeglut.lib,freeglut_static.lib,链接的是那个呢?
打开freeglut.h -> freeglut_std.h
/* Windows static library */
# ifdef FREEGLUT_STATIC
# define FGAPI
# define FGAPIENTRY
/* Link with Win32 static freeglut lib */
# if FREEGLUT_LIB_PRAGMAS
# ifdef NDEBUG
# pragma comment (lib, "freeglut_static.lib")
# else
# pragma comment (lib, "freeglut_staticd.lib")
# endif
# endif
/* Windows shared library (DLL) */
# else
可以看到如果需要链接静态库,需要定义FREEGLUT_STATIC,没有这个定义时链接的动态库