汽车仪表盘中使用高级图形功能
,和有发光、反射和阴影效果渲染的3D场景。
为了满足前一章节描述的不同复杂程度的用例,需要应用不同的技术来生成图像。
1.光栅图形
在光栅图形中,每个像素的颜色值都将被保存。图元处理通常就是指处理由像素组成的矩形区域。
光栅图形的一个重要特征就是会受到分辨率的影响。缩放将导致出现严重的光衰减。
光栅图形是一种常见的自然影像(照片)技术,大多数图形格式都可以表示光栅图形(jpg、bmp、png、gif)。许多应用都支持处理光栅图形,包括Adobe Photoshop、GIMP、Aperture。
1.1 光栅图形处理器
要加速光栅图形,标准解决方案就是使用光栅图形处理器,该工具能够复制/填充/组合由像素组成的矩形区域。光栅图形加速器通常执行内存到内存之间的操作,即从内存中读取元数据,然后将结果数据写入内存。目前尚不存在普遍认可的API标准。一些专有API都提供了类似的功能。较为先进的加速器在此基础上提供了绘制基本图形的功能,如绘制线条和圆圈。
1.2 直接位图传送引擎(精灵引擎)
与光栅图形处理器类似,直接位图传送引擎也处理像素组成的矩形。关键差别在于图形操作的结果不会写回到内存。直接位图传送引擎是显示屏控制器的一部分,它把从内存的不同位置读取的每个帧组成最终的图像。对嵌入式系统使用直接位图传送引擎的主要优点是可以节省内存和内存带宽。此外,它还可以非常高效地生成图形,因为只需要修改元数据,如某些矩形的位置,而不是修改像素数据本身。直接位图传送引擎的最大缺点就是合并后的限制。当超出设备功能的极限后,将难以生成更复杂的图形。如果使用的是光栅图形,那么只会导致呈现时间延长。这方面的解决方案有一个专有API,在引擎功能方面存在显著的差异。
2. 矢量图形
矢量图形基于2D空间中对形状的数学描述,与分辨率无关。因此,矢量图形可以以任意分辨率呈现,不会产生质量问题。矢量图形是一种常见的技术,常见于如今的许多应用。最突出的例子是TrueType字体,但是它也用于可扩展的矢量图形格式SVG中,所有最新的浏览器都支持这种格式。Adobe Flash之类的格式也大量应用矢量图形。
一些应用程序都可以生成矢量图形:Adobe Illustrator、Inkscape、Adobe Flash Professional。适用于矢量图形加速器的一个工业标准API是OpenVG[0]。
3 3D图形
目前的实时渲染功能基于一个由三角形组成的3D模型。要实现下降效果,需要向三角形应用纹理效果。以这种方式切分三角形将为模型定义细节层次,从而影响渲染效果。这使得模型在一定程度上会依赖分辨率。
对于嵌入式领域,有两种相关的API定义针对3D图形。这两种API都来自最初由Silicon Graphics发起的标准OpenGL。对于嵌入式版本,去掉了几个与嵌入式设备无关的特性。这减小了硬件加速器的大小,并简化了所需的驱动器。
许多应用都可以生成3D模型。最常见的应用包括Autodesk 3ds Max、Blender、Autodesk Maya。
开发流程
汽车仪表盘的开发流程目前仍然处于不断发展的阶段。在这一开发流程中,将根据底层的图形技术采用不同的开发方法。这一过程被分为若干个部分。
首先由艺术设计部门提供图元和完整的解决方案的草图。大多数情况下,这些内容将转交给软件开发部门,他们将开发编程逻辑来实际实施解决方案。由于许多细节都没有确定好,因此通常需要花大量时间来反复修改,直到最终的效果满足设计部门的要求。
对于非3D图形,要缩短执行重复工作的周期,一个办法就是使用Adobe® Flash®,这是一种图形动画工具,适用于定义动画序列和人机界面像素精度。对动画序列的进一步处理通常通过手工或半自动化的方式完成,并且需要手写程序代码。
这种开发流程的一大弊端就是缺乏灵活性,难以在开发过程的后期进行更改。此外,还需要做大量的工作来进行归档和维护。
通过引入图形标准API,市场上目前有一些解决方案可以加快开发过程,并且不再需要手写特定代码。这些产品通常利用了使用相应的图形设计应用设计的图元,并提供了一个图形用户界面来设计仪表盘的HMI。使用这种HMI构建工具不需要具有编程技能。只需要关心生成的HMI的美观性和功能。HMI开发工具的输出是运行在嵌入式目标之上的软件图像。为了方便起见,通常使用模拟器来在开发PC上直接测试HMI。
其他常见的额外功能包括检查生成的HMI的一致性和生成准确的文档。通过将实际的表示从HMI逻辑中分离出来,HMI构建工具还能够消除不同图形技术之间的巨大差异,这将允许在低端的光栅图形平台上生成简化的HMI,并使用相同的HMI描述生成出色的3D HMI。
讨论
汽车仪表盘中使用的图形技术
汽车仪表盘高级图形功 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)