从零开始搭建 OpenGL 编程环境(Win 10 + VS 2015 + FreeGLUT + GLEW)
如今科技界已经让 VR(虚拟现实)、AR(增强现实),3D打印等概念深入人心,其实这些火遍大江南北的概念背后,都与「计算机图形学」这门学科的有着很大联系。但想要入门或学习计算机图形学方面的编程,前期都需要花费一定的时间进行环境配置。图形学编程环境的搭建,即使对于有编程经验的人来说,虽然不难,但也会感到比较繁琐,而且往往图形学项目都会涉及到很多工具和库。而计算机图形学方面的编程,必不可少地会涉及到 OpenGL。
OpenGL 的全称是 Open Graphics Library ,以下是引用自 OpenGL 官方网站的一段介绍:
OpenGL is the premier environment for developing portable, interactive 2D and 3D graphics applications. Since its introduction in 1992, OpenGL has become the industry's most widely used and supported 2D and 3D graphics application programming interface (API), bringing thousands of applications to a wide variety of computer platforms.
简单来说,OpenGL 就是一个功能强大、支持多个平台、用于二维和三维图形的底层图形库。
所以,为了让大家更简单地接触 OpenGL 编程,这篇文章将从零开始介绍搭建一个 OpenGL 编程环境的过程,并给出背后的一些相关概念。考虑到让这篇文章能在未来也保持一定的普适性和时效性,便选择了已逐渐成为主流的 Windows 10 操作系统,以及 Visual Studio Community 2015 + FreeGLUT 2.8.1 + GLEW 1.13.0 的工具组合。
下面将会分别简单介绍这几个工具。
Visual Studio Community 2015
微软为了促进 Windows 10 的生态环境,决定将之前售价高昂的 Visual Studio 开发工具最大限度地 “免费” 提供给单个开发人员、 开源项目、科研、教育以及小型专业团队!从 VS 2013 开始便推出了一个全新的「社区版」,也就是 Community 版本。Community 版本与以前免费的 Express 版本相比,相当于集成了多个针对不同平台的 Express 版本 ,而且具有更多的功能和特性。Community 版本的用户能使用各种优秀强大的插件,但 Express 版本的用户却无法享用,因此更建议使用 Community 版本。
FreeGLUT
GLUT 的全称为 OpenGL Utility Tookit。最初 Mark Kilgard 为了使 OpenGL 应用程序结构能够真正独立于窗口系统而构思了 GLUT 库。但由于 GLUT 库很早就已经不再维护更新,便诞生了与 GLUT 库兼容的开源实现版本 FreeGLUT。FreeGLUT 库主要用来创建窗口,初始化 OpenGL 的环境,管理用户鼠标、键盘的输入,以及让 OpenGL 程序变得简单和提升可移植性。
GLEW
GLEW 的英文全称为 The OpenGL Extension Wrangler Library,是一个基于 OpenGL、跨平台、开源的 C++ 扩展库。GLEW 提供了有效的运行机制,以寻找和识别你的平台所支持的全部 OpenGL 高级扩展函数。也就是说,只要包含一个 glew.h 头文件,你就能使用以 gl、glu、glext 等开头的全部函数。GLEW 已被测试能支持目前流行的各种操作系统,包括 Windows、Linux、Mac OS X、FreeBSD、Irix 和 Solaris。
值得一提的是,由于微软希望推广自己的 DirectX,在 Windows 中仅支持到最简单的 OpenGL 1.1 版本。但最新的 OpenGL 现在都已发展到 4.0 以上了,若要用到一些 OpenGL 的高级特性,就必须更新 OpenGL。另外,不同的显卡公司,也会发布各自显卡的扩展函数,为了调用这些函数,不得不去寻找最新的 glext.h。但有了 GLEW ,具有自动识别的封装使得 OpenGL 中的高级函数可以被方便地调用。
接下来将给出在 Windows 平台下,搭建最常用 OpenGL 编程环境的详细过程。
1. VS Community 2015 下载
(1)打开网址 https://www.visualstudio.com/downloads/download-visual-studio-vs
(2)选择 Visual Studio 2015,勾选 ISO,点击下载。
2. VS Community 2015 安装
(1)打开 vs2015.2.com_chs.iso。
(2)最好选择在默认的安装位置,并勾选自定义,点击下一步。
(3)这里需要勾选上编程语言中的“ Visual C++”,其余根据各自的需求勾选,并点击下一步,直到开始安装。
(4)安装完成。若安装过程中出现“Team Explorer for Visual Studio 2015”的错误,可能是由于多个版本的 Visual C++ Redistributable 所致。但只需控制面板中对 Visual Stuidio Community 2015 点击“更改”,并选择修复,即可继续安装直到完成。
3. FreeGLUT 库编译
(1)打开网址 http://freeglut.sourceforge.net/index.php#download
(2)选择 Freeglut 2.8.1 版本下载。
(3)解压后得到 freeglut-2.8.1 文件,进入 VisualStudio,选择版本 2012,打开解决方案 freeglut.sln。
(4)初次打开 Visual Studio 的话,开发设置选择 Visual C++。
(5)对所有由 Visual Studio 2012创 建的 FreeGLUT 项目,点击“确认”升级 VC++ 编译器和库,以支持 Visual Studio 2015 的编译。
(6)选择 Release 版本,打开“生成”菜单,点击“生成解决方案”。
(7)编译成功后,返回到 freeglut-2.8.1 根目录,将 include 下的 GL 文件夹复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include 文件夹。
(8)返回到 freeglut-2.8.1 目录,把 lib\x86 里面的 freeglut.lib 复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 中。
(9)把 lib\x86 里面的 freeglut.dll 复制到 C:\Windows\SysWOW64 文件夹中。
对于 32 位 Windows 操作系统,16 位的 DLL 文件被存放在 \Windows\System 文件夹里,32 位 DLL 文件会被被存放在 \Windows\System32 的文件夹里。
但对于 64 位版本的 Windows 保持 64 位和 32 位 DLL 文件的方式会相对复杂些,微软因此创建了一个新的名为 SysWOW64 的文件夹来存放 32 位的 DLL 文件,使用 \Windows\System32 文件夹作为 64 位 DLL 的文件夹,而不是存放 32 位 DLL 文件的文件夹。
至此,FreeGLUT 库的配置就完成了!
其实添加这类第三方库文件一般有两种方式,一种便是上述提到的将与库相关的 include,lib 和 DLL 文件复制到 VS 的程序目录和系统目录,这样通过默认的路径就能找到所需的文件。而另一种则是将库相关的文件放到项目自建的一个文件夹下,然后通过 VS 配置项目的附加目录,从而找到所需的库文件。这种方式的好处是,当前的项目会更具有可移植性,即使在没配置好第三方库的电脑,也可以直接运行项目程序。然而,从操作简便性的角度上看,第一种更适合当前的学习环境,配置了一次后,接下来新的 OpenGL 项目都无需再进行环境配置。
4. GLEW 库编译
(1)打开网址 http://glew.sourceforge.net/
(2)选择 1.13.0 版本源代码 ZIP 格式压缩包,对库进行编译(若选择下方针对 Windows 平台已编译好的库文件,则可以跳过编译阶段。但为了兼容稳定性,推荐下载源代码后再编译得到库文件)。
(3)解压后进入 glew-1.13.0 文件夹。在 build 文件夹中选择 vc12,打开 glew.sln 解决方案。
(4)下面与配置 FreeGLUT 的过程类似。会提示对由更低版本 VS 创建的 GLEW 项目进行升级,点击“确认”升级 VC++ 编译器和库,以支持 VS 2015 的编译。
(5)选择 Release 版本,打开“生成”菜单,点击“生成解决方案”。
(6)编译成功后,返回到 glew-1.13.0 根目录,将 include 下的 GL 文件夹整个复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include 文件夹,与前面的 GL 文件夹合并。
(7)返回 glew-1.13.0 目录,把 lib\Release\Win32中的glew32.lib 复制到 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 里。
(8)把 bin\Release\Win32 里面的 glew32.dll 复制到 C:\Windows\SysWOW64 文件夹中。
至此,GLEW 库的配置就完成了!
5. 编译第一个 32 位 OpenGL 应用程序
最后,通过编译一个 32 位 OpenGL 应用程序以测试环境配置是否成功。
(1)新建项目,选择即空项目,为项目命名为 Test。
(2)在源文件中单击右键,选择添加新建项。
(3)添加命名为 test.cpp 的 cpp 文件。
(4)将以下代码添加入 test.cpp 文件中。
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 28 29 30 | #include <cstdio> #include <GL/glew.h> #include <GL/freeglut.h> #pragma comment(lib, "glew32.lib") void displayFunction() { glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5, -0.5, 0.5, 0.5); glColor3f(0.0, 1.0, 0.0); glFlush(); }; int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(600, 600); glutCreateWindow("The first OpenGL Application"); glewExperimental = true; glewInit(); printf("OpenGL version: (%s) \n", glGetString(GL_VERSION)); glutDisplayFunc(&displayFunction); glutMainLoop(); return 0; } |
(5)选择任一生成版本(Release 或 Debug 版本都可以),点击“本地 Window 调试器”,生成并运行程序。
若能编译成功,并显示出带有绿色正方形的窗口和输出 OpenGL 版本号,则代表 OpenGL 环境配置完成!
Latest posts by LEEMANCHIU (see all)
- SIGGRAPH Asia 2017 之旅 - 2017-12-10
- SIGGRAPH 2017 之旅 - 2017-12-05
- 深入理解现代 OpenGL - 2016-08-29
非常感谢!!!
多谢分享,但是一直卡在一个问题上,如何设置版本为2012呢
问题已经解决,多谢
非常感谢!
太棒了!按照楼主的指示一步一步操作,就可以了!!太感谢!!win10 + vs2015 community + Freeglut 2.8.1 + glew 2.1.0,成功!
非常感谢!