Windows Visual Studio 2017 配置 freeglut3.2.1

摘要

【解决方案】
手动配置:
使用 CMake 编译 freeglut,并使用 VS 2017 生成解决方案配置 freeglut3.2.1
自动配置:
使用 VS 的 NuGet 组件进行配置

软件环境

Source Version
CMake 3.15.4-win64-x64
freeglut 3.2.1
VS Community 2017 15.9.16

手动方法

一、CMake 编译

下载 CMake(msi安装版)freeglut 文件

  • 得到的 freeglut 部分目录结构如下:
    freeglut-3.2.1
    ├─android
    │ └─gles2
    ├─doc
    ├─include
    │ └─GL
    ├─progs
    │ ├─demos
    │ └─test-shapes-gles1
    └─src

  • 在目录下新建 build 目录,使用 CMake 编译文件

  • 分别填入 freeglut 目录和新建的 build 目录
  • 选择项目生成工具以及平台
  • 再 Configure 一次,待下方出现 Configuring done ,然后 Generate,Generating done 后编译完成,\build\ 目标目录部分结构如下:
    build
    ├─CMakeFiles
    ├─FreeGLUT
    └─src

二、VS 生成解决方案

  • 使用 Visual Studio 打开 freeglut-3.2.1\build\ 目录下的 freeglut.sln 项目,分别使用 ReleaseDebug 模式生成解决方案,目录下生成了很多新的文件
    ├─bin
    │ ├─Debug
    │ └─Release
    ├─CMakeFiles
    ├─FreeGLUT
    ├─lib
    ├─…
    └─x64

三、搬运库文件

  • build\bin\Debug\freeglutd.dllbuild\bin\Release\freeglut.dll 拷贝至 C:\Windows\System32 目录下
    (在 64 位 Windows 下:64 位 exe 和 dll 在目录 C:\Windows\System32 下,32 位 exe 和 dll 在目录 C:\Windows\SysWOW64 下)

四、在 VS 中进行配置

  • 目录 -> 属性 -> VC++ 目录 -> 包含目录 添加 freeglut-3.2.1\include 目录
  • 库目录 添加 build\lib\Debugbuild\lib\Release 目录
  • 链接器 -> 输入 -> 附加依赖项 添加 freeglut.libopengl32.lib

五、新建项目测试

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<gl/GLUT.H>
void Initial(void)//初始化函数
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);//白色背景,前3个是RGB,最后是Alpha值,用来控制透明,1.0表示完全不透明
glMatrixMode(GL_PROJECTION);//OpenGL按照三维方式来处理图像,所以需要一个投影变换将三维图形投影到显示器的二维空间中
gluOrtho2D(0.0, 200, 0.0, 150.0);//指定使用正投影将一个x坐标在0~200,y坐标0~150范围内的矩形坐标区域投影到显示器窗口

}
void myDisplay(void)//显示回调函数
{
glClear(GL_COLOR_BUFFER_BIT);//使用glClearColorz中指定的值设定颜色缓存区的值,即将窗口中的每一个像素设置为背景色
glColor3f(0.0f, 0.0f, 0.0f);//绘图颜色为黑色
glRectf(50.0f, 100.0f, 150.0f, 50.0f);//图形的坐标,绘制一个左上角在(50,100),右下角在(150,50)的矩形
glFlush();//清空OpenGL命令缓冲区,强制执行命令缓冲区中所有OpenGL函数
}
int main(int argc, char * argv[])//这是使用glut库函数进行窗口管理
{
glutInit(&argc, argv);//使用glut库需要进行初始化
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//设定窗口显示模式,颜色模型和缓存,这里是RGB颜色模型和单缓存
glutInitWindowPosition(100, 100);//设定窗口的初始位置,屏幕左上角为原点,单位为像素
glutInitWindowSize(400, 400);//设定窗口的大小
glutCreateWindow("freeglut配置完成测试");//创建一个窗口,参数是窗口标题名
glutDisplayFunc(&myDisplay);//将myDisplay指定为当前窗口的显示内容函数
Initial();
glutMainLoop();//使窗口框架运行起来,使显示回调函数开始工作
return 0;
}

测试结果

运行结果为白色背景下的黑色矩形

自动方法

使用以上手动方法只是为了学会并熟悉人工配置的过程,实际上功能强大的 宇宙第一 IDE —— Visual Studio完全可以做到自动配置

  • 在 VS 中安装 NuGet 组件
  • 打开项目,在 项目 -> 管理NuGet程序包 中搜索并下载 nupengl.core,配置工作就完成了 可以看到该组件不仅配置好了 FreeGlut,甚至还配置好了 GLEW 和 GLFW
    VS 真牛逼!