VSCode配置OpenGL环境(GLUT)及常见问题解决

一、下载 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博客

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值