一、下载 C/C++ Compiler
下载地址:MinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net
选择 x86_64-win32-sjlj 进行安装(.seh是新发明的,64位性能好,但若要运行32位程序配置比较繁琐,.sjlj稳定性好,支持32位),这里下载.sjlj是因为GLUT最后一次更新是在1998年,实在太久远了,当时的文件是以32位的格式存储的,而到今日,如果下载.seh则很容易陷入skipping incompatible 和 cannot find 的陷阱中。
下载完后配置环境变量。
按win+R输入cmd打开命令提示符,然后输入 gcc -v 检查gcc版本。
二、VSCode配置C/C++工作区
新建或选取一个文件夹作为工作区文件夹,进行C/C++环境配置,详见参考资料1。
三、下载 GLUT
有的可能会有5-6个文件,有的可能只有3个文件,但问题都不大,按照 .dll,.h,.lib 分开存放各自的位置即可。
(1)将 glut.dll / glut32.dll 文件放入 D:\mingw64\bin 中
(2)将 glut.h 文件放入 D:\mingw64\x86_64-w64-mingw32\include\GL 中
(3)将 glut.lib / glut32.lib 文件放入 D:\mingw64\x86_64-w64-mingw32\lib 中
(具体路径视安装情况而定)
四、完成后回到VSCode修改 .json 文件(详见参考资料1)
tasks.json: 在 args[] 里面添加 "-lglut32", "-lglu32", "-lopengl32"。
settings.json: 在 "code-runner.executorMap": {} 中添加上面新增的内容。
五、也许成功,可尝试以下程序
#include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h> // GLUT头文件
// 图形绘制函数
void myDrawing(void) {
//清除颜色缓冲区
printf("$\n");
glClearColor(0.0, 0.0, 1.0f, 0.0); //设置背景清除蓝色
glClear(GL_COLOR_BUFFER_BIT); //执行清除
//以线框形式绘制一个茶壶
glRotatef(45, 1.0f, 1.0f, 1.0f); //旋转 -- <缩放窗口>
glutWireTeapot(0.5f); //壶
//glutWireSphere(0.5f, 24, 24); //线框球面
//glutWireTorus(0.25f, 0.6, 30, 25); //线框球面
glFlush(); //强制绘图
}
// 主函数
int main(void) {
//对GLUT进行初始化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
//产生一个名为"Hello"的绘制窗口, //使用缺省值
glutCreateWindow("Hello");
//注册绘制函数
glutDisplayFunc(myDrawing);
//清除颜色缓冲区 ----- 放在这里不起作用
//glClearColor(0.0, 0.0, 1.0f, 0.0); //设置背景清除蓝色
//glClear(GL_COLOR_BUFFER_BIT);
//主消息循环
glutMainLoop(); //进入消息循环
return 0;
}
输出应为茶壶:
如果能够成功显示这个茶壶,那么配置完成,很成功。
六、如果失败,可能有以下三种情况
(1)incompatible 的问题:检查是否是安装的 .sjlj 编译器,然后修改 settings.json 文件中的"code-runner.executorMap": {} 部分,在gcc和g++之后加上 -m32 保证能读取32位文件。
(2)undefined reference 的问题:先确定 .dll,.h,.lib 等GLUT文件存放位置无误,如果问题依然存在,可以尝试在 .cpp 文件顶部添加以下代码,基本可以解决问题,注意 #include <window.h> 一定要放在 #include <GL/glut.h> 前面。
#ifdef _WIN32
#include <windows.h>
#endif
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
(3)无法解析的外部符号 __imp____glutInitWithExit@12 之类的问题:在#include<gl/glut.h>之前(上一行)加上 # define GLUT_DISABLE_ATEXIT_HACK 。
#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/glut.h>
七、结语
最后希望大家都能成功配置好GLUT在VSCode中的使用环境,在新时代体验古早的图形API。
参考资料:
VSCode14.1配置简单OpenGL环境(Win10_64位+mingw64+glut)_月湾湾的博客-CSDN博客_vscode配置opengl环境
MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本 - 知乎
Visual Studio Code 如何编写运行 C、C++ 程序? - 知乎
OpenGL编译错误的解决_Zeecool的博客-CSDN博客