今天,开始学习OPENGL,以后会定期地发布博客,鼓励自己学习,以及督促自己学习。浪费了许久的时间,终于觉得有必要学习一些东西了。希望还不会太晚吧。好了话不多说,首先开始OpenGL 的环境配置吧。
一、安装GLUT工具包(可选)
GLUT并不是OpenGL必须用的在OpenGL中,gl库是核心库,glu是实用库,glut是实用工具库,gl是核心,glu是对gl的部分封装,glut是OpenGL的跨平台工具库,gl中包含了最基本的3D函数,而glu似乎对gl的辅助,如果算数好,不用glu的情况下,也是可以做出同样的效果。glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Win32窗口等代替,但是glut是跨平台的,这就保证了我们编出的程序是跨平台的,如果用MFC或者Win32只能在windows操作系统上使用。选择OpenGL的一个很大原因就是因为它的跨平台性,所以我们可以尽量的使用gt库。
二、VS环境配置
以我使用的VS2013为例。首先将下载的压缩包解压,得到5个文件包含2个.dll,2个.lib,和1个.h文件。(glut.dll, glut32.dll, glut.lib, glut32.lib,glut.h)
把.h文件复制到X:\...\Visual Studio 2013\VC\include\gl文件夹中,没有则新建一个。
把两个lib文件放到静态函数库库所在文件夹中(与include同级的lib文件夹)。
把两个.dll文件放到操作系统目录下的system32文件夹中。
至此OpenGL的环境就配置完成了。
三、第一个OpenGL程序
接下来完成第一个OpenGL程序。
首先创建工程:创建一个win32控制台应用程序;
链接OpenGL libraries。在VS中右击项目,属性,链接器,输入,在附加依赖库中加上opengl32.lib;glut32.lib;glu32.lib
然后将以下例子拷贝到工程中编译运行,可以看到一个三角形。
#include "stdafx.h"
#include<gl/glut.h>
#include<gl/glu.h>
#include<gl/gl.h>
void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glutSwapBuffers();
}
int _tmain(int argc, _TCHAR* argv[])
{
glutInit(&argc, (char**) argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("Hello OpenGL");
glutDisplayFunc(renderScene);
glutMainLoop();//enters the GLUT event processing loop.
return 0;
}
在看到结果的时候会发现除了一个opengl的渲染窗口以外还有一个黑窗,对于这种情况,可以在包含库文件之后加上以下代码
#pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"")
之后就没有那个小黑窗口啦。