一、Open Graphics Library
1、什么是OpenGL?
OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。——百度百科
OpenGL最大的特点是跨平台,它对于各种平台都有一致的接口,因此OpenGL程序拥有良好的可移植性。
2、OpenGL有什么作用?
1) 建模 OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面(如Bezier、Nurbs等曲线或曲面)绘制函数。
2) 变换 OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、 旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透 视投影两种变换。其变换方法与机器人运动学中的座标变换方法完全一致,有利于减少算法的运行时间,提高三维图形的显示速度。
3) 颜色模式设置 OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。
4) 光照和材质设置 OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光 的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。
5) 纹理映射(Texture Mapping):利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。
6) 位图显示和图象增强:图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可是被仿真物更具真实感,增强图形显示的效果。
7) 双缓存(Double Buffering)动画:双缓存即前台缓存和后台缓存,简而言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。从而实现了消隐算法。
二、OpenGL基本语法
1、OpenGL是一个状态机
在上一章我们提到计算机渲染画面是按照一个标准的图形流水线绘制的,因此opengl程序绘制图像时也是遵循这一规则,opengl函数只是用来设置流水线上的一些可操作参数,并不是真正执行绘制操作。
2、OpenGL相关库
1)OpenGL library 核心库
2)OpenGL utility library 实用程序库
3)辅助OpenGL的工具库
为保证上面两个库的跨平台性,opengl剥离了与用户交互等非核心的函数,即工具库的作用。
3、OpenGL基本语法
1)命名规则
2)数据类型
4、基本图元类型
5、Freeglut编程基本模式
我u3d用的比较多,对消息驱动的这种编程方式比较熟悉。u3d是给出了update这个函数接口,每一帧调用一次这个接口,而这里只是多了一些设置步骤,本质上和u3d的脚本编写没什么不同。
6、OpenGL默认视点和座标系