零.前言
虽然没想到这么快就开启了OpenGL大坑,但是DirectX学得差不多了,基本内容都有过一遍,是时候两者相互对照着学了,这样自己对图形学的知识会更加精进一步,等后面大师级别就会学OSG和图形学基本原理,看看论文什么的
一.简介
OpenGL(Open Graphics Library,开放式图形库)是用于渲染2D 3D场景的跨语言跨平台的应用编程接口(API),这个接口由350个不同的函数调用组成
由于不同操作系统的差异,OpenGL上下文(类似WinSDK和MFC的关系)的创建过程和IO处理相当复杂,所以freeglut(代替不再维护的GLUT) GLFW是专门用来创建OpenGL窗口
先学freeglut兼容过去的版本,再学GLFW是未来框架的趋势
另外SDL QT也是用OpenGL渲染的
OpenGL ES就是专门为嵌入式设备设计的
WebGL主要应用于网页上
OpenGL可以在三维空间中绘制各种图元(点 直线 多边形等),还支持光照和着色 纹理贴图 混合透明 动画 特殊效果等
OpenGL并不包含任何窗口管理 用户交互 文件I/O等
二.FreeGlut
FreeGlut提供的函数很少,以glut开头主要和窗口有关
#Include <freeglut.h>
真正用OpenGL渲染的函数在SDK里面的gl.h之中,因为微软曾经也是OpenGL的参与者之一,VC编译器只支持OpenGL 1.1
OpenGL库总是不断发生变换,制造图形硬件的各个厂商都可能会增加一些新特性,由于这些新特性太新,可能都没有添加到gl.h中,为了使程序员能够使用这些新的OpenGL扩展,可以添加一个 glext.h 的头文件(包含了所有最新版本和扩展函数以及标记)
#include "glext.h"
当然目前我自己还没碰到需要用这个新特性,初学者可以先不加
OpenGL扩展支持库:
调用GLX所提供的函数:#include <X11/Xlib.h>
#include <GL/glx.h>
调用WGL所提供的函数:#include <windows.h>
三.GLFW
四.OpenGL历史
1992年 OpenGL第一个版本
2004年 OpenGL第二个版本