OpenGL Tutorial: (1) Setting up OpenGL with Visual Studio

前言

我们准备要开始OpenGL之旅,在开始之前,首先要了解一些事情,也就是本教程的目的,请确定本教程与您的目标一致,以免浪费时间。如果您有任何提议请留言,多谢!

  1. 我本人也是OpenGL初学者,学习进度随个人时间来掌控,没有确定的计划。当然我希望能拿出更多的时间来学习了,但如果项目紧张,可能随时会搁置,有空了再来继续。本文也是随学随记载,纯属笔记性质,记录学习过程。请您多多包涵!

  2. 本文的开发环境将基于Windows(无所谓Win7、Win8、Win10,XP应该也适用),Visual Studio 2013,FreeGLUT和GLEW。如果以后有必要接触其它的开发工具或者库,再另作补充。

  3. 本文参考了一些其它的教程,但整个过程是自己做的。如果不慎有侵犯他人版权之处,请不吝赐教,本人一定立即纠正。多谢!

准备相应的开发工具和开发库

Visual Studio 2013

无论用Community版本还是用Express版本都可以,下载地址可以从MSDN上搜寻。如果不是VS2013其实也可以,可能个别操作会有一些小区别,请灵活对待。

FreeGLUT

你可以了解一下FreeGLUT是什么。最直接的办法是看看维基百科对它的解释。链接:FreeGLUT。

有很多教程会采用GLUT。为什么我们不用GLUT呢?因为我在FreeGLUT官方网站上看到了这么一段话:

Why?

The original GLUT library seems to have been abandoned with the most recent version (3.7) dating back to August 1998. Its license does not allow anyone to distribute modified library code. This is really unfortunate, since GLUT is getting old and really needs improvement. Also, GLUT’s license is incompatible with some software distributions (e.g., XFree86).

所以我决定用FreeGLUT。请下载其最新稳定版本并解压/拷贝到您本地目录。此时此刻FreeGLUT的最新稳定版本是:

Freeglut 3.0.0 [Released: 7 March 2015]

我从Martin Payne’s Windows binaries (MSVC and MinGW)下载Download freeglut 3.0.0-1 for MSVC。下载之后把它解压/拷贝到了我本地目录:C:\Lib\FreeGLUT\MSVC-v3.0.0-1.mp。这个路径一会儿我们用到的时候别忘了替换成你自己的目录。

目录结构我稍作了调整:

$(FreeGLUT)
  |
  |-- bin
  |    |
  |    |-- x64
  |    |-- x86
  |
  |-- include
  |    |
  |    |-- GL
  |
  |-- lib
       |
       |-- x64
       |-- x86

GLEW

GLEW是OpenGL的扩展库,用于帮助C/C++程序员编写可移植的应用程序,该扩展库支持多种操作系统(比如Windows、Linux、Solaris等)。另外GLEW还有Ada版本:GLEW for Ada,不过这个Ada版本好像更新比较慢,此时此刻它停留在2013年4月的1.5.4版。C/C++版本更新还是比较及时的。

此时此刻GLEW的最新稳定版本是1.12.0[26-01-15],我下载的是它的二进制版本:

Binaries Windows 32-bit and 64-bit

下载之后把它解压/拷贝到了我本地目录:C:\Lib\GLEW\Win32_v1.12.0。这个路径一会儿我们用到的时候别忘了替换成你自己的目录。

原来的目录结构有一点不对称,且包含空格(这不是个好习惯),因此我稍作了调整:

$(GLEW)
  |
  |-- bin
  |    |
  |    |-- Release
  |    |    |
  |    |    |-- x64
  |    |    |-- x86
  |    |
  |    |-- Release_MX
  |         |
  |         |-- x64
  |         |-- x86
  |
  |-- doc
  |
  |-- include
  |    |
  |    |-- GL
  |
  |-- lib
  |    |
       |-- Release
       |    |
       |    |-- x64
       |    |-- x86
       |
       |-- Release_MX
            |
            |-- x64
            |-- x86 

设置系统变量

这么做的好处一会儿进行Visual Studio工程文件设置的时候你就能体会到了。

FreeGLUT

进入 Control Panel\System and Security\System,点击“Advanced system settings”。在 Advanced | Environment Variables中,增加一个系统变量:

FreeGLUT = C:\Lib\FreeGLUT\MSVC-v3.0.0-1.mp

Screenshot:
增加一个系统变量:FreeGLUT

GLEW

进入 Control Panel\System and Security\System,点击“Advanced system settings”。在 Advanced | Environment Variables中,增加一个系统变量:

GLEW = C:\Lib\GLEW\Win32_v1.12.0

Screenshot:
增加一个系统变量:GLEW

建立Visual Studio工程

建立Win32 Console Application工程

建立Win32 Console Application工程

这个工程里目前只有一段默认的C++程序片段:

// Sample.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
    return 0;
}

设置项目属性(32位Debug版)

Screenshot:
设置项目属性(32位Debug版)

Additional Include Directories

在项目属性的 C/C++ | General | Additional Include Directories 中,增加:

$(FreeGLUT)\include;$(GLEW)\include;

Screenshot:
C/C++ | General | Additional Include Directories

Additional Library Directories

在项目属性的 Linker | General | Additional Library Directories 中,增加:

$(FreeGLUT)\lib\x86;$(GLEW)\lib\Release\x86;

Screenshot:
Linker | General | Additional Library Directories

Additional Dependencies

在项目属性的 Linker | Input | Additional Dependencies 中,增加:

opengl32.lib;freeglut.lib;glew32.lib;

Screenshot:
Linker | Input | Additional Dependencies

编译后,自动拷贝DLL文件到目标文件夹

将这个文件事先拷贝到项目的输出文件夹中:

$(FreeGLUT)\bin\x86\freeglut.dll

这个过程完全没有必要手动进行,我们可以让它自动完成。方法是:在项目属性 Build Events | Post-Build Event | Command Line 中,增加:

copy "$(FreeGLUT)\bin\x86\freeglut.dll" "$(TargetDir)"

Screenshot:
Build Events | Post-Build Event | Command Line

修复链接错误:LNK1104

《FreeGLUT Tips: Resolve compile issue: error LNK1104: cannot open file ‘freeglutd.lib’》一文中提到了一个链接错误:LNK1104。我们提前来修复它。
在 C/C++ | Preprocessor | Preprocessor Definitions 中,增加:

NDEBUG

Screenshot:
C/C++ | Preprocessor | Preprocessor Definitions

设置项目属性(32位Release版)

仿照”设置项目属性(32位Debug版)”这一章节进行设置。有一些设置是不区分Debug版与Release版的,可以照搬,其余的无非是将原先指向debug版文件的路径改成指向release版文件的路径。
具体操作过程略。

设置项目属性(64位版)

具体操作过程略。

参考文章

附:系列文章索引

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值