计算机图形学—从0开始构建一个OpenGL软光栅
计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
计算机图形学的主要研究对象是点、线、面、体、场的数学构造方法及其图形显示,及其随时间变化的情况。它需要研究以下几方面的内容。
(1)描述复杂物体图形的方法与数学算法。二三维景物的表示是计算机图形显示的前提和基础,包括曲线、曲面的造型技术,实体造型技术,以及纹理、云彩、波浪等自然景物的造型和模拟;三维场景的显示包括光栅图形生成算法、线框图形以及真实感图形的理论和算法。
(2)物体图形描述数据的输入。
(3)几何和图形数据的存储,包括数据压缩和解缩。
(4)物体图形数据的运算处理,包括基于图像和图形的混合绘制技术、自然景物仿真、图形用户接口、虚拟现实、动画技术和可视化技术等。
(5)物体图形数据的输出显示,包括图形硬件和图形交互技术等。
(6)实时动画和多媒体技术,研究实现高速动画的各种硬/软件方法、开发工具、动画语言以及多媒体技术。
(7)制定与图形应用软件有关的技术标准。
OpenGL作为独立于操作系统的开放的三维图形的软件开发包,在其基础上开发的应用程序能够简单方便的移植于各种平台。其具有七大功能:
1.
建立3D模型:OpenGL除了能够处理一般的2D图形,即点、线、面的绘制外,主要任务是集合了3D立体的物体绘制函数。
2.
图形变换:OpenGL利用基本变换以及投影变换处理图形。所谓的基本变换就是在处理2D平面图形时的平移、旋转、变比、镜像变换。投影变换就是在处理3D立体图形时的平行投影以及透视投影。通过变换方式,可以将2D的平面图形清晰明了的变换成3D的立体图形,从而在减少计算的时间的同时就能够提高了图形显示的速度。
3.
颜色模式:OpenGL库中的颜色模型:使用较为广泛的RGBA模式以及颜色索引模式(color index)。
4.
光照、材质的设置:OpenGL库中包含了多种光照的类型。材质是用光反射率来表示的。其原理是基于人眼的原理,场景中的物体是由光的红绿蓝的分量以及材质的红绿蓝的反射率的乘积后所形成的颜色值。
5.
纹理映射:纹理指的是物体表面的花纹。OpenGL库中集合了对于物体纹理的映射处理方式,能够十分完整的复现物体表面的真实纹理。
6.
图像增强功能和位图显示的扩展功能:OpenGL的功能包括像素的读写、复制外,以及一些特殊的图像处理功能:比如,融合、反走样、雾的等等特殊的处理方式。对于图像的重现和处理,可以使得效果更有真实感,逼真。
7.
双缓存功能:OpenGL创新性的运用了双缓存形式。计算场景、生成画面图像、显示画面图像分别将其由前台缓存和后台缓存分开处理,大大提高了计算机的运算能力以及画面的显示速度。
OpenGL相对于市面上主流的视频处理软件具有如下的优势:
1.
具有强大的通用性和可移植性,可以将其轻松的移植在多个不同的平台上进行二次开发。因为OpenGL本身是一个与硬件无关的软件接口,所以,通用于市面上较为流行的平台:比如,Windows、Unix、Linux、MacOS等。
2.
能够转换3D图形设计软件制作的模型文件。OpenGL仅仅作为一个图形的底层图形库,并没有提供直接描述某个场景地几何实体的圆元。但是,为了其转换的方便性,其内部集合了许多转换函数,可以快速方便的将3DS/3DSMAX、AutoCAD等3D绘制的图形设计制作出的DXF以及3DS模型的文件转换成数组的形式,从而将图像转换成数据进行编程处理。
3.
配备了高级图形库:Open Inventor、Cosmo3D、Optimizer等。这些软件库针对于创建、编辑以及处理分析三维的立体场景提供了高级的应用程序单元;提高不同类型的图形格式的交换数据的能力。![QQ截图20240604155105.png](https://static.golangjob.cn/240604/ba4c84758a95835060c13756d0e777f5.png)
有疑问加站长微信联系(非本文作者)