利用OpenGL实现三维绘图
前言:
在三维绘图蓬勃发展的过程中,计算机公司推出了大量的三维绘图软件包。其中
SGI公司推出的OpenGL,作为一个性能优越的图形应用程序设计界面(API)异军
突起,取得了很大的成就。它以高性能的交互式三维图形建模能力和易于编程开
发,得到了Microsoft、 IBM、 DEC、 Sun、 HP等大公司的认同。因此,OpenGL
已经成为一种三维图形开发标准,是从事三维图形开发工作的必要工具。
一.初始化OpenGL绘图环境
1. 定义颜色格式和缓冲模式
OpenGL提供两种颜色模式:RGB(RGBA)模式和颜色索引模式。在RGBA模式下所有
颜色的定义用RGB三个值来表示,有时也加上Alpha值(表示透明度)。RGB三个分
量值的范围都在0和1 之间,它们在最终颜色中所占的比例与它们的值成正比。如:
(1,1,0)表示黄色,(0,0,1)表示蓝色。颜色索引模式下每个象素的颜色是
用颜色索引表中的某个颜色索引值表示(类似于从调色板中选取颜色)。由于三维
图形处理中要求颜色灵活,而且在阴影,光照,雾化,融合等效果处理中RGBA 的效
果要比颜色索引模式好,所以,在编程时大多采用RGBA模式。
OpenGL提供了双缓存来绘制图像。即在显示前台缓存中的图像同时,后台缓存绘制
第二幅图像。当后台绘制完成后,后台缓存中的图像就显示出来,此时原来的前台
缓存开始绘制第三幅图像,如此循环往复,以增加图像的输出速度。
设置窗口显示模式函数:
void auxInitDisplayMode(
AUX_DOUBLE//双缓存方式
|AUX_RGBA);//RGBA颜色模式
2.设置光源
OpenGL的光源大体分为三种:环境光(Ambient light),即来自于周围环境没有固
定方向的光。漫射光(Diffuse light)来自同一个方向,照射到物体表面时在物体的
各个方向上均匀发散。镜面光(Specular light)则是来自于同一方向,也沿同一个方
向反射。全局环境光是一种特殊的环境光,它不来自特于某种定光源,通常做为场景
的自然光源。
前言:
在三维绘图蓬勃发展的过程中,计算机公司推出了大量的三维绘图软件包。其中
SGI公司推出的OpenGL,作为一个性能优越的图形应用程序设计界面(API)异军
突起,取得了很大的成就。它以高性能的交互式三维图形建模能力和易于编程开
发,得到了Microsoft、 IBM、 DEC、 Sun、 HP等大公司的认同。因此,OpenGL
已经成为一种三维图形开发标准,是从事三维图形开发工作的必要工具。
一.初始化OpenGL绘图环境
1. 定义颜色格式和缓冲模式
OpenGL提供两种颜色模式:RGB(RGBA)模式和颜色索引模式。在RGBA模式下所有
颜色的定义用RGB三个值来表示,有时也加上Alpha值(表示透明度)。RGB三个分
量值的范围都在0和1 之间,它们在最终颜色中所占的比例与它们的值成正比。如:
(1,1,0)表示黄色,(0,0,1)表示蓝色。颜色索引模式下每个象素的颜色是
用颜色索引表中的某个颜色索引值表示(类似于从调色板中选取颜色)。由于三维
图形处理中要求颜色灵活,而且在阴影,光照,雾化,融合等效果处理中RGBA 的效
果要比颜色索引模式好,所以,在编程时大多采用RGBA模式。
OpenGL提供了双缓存来绘制图像。即在显示前台缓存中的图像同时,后台缓存绘制
第二幅图像。当后台绘制完成后,后台缓存中的图像就显示出来,此时原来的前台
缓存开始绘制第三幅图像,如此循环往复,以增加图像的输出速度。
设置窗口显示模式函数:
void auxInitDisplayMode(
AUX_DOUBLE//双缓存方式
|AUX_RGBA);//RGBA颜色模式
2.设置光源
OpenGL的光源大体分为三种:环境光(Ambient light),即来自于周围环境没有固
定方向的光。漫射光(Diffuse light)来自同一个方向,照射到物体表面时在物体的
各个方向上均匀发散。镜面光(Specular light)则是来自于同一方向,也沿同一个方
向反射。全局环境光是一种特殊的环境光,它不来自特于某种定光源,通常做为场景
的自然光源。