一种基于OpenGL的图像渲染加速方法

2012-04-29 02:31:34李士丹陈星豪
电脑知识与技术 2012年1期

李士丹 陈星豪

摘要:针对图像渲染速度和CPU、GPU效率问题,在分析了基于OpenGL图像渲染技术的基础上,提出了改进OpenGL渲染流程,加入CPU监控器和任务分配器模块,让GPU和CPU根据实际情况共同分担绘图和渲染任务的构想,从而达到加速图像渲染速度的目的。经实验证明,改进的渲染流程对图像处理速度具有优化作用,是一种可行的图像渲染加速方法。

关键词:图像渲染;OpenGL;渲染加速;GPU;CPU

中图分类号:TP393文献标识码:A文章编号:1009-3044(2012)01-0194-03

A Method of Speeding Image Rendering based on OpenGL

LI Shi-dan,CHEN Xing-hao

(Guangxi Electric Power Institute of Vocational Training,Nanning 530007,China)

Abstract:Aiming at the issues of image-rendering technoligy based on OpenGL.,this paper proposed a new method which set GPU and CPU together to working for image rendering through reorganizing the OpenGL rendering procedure..the proof of the experimentation show that this method can increasing the speed of the image rendering.

Key words:image-rendering;OpenGL;speeding rendering;GPU;CPU

图形图像渲染速度问题是计算机多媒体应用的重点问题。传统的方法中,如乔少杰、王有为文献[1]提出的方法,是将全部工作负担在CPU上,致使CPU高负荷运行并导致响应恶化,从性能和质量上均无法满足高质量实时处理的要求。而如NILSSON文献[2]提出的方法,主要渲染任务交给GPU完成,CPU只承担必要的程序控制,虽然使渲染速度和渲染质量都得到了优化,但是CPU的资源利用率比较低。

在现代的计算机应用技术中(特别是影视处理、虚拟现实等领域),图形的处理变得越来越重要,需要一个专门用于处理图形的处理器,这就是GPU。GPU是相对于CPU的一个概念,GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。借助GPU实现的各种高级数学计算可在像素级别完成图像处理工作,即可满足实时响应的需要,也减轻了CPU的负担,使CPU在相同时间内执行更多的通用程序控制。其中主要的应用是科学计算可视化,即基于CPU和GPU明确任务分工实现的科学计算实时可视化[3]。CPU处理得到的数据直接输出到GPU绘图渲染核心,渲染绘制后输出到屏幕。在不损失CPU性能的前提下获得对当前处理结果的动态观测。图形渲染在天气预报、电子轨道计算、地球磁场模拟、核试验、DNA分子排布等大规模科学计算任务中扮演着重要的角色。

在乔少杰等人提出的重组渲染流程的基础上,加入了CPU监控器和任务分配器模块,搭建高速特效渲染通道的解决方案:使用OpenGL硬件加速的绘图引擎绘制图形,CPU除了必要的程序控制,还承担一定的渲染任务,从而能加速渲染速度,提高CPU的利用率。

1技术背景

1.1开发框架

Mac OS X Tiger操作系统为图形图像处理提供系统内嵌处理引擎支持,同时对开发人员开放相应的编程框架支持[5]。Cocoa是Mac OS X应用程序开发框架代号,它使用面向对象技术,封装全部系统核心架构技术的实现,为应用程序开发提供完整可靠,可扩展可维护的接口。本文的测试程序在Cocoa框架内实现。

1.2图形绘制系统

Quartz是Mac OS X核心架构图形子系统部分代号,它负责Mac OS X GUI绘图的核心任务,它由用于绘图的Quartz 2D和用于合成最终屏幕输出的Quartz Compositor组成[4]。

Quartz基于工业标准图形库OpenGL操纵CPU,使用OpenGL纹理渲染技术将输出至屏幕的图形元素合成基于PDF为成像模型基础的PostScript文本,提供锯齿平滑和高范围缩放等高级图形渲染能力[6]。Mac OS X v10.4 Tiger将Quartz技术升级为Quartz Ex? treme:Quartz 2D和Quartz Compositor均通过OpenGL获得硬件加速支持:Quartz 2D和Quartz Compositor只保留PostScript绘图指令,将需要组合的不同窗口绘制结果作为图像纹理交付CPU 2D绘图单元加速,在帧缓冲区合成最终屏幕视图输出到监视器,实现了完全借助GPU加速在图形加速卡中合成屏幕输出。

1.3图像特效引擎系统

在原有图形架构基础上,M v10.4Tiger引入使用Core Image Kemel Language语言构建的图像特效渲染引擎CoreImage。其利用GPU像素着色器处理平面像素变换,实现像素级别的高速变换与高精度浮点数据处理。通过可编程GPU消除渲染时间延迟,利用GPU矢量引擎和超标量流水线优化CPU和GPU之间的数据通路。

Mac OS X v10.4 Tiger实现从图形绘制和特效渲染的全面硬件加速;Quartz Extreme利用硬件合成图像。

2渲染流程

2.1 CPU监控器

在图形处理过程当中,CPU要么只承担基本的控制任务,要么就不加限制地承担计算和渲染等繁重任务,这就导致CPU利用率要么很低要么很高,这不但影响PC系统的性能,而且对图形处理也有很大的影响。

针对此种情况,并分析了传统的做法,本文提出了CPU监控器的概念,其主要功能是实时监测CPU的利用率,并返回精确的百分比数。具体的任务是:每隔一个时间值,探测CPU的占用率,并返回一个精确的百分值。具体流程如图1所示。

2.2任务分配器

文献[2]中提出了重组OpenGL渲染流程实现加速图形绘制和图像渲染结合的管道化方法,目的是实现GPU完全承担绘图和渲染加速,整个流程无需CPU参与,CPU占用率只占很少的比值,这在某一程度上优化了应用程序的响应能力,也保障了系统不会因为渲染任务繁重而导致无法流畅运行。但是由于所有绘图以及渲染任务都有GPU完成,而CPU却留有很多的利用空间,从图形处理这一特殊角度来看,资源利用率不高,处理速率还可以再提高。所以,本文提出了任务分配器的概念,通过任务分配器,在CPU占用率未达到一个临界值的情况下,适当地分配给CPU一定的绘图以及渲染任务,从而让CPU和GPU同时为图形处理服务,将有利于提升图像的渲染速度。

具体的做法是:任务分配器读取CPU监控器返回的结果,判断此结果是否达到某一临界值,如果为真,则放弃分配任务到CPU;如果为假,则分配一定的绘图以及渲染任务到CPU。

流程如图2所示。

2.3渲染流程

2.3.1原先的流程

文献[2]以基于OpenGL绘图指令合成的可视化动画生成工具Quartz Composer为创作素材,借助Quartz 2D、OpenGL、Core Video等技术合成丰富多彩的视觉特效,将OpenGL绘图指令组合成.qtz格式的文件导出,作为图像源,并使用基于Core Video的QuickTime引擎;使用QCRenderer类执行绘图指令;基于线程调度的实时制图方法。采用了链式迭代的特效叠加方法---核心滤镜引擎,还采用了基于OpenGL加速图像输出方法。其应用程序流程如图3所示。

2.3.2改进的流程

在原有流程的基础上,对某些任务量比较繁重的环节调用CPU监控器以及任务分配器,保证CPU临界值之内极力分担图形处理过程中的绘图以及渲染任务,从而达到加速的效果。具体流程如图4所示。

3实验分析

为了便于比较实验结果,本文实验平台以及实验素材均采用与文献

[1]的实验平台一致。

实验平台所用的计算机型号为Mac Pro:Intel Xeon 5100处理器,1GB DDR2 ECC内存,Mac OS X v10.4.9 Tiger操作系统。图形加速卡为NVIDIA GeForce 7300 GT 256MB GDDR2 SDRAM。OpenGL引擎使用NVIDIA OpenGL引擎使用NVIDIA OpenGL硬件扩展和Apple OpenGL软件实现。

为了查看CPU在图形处理过程当中承担任务的情况,采集了CPU监控器的监控一览表,如表1所示。

从表1可以看出,从图形处理开始,CPU处于正常状态,之后一直到7分38秒图形处理结束之前,CPU处于一种临界值(50%)内的利用率,说明CPU分担GPU的图形绘制以及渲染任务,图形处理结束之后,CPU回归正常状态。

为了分析应用程序运行过程的OpenGL代码执行时间,使用OpenGL Driver Monitor工具统计OpenGL驱动指令与CPU指令对图形加速卡的使用情况,表2、表3分别代表文献[1]的结果和采用改进流程后的结果。

从表2和表3的统计结果分析得出,采用改进的流程OpenGL执行的时间短,说明利用CPU分担图形处理任务在速度上得到了优化。

4结束语

针对乔少杰等人所提出的文献内容进行分析,在重新调整渲染流程的基础上,加上了CPU监控器和任务分配器,对整个作业流程进行改进,让CPU在其一定的占用率临界值内分担GPU所承担的绘图和渲染任务,保证系统性能不受影响的前提下,为图形处理服务。从实验结果上分析可以看出,改进的流程对渲染速度具有一定的优化作用,达到图像渲染加速的目的。

参考文献:

[1]乔少杰,王有为.基于OpenGL的快速图像渲染方法[J].计算机应用研究,2008,5(5):1589-1595.

[2] NILSSON P Hardware accelerated image compositing using OpenGL[C]//Proc of Usenix04 Annual Technical Conference.Santiago:Freenix Track.2004.

[3] NVIDIA Inc.NVIDIA OpenGL extension specifications[EB/OL]. http://developer.nvidia.com/object/nvidia—.opengl—.specs.htm1.

[4] Apple Inc.Apple OpenGL extensions specification[EB/OL].http://developer.apple.com/graphicsimaging/0pe“gL/extensi0ns.htm1.

[5] GELPHMAN D,LADEN B.Programming with Quartz:2D and PDF graphics in Mac OS X[M].San Francisco:Morgan Kaufmann Publi. sher,2005.

[6] DALRYMPLE M,HILLEGASS A.Advanced Mac OS X programming [M].2nd ed.[S.1.]:Big Nerd Ranch Publisher,2005.