写给想要学习opengl的同学们。

刚开始学习opengl的时候,对于整个环境的搭建以及一些概念不太清晰,网上的资料又比较凌乱,因此在此总结一下,方便大家。

首先,是有一个windows系统,我用的是win8,不过相信其他系统应该还是很接近的。

1. 安装windows kit 8.0,安装完成后会出现在C:\Program Files (x86)\Windows Kits\8.0下。

其实这部不是必须的,因为默认的windows8就自带了一些老版本的sdk的内容,里面就有我们编译opengl所需要的头文件和库。例如C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A。

2. 安装vs2012,这个什么用处就不必多说了吧。

3. 去http://sourceforge.net/projects/freeglut/下载最新的freeglut。当前版本2.8.1。

freeglut的全称是free OpenGL utility toolkit,其实他和opengl本身并没有什么关系,他的作用是方便程序员处理例如窗口,键盘事件,鼠标事件之类的东西。

因为他是跨平台的,所以假如一个opengl程序是用glut开发的话,那在windows或者linux下是不需要进行任何的修改的。

那为什么是freeglut而不是glut那?其实刚开始他就叫glut,不过老版本已经停止更新很久了,所以后来别人又建了个新的项目叫freeglut,API都是兼容的。

4. 去http://sourceforge.net/projects/glew/下载最新的glew。当前版本1.10.0。

glew的全称是OpenGL Extension Wrangler Library,他的作用是什么那?

在此之前先要介绍下opengl在windows下的情况。万恶的微软为了推自己的dirext3d,所以默认对opengl的支持是很有限的,从opengl1.1开始就再也没有升级了,差不多都十多年了。

所以现在windows下对于opengl的支持,全靠显卡厂商。正因为此,更新到最新的显卡驱动也是非常必须的。对于不一样的显卡,支持opengl的版本也是不一样的,具体需要上各家网站查看。譬如我的GTX9600,就只支持opengl3.x,要支持4.x就必须要换新卡了。

虽然安装完驱动后就支持最新的opengl了,但是微软并没有提供直接的opengl API,导致使用起来比较繁琐。

于是,glew得用处就来了,他其实就是对这些繁琐的事情进行的封装,使得程序员可以很方便的调用glxxx的opengl函数。

东西都介绍好了,下面就开始实际操作了。

freeglut下载下来的是源代码,需要自己编译。

打开freeglut-2.8.1\VisualStudio\2012\freeglut.sln,选择release然后build,会在freeglut-2.8.1\lib\x86下生成freeglut.lib和freeglut.dll。

对于freeglut,我们需要3个东西:

头文件在freeglut-2.8.1\include\GL下,我们需要把这些文件拷贝到C:\Program Files (x86)\Windows Kits\8.0\Include\um\gl下

静态库文件freeglut.lib,拷贝到C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86下

动态库文件freeglut.dll,拷贝到C:\Windows\SysWOW64下

对于glew,有win下编译好的版本glew-1.10.0-win32,直接下这个就好

然后和freeglut一样,

头文件在glew-1.10.0\include\GL下,拷贝到C:\Program Files (x86)\Windows Kits\8.0\Include\um\gl下

静态库文件glew-1.10.0\lib\Release\Win32\glew32.lib,拷贝到C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86下

动态库文件glew-1.10.0\bin\Release\Win32\glew32.dll,拷贝到C:\Windows\SysWOW64下

至此,环境就搭建好了,下面我们写一个简单的应用测试下即可

#include "stdafx.h"
#include <windows.h>
#include <GL/glew.h>
#include <GL/glut.h> #pragma comment (lib, "glew32.lib") void init()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
} void display()
{
glClear(GL_COLOR_BUFFER_BIT);
} int _tmain(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800, 480);
glutInitDisplayMode(GLUT_RGBA); glutCreateWindow("opengl"); glewInit(); init(); glutDisplayFunc(display); glutMainLoop();
return 0;
}

要是编译能通过,运行能见到窗口,那就大功告成了。

下面就可以尽情享受opengl带来的快乐了~

最新文章

  1. Fuel快速安装OpenStack
  2. MySQL3:索引
  3. 2.servlet的会话机制session
  4. 1069. The Black Hole of Numbers (20)
  5. andorid service 本地服务
  6. Base64编解码Android和ios的例子,补充JNI中的例子
  7. js_sl 分享
  8. HDU5668 Circle 非互质中国剩余定理
  9. IIC 概述之1
  10. php字符串常见面试题
  11. select语句返回结果的顺序问题 .
  12. Java解析器
  13. DevExpress.XtraReports.UI.XtraReport 动态报表
  14. 找到一个新的超好用的U盘启动制作工具了
  15. HTML5入门要点
  16. LXC学习实践(1)LXC的概念和用途
  17. SVM及其c++代码运用实例
  18. mac上terminal_问题_1117
  19. 修改tomcat JVM 大小
  20. Django Rest framework基础使用之 serializer

热门文章

  1. Win7如何解决精简版的迅雷7无法运行
  2. m3u8文件信息总结
  3. Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental……
  4. HTTP学习笔记(一)报文和连接管理
  5. 网络电台(WIZ550io)
  6. apue学习笔记(第十四章 高级I/O)
  7. jq:正则表达式
  8. 敏捷DoD完毕定义的多种形态
  9. 一起学Django之Day01
  10. 渐变背景(background)效果