Home
Products
Products

高级图形框架

Whitepaper
3D Graphics: Adding a New Dimension to Your Embedded System
Webinar
Leveraging the Power of Adobe Flash in Embedded Devices
Free software evaluation
RTOS, tools and more
Foundry27
Foundry27
Source, upgrades, community forums, and more
BSPs and drivers
Hardware support directory
Ready to buy?
Product delivery options
We're here to help

QNX 高级图形技术开发工具包 (TDK) 是一套专门用于制作逼真显示效果(具有加速 2D 和 3D 图形渲染功能且占用极少 CPU)的工具组合及运行组件。这套工具包由QNX自主开发,完全基于业内标准 OpenGL ES 应用程序接口 (API),因此能确保开发人员充分利用现有的 OpenGL 代码和业内先进的编程技术。

开发工具

运行时组件

技术概览

QNX 高级图形技术开发工具包 (TDK) 的核心技术是图形框架 (GF)。图形程序员可利用 GF 的诸多优势制作各种界面,从最简单的 2D 环境到功能丰富的 2D 和 3D 环境,包括网络浏览器和电子邮件程序。

GF 架构允许程序直接访问硬件,使其在资源有限的嵌入式环境下更快更灵敏地运行。GF 通过允许直接访问图形驱动程序(显示过程中不会出现信息传递和上下文切换)并尽可能利用硬件加速来实现这一功能。这正是嵌入式环境所需要的,在那里它可用作基本图层以制作各种界面系统,从最简单的全屏用户界面到面向多应用程序的高级视窗系统。它还可用作现有用户界面的移植层。

为满足嵌入式 3D 的要求,QNX 高级图形技术开发工具包 (TDK) 可支持 OpenGL® ES 1.0 应用程序接口规范,即专门用于嵌入式应用程序的定义明确的 OpenGL®子集。QNX 实现可支持通用配置文件和 EGL 平台界面。

图形框架在支持全屏应用程序用户界面的同时,还能同时处理多线程和多个应用程序;用户需要时,可同时运行 2D 和 OpenGL® ES 应用程序以及 Photon 应用程序。

用户利用高级图形技术开发工具包 (TDK) 能做什么?

制作采用透明混合处理技术的 2D 导航系统 

 

  • 采用 OpenGL® ES 应用程序接口的 3D 导航系统
  • 支持旋转字体



 
  • 采用高速趋势图和触摸屏的 2D 监视器。

支持 2D 功能 (全部功能详述……)

支持 3D 功能 (全部功能详述……

技术重点

减少内存占用量

平衡标准

提供最佳图形显示性能

制作无闪烁动画

商业收益

节约材料清单 (BOM) 成本

软件模块化允许用户只配置所需的功能。

节约硬件成本

架构本身及高性能驱动程序的研发目的都是让低端硬件发挥最佳性能。

加快产品面市

标准 3D 图形工具确保开发人员不会浪费时间以加速开发进程。

架构

这是一个使用 QNX 高级图形技术开发工具包 (TDK) 并采用图形框架制作应用程序的典型实例。注意,所有这些组件都是可选的,除了图形驱动程序 (devg) 和应用程序代码本身(它只静态连接高级图形库所需的例程)。

示意图:高级图形应用程序架构的实例

上述实例中包含的其他组件有:

当图形框架用于全屏应用程序用户界面时,还能同时处理多线程和多个应用程序;用户需要时可同时运行 2D 和 OpenGL® ES 应用程序以及 Photon 应用程序。

图形框架采用客户机/服务器模式,并由 io-display 监视进程充当服务器以管理设备资源(如内存和图层)和硬件访问。客户机(图形应用程序)可直接访问硬件。客户通过调用 gf_draw_begin() 获得锁定(共享内存中的互斥锁),确保一次只有一个线程或程序访问硬件。io-display 监视进程通过及时发现客户机的异常终止、在终止后清理资源,并恢复共享内存互斥(如其被出现异常的客户机占用)以不断提高系统的稳定性。共享内存互斥会被分配至优先级最高的等待线程,以确保能首先绘制优先级最高的图形程序。

图形框架程序访问的所有硬件均由 io-display 监视进程进行管理。io-display 监视进程还通过释放分配的内存和锁定的硬件(必要时),来分配所有视频内存并处理应用程序终止(正常和异常)。这种控制对客户机的图形程序而言是"不可见的",因为所有的交互都是由图形库进行内部处理的。

下图说明了监视进程与三个分离的程序或客户机之间的关系:

  • 使用 OpenGL® ES 应用程序接口的程序

    示意图:io-display 监视进程

注意,三个程序全部载入图形驱动程序 (devg),并直接控制图形硬件。每个程序都有机会使用图形硬件(通过请求并接收 io-display 监视进程控制的互斥)。独占访问的顺序是根据请求程序的优先级确定的。

io-display 监视进程启动后,应用程序就可使用图形框架库 (libgf) 和 OpenGL® ES 库以获取图形上下文并交给设备。

第三方应用程序框架或现有的内部框架可与 QNX 高级图形技术开发工具包一起轻松连用。现有的图形框架可选择使用任何一种底层支持功能,如 2D/3D 绘图、图像和字体支持。简单的包装例程可以淡化方式使绘图操作抽象化,同时仍能为现有框架提供图形框架本身固有的性能和实时功能。

图形框架组件

QNX 图形框架内部的概念组件可将图形环境划分成可理解的层次。这些组件包括:

图形设备与显示器是代表图形框架管理的硬件组件的逻辑实体。图形设备是一个图形硬件,它隶属 io-display 显示进程并由其通过适当的 devg-* 驱动程序进行控制。每个设备在 /dev/io-display 中都有一个入口。

每个设备都至少有一个显示器,代表终端用户观看的视频显示器。某些设备是多头的,即其支持多台显示器。

图形层表示显示器显示的内存区域。某些现代图形设备支持多个图层,尽管从图形框架的角度看,所有显示器应至少有一个图层(层 0)。图层为在显示器上对内容进行分层提供了极大的灵活性。例如,用户可在背景图层中置入卷动地图,然后通过图形用户界面控制地图在前面图层中的卷动。应用程序可顺利地卷动地图而无需重画图形用户界面控制,从而消除了闪烁并减少了对 CPU 的占用。用户无论何时想显示文本或在视觉信息上方显示图形用户界面,分层都能提供极大的帮助。

该图说明了图形设备、显示器和图层三者间的关系:

示意图:图形设备、显示器和图形层阶

表面是图形框架库可渲染的一块内存。如表面与图层(图层可见)相连,渲染到表面上的所有内容都会出现在图层的显示器上。表面必须具有图层支持的像素格式,以正确显示渲染到表面上的对象。通常,一个图层会对应一个单独表面(或与其相关)。在普通平面数据以外,如通常用于视频采集的平面 YUV,它需要三个表面(每个视频组件对应一个表面)。

在默认情况下,图形框架会在视频内存中分配一个表面,以达到最佳显示性能。但在创建表面时,用户可以请求对其优化以便访问 CPU,这意味着它会被分配到系统内存中。

上下文是指在渲染函数调用间保持渲染目标信息的结构,如笔宽、前景/背景颜色和裁剪矩形。一个上下文对应一个表面,而且它还是所有图形框架绘图函数的一个参数。表面可用于 2D 绘图或 OpenGL ES 3D 绘图。在显示之前,表面可组合到多个图层中。

该图说明了上下文、表面和图层之间的关系:

示意图:上下文、表面和图层

通过综合利用显示器、图层、表面和绘图上下文,用户就能通过简单的程序制作极精良的屏幕显示效果。下面的 2D 导航实例显示的是支持四个图层的图形环境。有三个图层正在被使用:一个用于 2D 地图显示,一个用于菜单/触摸屏,另一用于警告信息。系统设计人员可选择将其制作成一个完整的程序,也可制作成三个独立的程序。正确使用色度键和透明混合处理技术,将保证图层之间的可见度。

增加 3D 效果就像开发 OpenGL® ES 程序一样简单,无论是使用 3D 升级取代 2D 程序,还是在同一图层中以 2D 方式(分屏)运行 OpenGL® ES 程序。

增加网页浏览器就像在图层中启动 Photon 程序,然后运行定制网页浏览器(利用 QNX 网页浏览器技术开发工具包开发的)一样简单。

规格说明

如 QNX Photon microGUI 视窗系统与客户产品一起提供,则每个运行时均需要 Photon 授权许可。

用于定制网页浏览器的网页浏览器技术开发工具包是单独销售的。

系统要求

请联系您的 QNX 客户经理以了解目前支持图像芯片的完整产品列表。

OpenGL® ES 与椭圆形图标是 Silicon Graphics 公司在美国和/或全球其他国家使用的商标。带有此商标的产品含有 Silicon Graphics 公司拥有并授权其他公司使用的知识产权。