一、screen介绍
- QNX screen系统是一个图形框架,提供开发时图像显示功能,抽象对外统一接口,屏蔽底层硬件差异
- screen是基于client/server模型,screen进程是server程序,libscreen/libEGL/libGLESv2提供了对外的API函数
- screen支持应用程序渲染和硬件加速
- screen支持插件,加载特定的硬件模块,例如显示硬件模块,2D/3D加速器(GPU)和输入设备等资源
二、 screen API组件架构
- Context: context为窗口化环境中的图形操作提供了设置。除Event外,所有screen对象的访问都是相对于该对象关联的上下文而言。通过它可以获取到对对象(比如windows,groups,displays,pixmaps)的访问权限,用于设置或者更改其属性。
- Buffer: buffer是存储像素数据的内存区域,将buffer关联到Windows、Streams或Pixmaps后,screen将可以使用它。多个buffers可以与一个windows或stream关联,但是一个buffer只能与一个pixmap关联。
- Device: device指的是输入设备,例如键盘,鼠标,触摸屏等,可以与指定的显示关联
- Displays: display是指呈现图像的物理设备,例如触摸屏或者显示屏,使用相关接口可以获取其属性,包括供应商,显示技术,视频模式等。
- Event: event包含窗口的创建,属性设置,键盘、鼠标、触摸事件之类的动作。event可独立于context关联创建事件
- Groups: groups用于组织和管理应用程序中的多个窗口。同一组的窗口属性具有继承关系。因此,对窗口组的某些属性更改会对所有属于改组的窗口产生影响。父窗口创建一个组,子窗口可以加入,子窗口继承其父窗口的属性,但也可以独立于父窗口进行设置和检索属性
- Pixmaps: pixmap是用于在screen之外进行目标渲染, 然后将目标和screen buffer关联后进行显示。
- Sessions: session允许应用程序将原始的Event事件转成更高级的事件。session允许应用程序捕获特定区域,设备或者screen事件,与通过windows相比,它可以提供对于输入事件的更多控制
- Streams: stream允许图形内容由组件生成和处理,使用stream,无需将图像内容和显示器关联,内容可以由screen以外的组件使用,同时,也可以使用screen来关联显示。
- Windows: window代表一个绘图界面,其内容用于显示。有多种类型的窗口(应用程序窗口,子窗口和嵌入式窗口)可以容纳要显示的内容。