http://johnhany.net/2014/01/environment-for-opengl-with-vs2010/
OpenGL(Open Graphics Library)是一个开放的、跨编程语言、跨平台的API库,提供了大量的针对图形硬件的软件接口,主要用于绘制高性能的二维和三维图形。它的一个子集OpenGL ES主要针对嵌入式系统,比如手机、平板等,目前也开始流行起来。
GLSL(OpenGL Shading Language)是OpenGL 2.0版本开始引入的编程语言,用来编写运行在GPU上的着色程序,以代替之前所采用的固定功能管线(fixed-function pipeline)。直到3.x版本起,固定功能管线被彻底弃用,而完全被基于着色器(shader)的新功能所代替。OpenGL 3.0是最后一个同时存在新老两种功能的版本。
目前OpenGL最新版本是4.4,GLSL的最新版本是4.4。
由于OpenGL本身只包含涉及渲染的核心函数,而不包括平台相关的UI、文件输入输出、键盘鼠标交互等功能,在不同平台上一般采用不同的扩展库来辅助开发。在UNIX、Linux和Mac OS X平台上一般采用GLUT库实现图形界面,但已经很久没有更新了;在Windows平台上,freeglut会更实用一些。因为调用OpenGL的函数时需要频繁地调用和管理函数指针,可以使用GLEW代替这些繁琐的操作,而且GLEW还会根据你的平台决定使用哪些扩展。
检查兼容性
OpenGL版本众多,而且各显卡厂商也有自己开发的扩展库。要想使用某个版本进行开发,既需要显卡本身支持所需的功能,又需要驱动程序能兼容这个版本。决定使用哪一个版本之前,先要用GPU Caps Viewer检查一下支持的OpenGL和GLSL的最高版本和具体支持哪些扩展。我的笔记本比较老,仅能支持OpenGL 3.0和GLSL 1.3。
准备文件
在http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip下载GLUT;
在https://sourceforge.net/projects/glew/files/glew/1.10.0/glew-1.10.0-win32.zip/download下载GLEW。
可以在http://www.transmissionzero.co.uk/software/freeglut-devel/下载freeglut。为了尽可能减少干扰因素,下文的样例程序没有用freeglut,而仅使用GLUT库。
把解压得到的glutdlls37beta文件夹中的glut.h,和glew-1.10.0-win32\glew-1.10.0\include\GL文件夹中的glew.h、glxew.h、wglew.h共4个文件拷贝到C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl目录下。(粗体的2个文件是必需的)
把解压得到的glutdlls37beta文件夹中的glut.lib、glut32.lib,和glew-1.10.0-win32\glew-1.10.0\lib\Release\Win32文件夹中的glew32.lib、glew32s.lib,还有glew-1.10.0-win32\glew-1.10.0\lib\Release MX\Win32文件夹中的glew32mx.lib、glew32mxs.lib共6个文件拷贝到C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib目录下。(粗体的3个文件是必需的)
把解压得到的glutdlls37beta文件夹中的glut.dll、glut32.dll,和glew-1.10.0-win32\glew-1.10.0\bin\Release\Win32文件夹中的glew32.dll拷贝到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin目录下。(粗体的2个文件是必需的)
如果发现这样运行下面的样例代码时提示缺少lib或dll文件,可以参考这篇文档修改添加文件的位置。
所需的文件也可以在这里下载。
如果想使用freeglut,其.h、.lib和.dll文件的位置与GLUT和GLEW是相同的。
配置工程
打开Visual Studio 2010,新建一个Visual C++的Win32 Console Application,选项使用默认的,即Application Type为Console Application,Additional Options选Precompiled Header,其他选项都不勾选。
打开项目Properties窗口,找到Configuration Properties -> Linker -> Input ->Additional Dependencies,添加glew32.lib。如果使用了freeglut,还要添加freeglut.lib。
如果还使用了freeglut库,还需要在Configuration Properties -> VC++ Directories -> Include Directories中增加 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\freeglut。
样例代码
把下面的代码粘贴到main.cpp文件:
如果使用了freeglut,需要把第8行的“gl/glut.h”改为“freeglut.h”。
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
|
在工程内新建一个名为HelloWorld-vs.glsl的文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
再新建一个名为HelloWorld-fs.glsl的文件,内容如下:
1 2 3 4 5 6 7 8 |
|
运行结果如下: