专为中高端嵌入式领域设计的中间件、开发
环境、实时操作系统软件和服务
首 页   软件产品  QNX 图形处理技术  
 
高级图形

    一套拥有加速二维和三维图形渲染特征,只需极少的CPU开销,用于创建高效显示的工具和运行组件。
    基于一个干净的空间及执行认证的工业标准的OpenGL ES应用程序接口,QNX高级图形技术开发包可以使开发人员提升现有的OpenGL代码开发和编程水平。
开发工具
• 编程环境(头文件和库文件)有助于开发二维和三维应用程序
• 示例代码说明了二维、三维、视频采集、图像处理、光标控制和字体使用的编程方法
 运行组件
• 图形控制器驱动
• 2D绘图、分层控制、视频捕捉的运行库
• 3D(OpenGL® ES 应用程序接口认证)运行库
• 字体和图像绘制运行库
• 图形显示管理器(io-display)

ag
技术概览
    处于QNX先进图形技术开发包核心地位的是一种被称为图形框架(GF Graphics Framework)的技术。GF提供给图形开发人员建立接口界面,一步步实现从简单二维环境,到功能丰富的二维和三维环境的服务,包括网络浏览器和电子邮件程序。
    该GF架构允许程序直接访问硬件,使他们在资源有限的嵌入式环境下更快更灵敏。GF通过提供直接访问图形驱动(绘制的时候没有消息传递或上下文切换),并在可能的情况下利用硬件加速来实现此性能。 这让它对于嵌入式环境来说近乎完美,在那里它可以被用作基本的图形层,从一个简单的全屏界面,到一个多应用GUI的复杂视窗系统。 GE也可以作为现有UI的移植层。
    为符合嵌入式3D的要求, QNX高级图形技术开发包支持OpenGL® ES 1.0应用程序接口规范,一个专为嵌入式应用而定义良好的OpenGL®子集。 QNX此项技术支持常见的培面和EGL平台界面层。
    图形架构可以支持全屏应用的用户界面,也可以同时处理多线程和多进程。如果有需要你甚至可以同时运行Photon应用程序和2D及OpenGL ® ES应用程序。
你可以用高级图形技术开发包做什么?
2d_apha_blending
• 使用Alpha-blending显示菜单和紧急通告的二维导航系统
• 使用多个图层
opengl_es_api
• 使用OpenGL® ES API的3D导航系统
• 支持旋转字体
yale
• 使用OpenGL® ES API的3D导航系统
• 屏幕右侧带有网页浏览器,用来显示被选中的’关注点(POI)’的网页内容
trend_graphic
• 使用高速趋势图带触摸屏的2D监视器
二维特性支持
• 小而快速的二维图形原语
  o 矩形、折线、多边形、粘贴
  o 阿尔法、色度和栅格操作
  o 加速的阿尔法-地图
  o 其他
• 图象支持
  o BMP、JPEG、PNG、GIF
  o 顺滑地调整大小和比例放缩
• 支持的字体包括:
  o TrueType
  o  Adobe1型和2型
  o Bitstrean™笔划字体(包括中文和日文)
• 字体支持
  o 反锯齿
  o 旋转
  o 边界/轮廓
  o 国际字体( UTF - 8 )
  o 可扩展字体
  o 提示/字距调整 
• 视频采集API
  o 向上/向下硬件缩放
  o  RGB/YUV
• 分层API(硬件支持)
  o 结合层和制图表面的能力
  o 开启与关闭个别层层序和能力
  o  层间的Alpha混合和颜色色度
  o 来源和目的观察点的调整/缩放和平移控制
• 在可能情况下驱动利用二维硬件图形加速,不需要时由软件作后备
  o 例如在Coral P/B/PA芯片中,下列二维事务是硬件加速:
 折线,矩形
  Bresenham线
 抗锯齿线,多边形
 多边形填充(裁剪)
 位图图像(透明度)
  Blit,比例Blit(向上与向下)
  PCI总线主控支持(限于Coral P/PA)
 Alpha混合
 色度键控
  16栅格像素管线
 厚线支撑
 阿尔法地图(混合)
 对接加入和斜角加入(裁剪)
 线宽多达32个像素宽
 垂直同步和drawlist完成的中断支持
 硬件光标支持
三维特性支持
•  OpenGL® ES API Common Profile version  v1.0
  o 浮点和定点库
• 在可能情况下驱动利用三维硬件图形加速,不需要时由软件作后备
  o 例如在Coral P/B/PA芯片中,除了二维硬件加速事务,以下三维事务也是硬件加速:
 Z缓冲器
 3D点,3D线,3D三角
 纹理贴图与双向线性过滤,透视校正
  GL_LINEAR,GL_NEAREST
  Gouraud着色渲染法
 剪刀(裁剪)
 低层次的驱动直接访问OpenGL ES状态结构
 防锯齿
 阿尔法-混合
• 没有三维硬件加速的图形环境中可以使用软件3D库
技术要点
减少内存开销
• 应用程序只装载他们所需要的图形服务(如二维画图,三维画图,字体,图像), 这就降低了内存开销
助力于标准
• 广泛的编程和基于的OpenGL ES源码支持
为图形显示器提供最佳性能
• 图形加速和影响微乎其微的CPU负载
• 全面整合图形设备的复合工具,为移动显示如导航或游戏提供分层能力
• 三维硬件加速
  o 适用于指定的芯片组(如富士通的Coral-P)
• 二维硬件加速
  o 准许硬件加速的alpha混合,这对抗锯齿多边形或弧线是至关重要的,广泛应用于地图应用程序中
创建无闪烁动画
• 使用多缓冲来支持快速的动画
• 标准互换调用使能在上下文和视图间进行无缝转换
商业利益
减少BOM成本
软件模块化让你只需配置那些必须的功能。
减少硬件成本
此架构和高性能的驱动全都是为了从可能的低端硬件中获取最好的性能而建造。
更快的推向市场
标准3D意味着开发人员无须浪费时间来达到更快的开发速度。

架构
这里是一个用QNX高级图形技术开发包和图形框架开发的典型应用案例。注意,除了图形驱动(devg)和应用程序代码本身(它只静态连接高级图形库中必须的例程),所有的组件都是可选的。
图:先进图形应用程序架构的案例

deployment
以案例中包含的其它组件有:
• 输入管理器管理键盘和鼠标输入(由目标系统的板级支持包提供)
• 字体表现系统管理字体表现(如高级图形技术开发包提供的Bitstream字体熔合库)
• 图形库提供图像(由图形技术开发包提供)
• OpenGL® ES库支持(由图形技术开发包提供)
    当图形框架打算供全屏应用程序用户界面使用时,它可以处理多线程、多应用程序,必要时你甚至可以同时运行Photon程序和2D及OpenGL® ES程序。
    此图形框架使用客户端/服务端模式和一个叫作io-display的监视进程作为服务器,管理设备资源(如内存和层)和硬件访问。客户端(图形应用程序)直接访问硬件。客户端通过调用dg_draw_begin()来获得一把锁,用于确定在同一时间里只有一个线程或程序能访问硬件。 io-display监视进程通过捕获客户端的异常终止来提供增强的健壮性,在终止后回收资源,并在共享锁被异常终止客户端拥有的情况下激活它。共享内存锁会被分派给最高优先级的等待线程,保证最高优先级的图形程序可以最先绘画。
    GF程序对硬件的访问全部通过io-display监视进程代理。同时io-display监视进程也分配所有的视频内存,并处理程序终止问题(包括正常的和不正常的),释放已分配的内存,释放锁住的硬件(如有必要)。这些控制对图形客户程序来说是屏蔽的,因为所有的互相通信都在库内部处理。
下面的图表说明了io-display监视进程和三个分离的程序或客户端的关系:
• QNX Photon microGUI® 环境(同一个网页浏览器,邮件程序等)
• 一个定制的使用第三方2D库的GUI调用高级图形技术开发包GF库
• 一个使用OpenGL® ES API的程序

graphics_devise
图: io-display监视进程
注意,三个程序都装载在图形驱动共享对象(devg)里,并直接控制图形硬件。每一个程序都会绕一下,通过申请和得到由io-display监视进程管理的锁来使用图形驱动。
    一旦io-display开始运行,应用程序就可使用图形架构库( libgf )和OpenGL ® ES库获取图形上下文并提供给设备。
    第三方应用框架或现有的内部框架,可以很容易地和QNX高级图形技术开发包结合在一起使用。一个现有的框架,可以选择使用任何一种底层支持功能,包括2D画图、3D画图、图像和字体支持。简单包装事务,可用于减少抽象画图操作,而仍能为现有的架构提供从图形架构里继承过来的性能和实时性的固有特点。
图形框架组件
QNX图形框架内有概念性组件来把图形环境划分成一种可以理解的层次。 这些组件是:
• 设备
• 显示
• 层
• 表面
• 上下文
    设备和显示是由GF管理的用来代表硬件组件逻辑上的实体。一个设备是一块图形硬件,隶属io-display,并由io-display通过适当devg - *驱动管理。每个设备有/dev/io-display里有一个入口。
    每款设备有至少一个显示,它代表了由终端用户观看的视频显示。有些设备是多头的,这意味着他们支持多个显示器。
    层代表在显示屏上显示的内存区域。 一些现代的图形硬件支持多层,虽然从GF的角度来看,所有设备都至少有一个层(层0)。层为在显示屏上展示内容提供了很大的灵活性。 例如,你可以把滚动地图放在背景层上,然后通过GUI控制地图在前面的层里滚动。 应用程序可以平滑地滚动地图,不需要重画GUI控制,消除闪烁和减少CPU负荷。在任何情况下你想超过顶部的视觉信息显示文本或GUI,层都是非常有用的。
这个图举例说明了设备,它的显示和它们的层之间的关系:

layer
图:设备,显示和层的层次
    表面是一块GF库可以使用的内存。 如果表面是连接到一个层(层是可见的) ,在表面上的任何实施都会显示在层上。 表面必须有一个层支持的像素格式,使表面上实施的对象能正确显示。 一般来说,一个层与一个单一表面对应(或相关)。 一个例外是平面的数据,如平面的YUV普遍用作视频采集,这需要三个表面(每组一个视频组件) 。
    默认情况下,GF在视频内存为了最高性能而分配一个表面。 但是,当你创建了表面,你可以请求优化CPU访问,这一般是指它将被分配在系统内存中。
    上下文是一个在调用绘制函数间保持绘制目标信息的结构,如笔宽,前景与背景的颜色,裁剪矩形。 一个上下文对应于一个表面,而且是所有GF绘制函数的一个参数。 表面可用于2D绘图或OpenGL ES的3D绘图。在显示之前,表面可以和多个层相结合。
这幅图说明了上下文,表面和层之间的关系:

context
图:上下文,表面和层
    通过结合使用显示、层、表面和绘画上下文,简单的程序可以建立非常复杂的屏幕。 下面2D导航的例子显示的图形环境,支持4个层。 三个层被使用于:一为2D地图显示,一为菜单/触摸屏,另一个警告信息。系统设计者可以选择把它设计为一个完整的程序或者三个独立的程序。 正确使用色度键和alpha混合可以使层与层之间可见。
    增加3D就变成了如开发OpenGL® ES程序一样的简单,无论是用3D升级代替2D程序,或是在同一层运行OpenGL® ES程序和2D程序。
    增加一个网络浏览器变得和在一图形层启动Photon,并运行一个用QNX网络浏览器技术开发包开发的客户定制的网络浏览器程序一样简单。
规格说明
• 二进制文件
  o 用于PPC,X86,SH和ARM的OpenGL ES库和2D库
  o 纯软件OpenGL ES库,在没有3D硬件加速的图形芯片上提供3D支持
  o  io-display监视进程
  o 管理器支持同时运行3D和2D程序
  o 图片装载库支持多种图片格式
 JPEG, PNG, BMP, TGA, SGA, GIF
  o 字体库
 TrueType,位图,字体熔合(Bitstream笔划字体)。(示例字体文件由QNX Momentics开发套件提供)
  o 富士通Coral B/P/PA图形驱动:x86,PPC,SH
  o 富士通Carmine图形驱动:x86,SH
  o 英特尔Extreme2(855GM)图形驱动:x86
  o VESABios图形驱动:x86 VESA标准的图形控制器
  o VMWare图形驱动:QNX VMWare对话
  o 预编译的用于测试2D和3D的示例程序
• 文档
  o 图形框架开发手册
  o OpenGL ES 1.0文档集
  o 字体熔合API文件
• 配置文本文件
  o 定义视频设置的配置文件(初始化图形芯片等,使无需修改代码就可很容易的符合新的联合显示)
• 示例源代码
  o 2D例子:画矩形,装载并显示图片,装载并显示文本等
  o 层控制:打开/关闭层,改变色度等
  o 3D例子:顶点数组,纹理地图等
  o 还有更多。。
    如果QNX Photon microGUI窗口系统随客户产品发布,那么每一个运行时许可证都必须包含一个Photon的许可证。
    用于定制网络浏览器的网络浏览器技术开发包是单独销售的。
系统需求
• QNX Momentics® 开发套件专业版 v6.3 或更高版本
• QNX Neutrino® 实时操作系统 v6.3 或更高版本 (运行用)
• 支持硬件:X86,PPC,SH4和ARM目标板
• 支持图形辅助芯片
  o 富士通Coral-B/P/PA
  o 富士通Carmine
  o 英特尔Extreme2
  o VMWare 对话(可选的,这是一个在Windows下测试2D/3D程序非常有用的目标机)
  o VESABios X86图形芯片支持(不支持加速)
请联系你的QNX客户经理以取得目前支持的图形芯片的完整列表。
OpenGL® ES和椭圆形标志是Silicon Graphics公司在美国和/或世界范围内的其它国家的商标。带有此标志的产品混合知识产权是Silicon Graphics公司拥有和授权给其它。

» 相关信息

  版权所有 QNX软件 Design by infoo.cn         联系我们