CEGL库简介

来源:互联网 发布:烽火通信 知乎 编辑:程序博客网 时间:2024/06/14 14:48

CEGL库简介

 

概述

CEGL又名CEGraph,是一个基于GAPI的高速WinCE平台的图形渲染库。使用C++开发,采用双缓存技术,支持直接的帧缓存。由于基于自己的图形渲染架构,其渲染速度要快于GDI

目前CEGL支持如下一些功能:

l         全屏 (只支持全屏)

l         具体像素点绘制

l         直线、水平线、垂直线绘制

l         折线绘制

l         多边形绘制

l         矩形绘制

l         填充矩形(支持alpha混合)

l         填充多边形

l         图片绘制 (支持Bmp,Gif,Jpg 格式,支持alpha混合)

l         文本绘制 (自带字库, 支持中文, 也可以使用GDI实现文字绘制)

 

核心功能介绍

    通过调用GAPI实现了全屏。

对于上面的核心功能,所有的几何体绘制基本都是通过一系列绘制算法,直接对于GAPI提供的帧缓存进行像素填充。

图片绘制功能相对复杂些,调用了IMGDECMP.DLL中的函数来装载像素数据,并创建一个DIB位图来保存数据为一个BMP图像,再将数据拷贝到另一内存区域中(pBitmapBuffer)。之后的操作就是内存数据的选择性拷贝。

CEGL对于主要的GDI对象进行了封装,包括BitmapBrushFontPen及抽象的GDIObject

对于文本的显示,采用了两套方案:一种使用早期的位图字体格式,实现内置的基于像素的文本显示,支持中文;另一种使用GDI作为中介,将文字绘制到位图中再提取像素信息到显示缓存中。

 

功能总结

总体来说,直接实现了主要的几何体绘制操作,但对于几何体绘制中的效率可以进一步优化和改进;对于图形绘制功能得到增强,支持更多的图形格式;对于最为困难的字体显示问题,由于TrueTypeFont的显示比较复杂,没有内部实现,同时没有增强字体的显示特性,如支持角度旋转等,不过可以采用Freetype库来增强其功能。

 

部分扩展思路

   (一)全屏和窗口的全面支持

GAPI获取全屏之后,对于窗口消息(按钮、菜单等)其实依然支持。所以当实现真正的全屏时要屏蔽相关消息