本发明涉及计算机技术领域,尤其涉及一种界面引擎中的图形图像渲染方法和装置。
背景技术:
界面引擎,用于为软件产品开发提供服务,使软件界面的开发能够做到所见即所得。
目前,大部分界面引擎都是直接对操作系统内置的图形图像处理API函数进行封装,来提供图形图像渲染的功能。用户在利用界面引擎进行图形图像渲染时,需要根据图形图像渲染内容和流程的需要,调用相应的图形图像处理API函数。
可见,目前的界面引擎对使用者来讲很不方便,需要使用者了解操作系统的绘图机制,学习成本较高,图形图像渲染效率较低。
另外,目前的界面引擎也无法利用系统的硬件性能,提高图形图像渲染的速度,即无法利用系统的硬件特性加速,渲染的性能较差。而且,目前的界面引擎仅能提供其所在的操作系统自带的绘图能力,无法适用于其他操作系统。
技术实现要素:
有鉴于此,本发明提供了一种界面引擎中的图形图像渲染方法和装置,从而方便界面引擎的使用者进行图形图像渲染,提高图形图像渲染的效率。
本发明的技术方案具体是这样实现的:
一种界面引擎中的图形图像渲染方法,该方法包括:
创建渲染容器,所述渲染容器中封装了各种渲染能力;创建纹理,并向所述纹理中填充原始图像数据;
将所述纹理中的原始图像数据,以特定的混合方式渲染到所述渲染容器中。
一种界面引擎中的图形图像渲染装置,该装置包括渲染容器模块和纹理模块;
所述渲染容器模块,封装有各种渲染能力,从所述纹理模块读取原始图像数据,以特定的混合方式对所述原始图像数据进行渲染;
所述纹理模块,存储有原始图像数据。
由上述技术方案可见,本发明通过创建渲染容器和纹理,在所述渲染容器中封装各种渲染能力,在所述纹理中填充原始图像数据,将所述纹理中的原始图像数据,以特定的混合方式渲染到所述渲染容器中。
可见,由于将图形图像渲染的工作由渲染容器和纹理两个模块来完成,并且已将各种渲染能力都封装在图形图像渲染模块中了,因此,使用者只要创建渲染容器和纹理,在所述纹理中填充原始图像数据,并将所述纹理中的原始图像数据渲染到所述渲染容器中,即可实现图形图像的渲染,既方便了界面引擎的使用者进行图形图像渲染,也提高了图形图像渲染的效率。
附图说明
图1是本发明提供的界面引擎中的图形图像渲染方法流程图。
图2是本发明提供的根据当前CPU所支持的能力对纹理中的原始图像数据进行渲染的流程图。
图3是本发明提供的界面引擎中的图形图像渲染装置。
图4是本发明提供的渲染容器模块的结构图。
图5是渲染装置的内部结构示意图。
图6是界面引擎的使用者进行图形图像渲染的流程图。
具体实施方式
图1是本发明提供的界面引擎中的图形图像渲染方法流程图。
如图1所示,该方法包括:
步骤101,创建渲染容器,所述渲染容器中封装了N种渲染能力,其中N>1。
步骤102,创建纹理,并向所述纹理中填充原始图像数据。
步骤103,将所述纹理中的原始图像数据,以预设的混合方式渲染到所述渲染容器中。
本步骤中,所述预设的混合方式,例如可以是关键色过滤混合方式、Alpha混合方式、乘法混合方式等。
其中,在将纹理中的原始图像数据渲染到渲染容器中以后,还可以将两个以上的渲染容器进行混合渲染,即进行容器间的混合渲染,以达到相应的渲染效果。
为了使本发明的渲染方法和相应的渲染装置能够适用于多种操作系统,还可以采用句柄的模式,对所述渲染容器和所述纹理作C接口封装。
本发明中,界面引擎中的图形图像渲染装置可以调用获取中央处理器(CPU)信息的命令,获取当前的CPU信息,从而得到当前CPU所支持的能力,相应地,渲染容器可以根据当前CPU所支持的能力,对纹理中的原始图像数据进行渲染。
图2是本发明提供的根据当前CPU所支持的能力对纹理中的原始图像数据进行渲染的流程图。
如图2所示,该流程包括:
步骤201,判断当前CPU是否支持单指令多数据流扩展指令(StreamingSIMD Extensions,SSE)的后续版本SSE2指令,如果支持SSE2指令,执行步骤202,如果不支持SSE2指令,执行步骤203。
步骤202,利用SSE2指令将所述纹理中的原始图像数据渲染到所述渲染容器中,结束本流程。
步骤203,判断当前CPU是否支持SSE指令,如果支持SSE指令,执行步骤204,如果不支持SSE指令,执行步骤205。
步骤204,利用SSE指令将所述纹理中的原始图像数据渲染到所述渲染容器中,结束本流程。
步骤205,判断当前CPU是否支持多媒体扩展指令(MultiMedia Extensions,MMX),如果支持MMX指令,执行步骤206,如果不支持MMX指令,执行步骤207。
步骤206,利用MMX指令将所述纹理中的原始图像数据渲染到所述渲染容器中,结束本流程。
步骤207,利用C语言指令将所述纹理中的原始图像数据渲染到所述渲染容器中,结束本流程。
可见,通过图2所示方法,在将纹理中的原始图像数据渲染到渲染容器中时,即在到达底层渲染时,可以根据系统的CPU信息选择最优的渲染路径,利用系统的特性实现硬件加速优化,界面引擎的使用者无需关心系统的硬件细节,也能很好地发挥系统的最佳性能。
本发明中的渲染容器利用封装的渲染能力,能够实现多种混合渲染模式,例如alpha混合等,方便界面引擎的使用者实现各种渲染效果。
图3是本发明提供的界面引擎中的图形图像渲染装置。
如图3所示,该装置包括渲染容器模块301和纹理模块302。
渲染容器模块301,封装有N种渲染能力,从纹理模块302读取原始图像数据,以预设的混合方式对所述原始图像数据进行渲染,其中,N>1。
纹理模块302,存储有原始图像数据。
图3所示装置还可以包括信息获取模块。
所述信息获取模块,用于获取当前的CPU信息,得到当前CPU所支持的能力。
渲染容器模块301,用于根据当前CPU所支持的能力,对所述纹理中的原始图像数据进行渲染。关于渲染容器模块301的具体结构,可参见图4。
图4是本发明提供的渲染容器模块的结构图。
如图4所示,渲染容器模块包括优化模式选择模块401、SSE2渲染模块402、SSE渲染模块403、MMX渲染模块404和C语言渲染模块405。
优化模式选择模块401,用于判断当前CPU是否支持SSE2指令,如果支持SSE2指令,调用SSE2渲染模块进行渲染,如果不支持SSE2指令,判断当前CPU是否支持SSE指令,如果支持SSE指令,调用SSE渲染模块进行渲染,如果不支持SSE指令,判断当前CPU是否支持MMX指令,如果支持MMX指令,利用MMX渲染模块进行渲染,如果不支持MMX指令,调用C语言渲染模块进行渲染。
SSE2渲染模块402,利用SSE2指令对所述纹理中的原始图像数据进行渲染。
SSE渲染模块403,利用SSE指令对所述纹理中的原始图像数据进行渲染。
MMX渲染模块404,利用MMX指令对所述纹理中的原始图像数据进行渲染。
C语言渲染模块405,利用C语言指令对所述纹理中的原始图像数据进行渲染。
其中,渲染容器模块可以包括两个以上的渲染容器,每个渲染容器都可以采用图4所示的结构。
渲染容器模块可以将其中两个以上的渲染容器进行混合渲染。
为了便于移植到不同的操作系统中,渲染容器模块301和纹理模块302的对外接口可以采用句柄模式的C接口。
下面举一个具体的例子,对本发明提供的渲染方法和渲染装置进行示例性说明。在该例子中,渲染装置中的接口全部为C语言接口,采用句柄模式实现面向对象,具体请参见图5~图6。
图5是渲染装置的内部结构示意图。
如图5所示,渲染装置包括两个核心模块,其中,对象CxBitmapDevice是供使用者绘制的渲染容器,提供了与windows系统下的图形设备上下文(HDC)对等的能力,对象CxBitmap是存储原始图像数据的纹理模块,一般用来存储jpg,png等图片解码后的原始数据,用来绘制到对象CxBitmapDevice之上。其中,渲染容器也可以称为画布。
在对外接口上,采用句柄的模式,对两个核心对象做C接口的封装,其中,HGCANVAS对应CxBitmapDevice,HGTEXTURE则对应CxBitmap。
本发明的图形图像渲染方法和装置,主要用到以下几个API接口:创建渲染容器的API接口、创建纹理的API接口、纹理绘制的API接口和容器间混合渲染的API接口。
图6是界面引擎的使用者进行图形图像渲染的流程图。
如图6所示,该流程包括:
步骤601,创建渲染容器。
本步骤中,可以利用操作系统的渲染能力创建渲染容器,例如根据windows系统的HDC创建渲染容器。
步骤602,创建纹理。
步骤603,锁定纹理,向该纹理中填充原始图像数据。
步骤604,解锁纹理。
步骤605,将填充了原始图像数据的纹理以指定的混合模式渲染到渲染容器中。
本步骤中,将纹理以指定的混合模式渲染到渲染容器中的具体函数可以为:
可见,本发明中,将界面引擎中的各种渲染能力封装在一个图形图像渲染装置中,并且,该装置能够智能地根据系统的硬件配置选择最优化的渲染方式,并且在接口层面,由于是C接口,因此可以向其他操作系统移植。
本发明提供的图形图像渲染方法和装置能够支持多种渲染模式,其中,能够完美地支持alpha通道混合,令界面引擎使用者可以实现逐像素透明的窗口界面。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。