唐磊的个人博客

VIM编写OpenGL环境配置(MinGW)

一般的OpenGL教程都没有用VS等开发环境,直接用glut.h中相关定义来实现窗口显示、事件绑定等操作。之前用配置了环境VIM编写C、C++等程序,直接写OpenGL程序编译运行等不能直接操作,还需一定的配置。MinGW官网也给出了解决方案,参照此结合其他资源给出了自己的解决方法,记录以供查阅。(cygwin应该也是类似的配置)

1、下载相应glut库,目前windows版本3.7beta,官网见此。

2、解压后得到如下文件,分别copy至mingw目录。

  • *.lib(glut32.lib,glut.lib)—–>C:\MinGW\lib\(至你的MinGW安装目录lib下)
  • glut.h—->C:\MinGW\include\GL\(没有的话,mkdir gl)
  • *.dll(glut.dll,glut32.dll)—–>C:\windows\system32\(系统sysem32路径)

3、写个例子.

#include <gl/glut.h>
#define WIDTH 400
#define HEIGHT 400

void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(1.0, 0, 0);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}

int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutInitWindowSize(WIDTH, HEIGHT);
glutCreateWindow("OpenGL-HelloWorld");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}

4、编译&运行.

直接通过默认的GCC编译参数通不过,报“undefined references”等错误,得加相关参数。GLUT_DISABLE_ATEXIT_HACK貌似说的是在glut编译时保证用一样的C run-time libraries (CRTs).

gcc t.cpp -D_STDCALL_SUPPORTED -DGLUT_DISABLE_ATEXIT_HACK -lopengl32 -lglu32 -lglut32 -o t.exe

运行t.exe即可。

可以配置到VIMRC文件中,map到键盘就方便了,跟一般的C++/C程序区分下,另外加个编译的映射,比如ctrl+alt+F5,运行还是不变。

func CompileOpenGLRun()
exec "!gcc % -g -o %<.exe -D_STDCALL_SUPPORTED -DGLUT_DISABLE_ATEXIT_HACK -lopengl32 -lglu32 -lglut32 "
endfunc
"定义Run函数
func Run()
if &filetype == 'c' || &filetype == 'cpp'
exec "!%<.exe"
elseif &filetype == 'java'
exec "!java %<"
endif
endfun
map <C-A-F5> :call CompileOpenGLRun()<CR>
map <F9> :call Run()<CR>

现在就是ctrl+alt+f5编译,f9运行即可。如果你还不行,试着在文件开始 include <windows.h>,define 一些常量等,详细情况可以参考后面的参考文章。

参考文章:

1、HOWTO Use Mark J. Kilgard’s OpenGL Utility Toolkit (GLUT) with MinGW

2、How to use Glut with MinGW G++

tanglei wechat
欢迎扫码加入互联网大厂内推群 & 技术交流群,一起学习、共同进步