【OpenGL】使用MinGW下gcc编译OpenGL的glut和freeglut库

前言

GLUT/freeglut 是什么? OpenGL 和它们有什么关系?
OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用。如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异写一些代码。要跳过这些工作,可以用一个utility库,直接使用它提供的函数,就不用操心那些细节了。这样的库新一点的有GLEW,因为开源所以安装相对方便(大不了丢进去一起编译),但各种教程和书里常见的是闭源的GLUT。由于GLUT的作者已经很久没更新过了(最后更新于2000年!= =),所以其他人另外做了一个接口兼容GLUT的freeglut,开源而且一直在维护中。【3】


环境

Window10、gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)、glut库(下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip)
、freeglut库(下载地址:http://freeglut.sourceforge.net/index.php#download)、cmake工具(下载地址:https://cmake.org/download/)


步骤

第一、glut库的配置和使用

  1. 将下载的压缩包解开,将得到5个文件
  2. 在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。
  3. 把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。
  4. 把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)参考【1】
  5. 将glut32.dll放入

C:\Windows\SysWOW64

其中,第5步目的是为了防止win10操作系统中找不到glut32.dll,无法继续执行代码的问题,可能与平台位数有关。

  1. 新建程序,参考【1】
#include <GL/glut.h>
void myDisplay(void)
{
     glClear(GL_COLOR_BUFFER_BIT);
     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
     glFlush();
}

int main(int argc, char *argv[])
{
     glutInit(&argc, argv);
     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
     glutInitWindowPosition(100, 100);
     glutInitWindowSize(400, 400);
     glutCreateWindow("第一个OpenGL程序");
     glutDisplayFunc(&myDisplay);
     glutMainLoop();
     return 0;
}
  1. 编译

gcc -o a.exe .\main.c -lglut32 -lopengl32

否则会出现很多编译问题,可参考【2】。


第二、freeglut库的配置和使用【4】

  1. 下载freeglut源码
    下载地址如上。

  2. 下载cmake工具
    cmake工具用于辅助编译过程。
    使用cmake工具和本地c/c++编译器,编译freeglut库,生成Windows平台下的Visual Studio的项目。
    在这里插入图片描述
    注:其中选择Visual Studio版本部分就选自己电脑上的版本即可。

  3. 使用Visual Studio编译freeglut项目
    点击.sin文件,直接生成解决方案即可。
    可以在 freeglut_build\bin\Debugfreeglut_build\lib\Debug 下看到相应的freeglutd.dll和freeglutd.lib文件。

  4. 按照类似于glut库的放置位置,将这库中的头文件和这两个文件放入相应位置

  5. 测试freeglut配置结果
    除了把头文件换成 #include <GL/freeglut.h> 之外,代码都不用变。


参考

  1. OpenGL入门学习

  2. win10用gcc编译glut程序出现undefined reference to `_imp__glClear‘

  3. 【OpenGL开发】GLUT/freeglut 是什么? OpenGL 和它们有什么关系?

  4. windows从零搭建OpenGL freeglut环境

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值