嵌入式三维图形引擎的设计与实现
【摘要】:从嵌入式操作系统未来的演变趋势看,PDA、手机等移动终端设备的快速增长,大大促进了嵌入式操作系统的发展。未来嵌入式系统的主要增长动力来自于消费类行业,比如嵌入式游戏。这就需要在嵌入式设备上实时显示图形,而且从发展趋势来看,很有可能要求实时显示三维图形,这就对运行在嵌入式设备上的图形引擎提出了前所未有的挑战。要迎接这个挑战,就需要研究如何将图形学算法应用到嵌入式系统中;如何借助真实感图形生成技术和渲染技术,在嵌入式系统中实现场景造型、投影变换、消除隐藏面、光照明模型等,使嵌入式系统可以实现高度真实感的模型和渲染强烈的感染效果。但要在速度慢,内存小,显示分辨率低的情况下,在嵌入式设备上实时显示三维图形,就不能完全照搬已有的图形学算法和引擎设计思路,需要对已有的真实感图形学算法开展工程化,实用化的研究。
本文主要侧重研究在主频和内存都很小的情况下,如何在分辨率很低的嵌入式设备上实时显示三维图形,进而实现一个能运行在嵌入式设备上的三维图形引擎,以满足游戏及其他娱乐的需求,为此我们的思路是:
(1)确定最基本的渲染图元,设计中为方便嵌入式平台的图形硬件加速器的设计,在参考其它的3D 图形引擎的基础上,考虑本引擎的基本渲染图元为三角形。选择三角形作为基本图元不仅能够方便建模、简化图形引擎的API(应用程序编程接口),而且能够大大提高渲染效率。
(2)尽量利用已经有的算法,例如:画直线的Bresenham 算法,填充多边形的扫描转换算法,这些都被证明是目前已知效率最高的算法。
(3) 算法上尽量利用硬件的优势,减少软件所做的工作。这样必须对在PC 机上使用的传统算法进行改进,同时我们注意到嵌入式设备上的显示分辨率很低,在这种情况下,没有必要追求象在PC 机上那样的高准确度和高清晰度,在一定范围内,我们可以改变算法来以一定的误差换取实时显示的速度。
(4) 图形引擎接口的应尽量少。嵌入式操作系统非常简单,而在其上主要是用C 语言来做开发,所以图形引擎的编程接口应尽量简洁,可以考虑合并一些功能,避免太多的API。这样做不仅可以提高图形引擎本身的开发效率,同时还可方便应用程序员编程。