CN102867284B - 一种图形绘制引擎装置及其实现方法 - Google Patents

一种图形绘制引擎装置及其实现方法 Download PDF

Info

Publication number
CN102867284B
CN102867284B CN201110189638.0A CN201110189638A CN102867284B CN 102867284 B CN102867284 B CN 102867284B CN 201110189638 A CN201110189638 A CN 201110189638A CN 102867284 B CN102867284 B CN 102867284B
Authority
CN
China
Prior art keywords
interface
function
graph
drawing engine
graphics device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110189638.0A
Other languages
English (en)
Other versions
CN102867284A (zh
Inventor
黄渊
黄飞跃
吴永坚
董立乾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201110189638.0A priority Critical patent/CN102867284B/zh
Priority to EP12808192.4A priority patent/EP2731073B1/en
Priority to PCT/CN2012/076507 priority patent/WO2013004118A1/zh
Priority to JP2014517410A priority patent/JP5805864B2/ja
Priority to AU2012280863A priority patent/AU2012280863B2/en
Publication of CN102867284A publication Critical patent/CN102867284A/zh
Priority to US14/144,348 priority patent/US9129395B2/en
Application granted granted Critical
Publication of CN102867284B publication Critical patent/CN102867284B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明实施例提供一种图形绘制引擎装置及其实现方法,该方法包括:提取第一图形设备接口和第二图形设备接口的绘制功能信息;将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。本发明提供的图形绘制引擎装置具有绘制效率高、CPU资源占用少、兼容性好和接口易用的优点。

Description

一种图形绘制引擎装置及其实现方法
技术领域
本发明涉及图形处理技术,尤其涉及一种图形绘制引擎装置及其实现方法。
背景技术
目前,在Windows操作系统下,绝大多数具备图形界面的应用程序都需要专门的图形设备接口对其进行绘制。
除游戏外,绝大多数应用程序使用GDI(Graphics Device Interface,图形设备接口)和GDI+对其图形界面进行绘制。GDI绘制的基本原理是对内存中像素的运算和拷贝,使用者利用GDI或GDI+所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI和GDI+的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。GDI和GDI+在Windows平台下有着广泛、良好的兼容性。
GDI和GDI+虽然兼容性好,但其致命缺点是绘制效率低。它被用在简单的图形应用程序中,效率尚可接受;但对于一些复杂的图形应用场景,如游戏和专业的作图、看图程序中,GDI和GDI+的效率明显低下。由于基于像素运算,GDI和GDI+对如下的渲染操作尤其低效:
Alpha融合(即一张图像半透明地绘制到另一张图像上);
高质量图像缩放;
图像的任意角度旋转。
而GDI+虽然号称部分使用硬件加速,但其实际绘制效率比GDI还要低。
GDI和GDI+的另一个缺点是占用CPU资源多。虽然现有技术中出现了用独立于CPU,专门用于图形渲染的具有强大的并行计算能力的GPU(Graphic Processing Unit,图形处理器)进行加速的技术,但GDI和GDI+并没有大量使用GPU来加速,依旧大大依赖着CPU。
另一种图形设备接口是D3D(Direct3D),它是由微软公司提供的3D图形接口,被广泛用于游戏等高级图形应用程序中。它绘制效率高,使用专门的GPU进行硬件加速。
还有一种图形设备接口是OpenGL(Open Graphics Library),它定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)的绘制。OpenGL是个专业的图形程序接口,是一个功能强大的底层图形库。
但是D3D和OpenGL具有以下两个缺点限制了它们难以被用于普通应用程序的绘制中:
硬件相关性大,兼容性差,在图形渲染过程中很可能受到硬件环境的影响而出错;
接口复杂,一次渲染往往需要编写大量代码,不易于开发。
发明人在本发明的创造过程中发现,用户对于图形处理的需求越来越高,不仅要求界面流畅华丽,更需要其性能更加快速高效优质。
但现有技术中的图形处理接口GDI和GDI+,以及D3D和OpenGL已经很难满足对应用程序界面绘制的需求,因此提供一种绘制效率高、CPU资源占用少、兼容性好和接口易用的图形绘制引擎成为亟待解决的技术问题。
发明内容
本发明实施例要解决的技术问题在于,提供一种图形绘制引擎装置,其可以具有绘制效率高、CPU资源占用少、兼容性好和接口易用的特点,以满足对应用程序的绘制需求。
为解决上述技术问题,本发明提供一种图形绘制引擎实现方法,包括:
提取第一图形设备接口和第二图形设备接口的绘制功能信息;
将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
相应地,本发明还提供了一种图形绘制引擎装置,包括:
信息提取模块,用于提取第一图形设备接口和第二图形设备接口的绘制功能信息;
接口封装模块,将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
函数定义模块,用于根据所述信息提取模块提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
绘制处理模块,用于通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
实施本发明,具有如下有益效果:
由于第一图形设备接口和第二图形设备接口是两种不同的图形设备接口,本发明中将两种不同类型,各具优点的图形设备接口封装到一起,在对应用程序的界面进行绘制过程中,通过封装的图形绘制引擎接口对其中的一种图形设备接口进行调用以实现相应的绘制功能,这种可以兼具两种图形设备接口的优点,从而具有绘制效率高、CPU资源占用少、兼容性好和接口易用的特点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的图形绘制引擎的实现方法实施例一流程示意图;
图2是本发明提供的图形绘制引擎接口的成员函数的示意图;
图3是本发明提供的图形绘制引擎的实现方法的示意图;
图4是本发明提供的图形绘制引擎中封装接口的示意图;
图5是本发明提供的图形绘制引擎实施例二的流程示意图;
图6是本发明提供的图形绘制引擎实现方法实施例三的流程示意图;
图7是本发明提供的图形绘制引擎装置实施例一的组成示意图;
图8是本发明提供的图形绘制引擎装置实施例二的组成示意图;
图9是本发明提供的图形绘制引擎装置实施例三的组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在描述本发明实施例之前,首先对本发明中使用到的技术术语和概念做一些介绍,以便本领域技术人员更好的理解本发明的技术方案。
渲染引擎,位于软件系统的最底层,为软件提供界面渲染等绘图服务。
GDI(Graphics Device Interface),微软提供的图形设备接口,用于在图形设备(如显示器)上进行图形绘制。
GDI+(GDI Plus),对GDI的一套封装和补充,一些地方进行了优化,并增加了新的功能。
以下在描述本发明实施例中,将GDI和GDI+统称为GDI。
D3D(Direct3D),微软提供的3D图形接口,是DirectX产品的一部分,可以实现基于硬件加速的快速渲染。
OpenGL(Open Graphics Library),它定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图像(二维的亦可)的绘制。OpenGL是个专业的图形程序接口,是一个功能强大的底层图形库。
CPU(Central Processing Unit),中央处理器,负责计算机的计算工作。
GPU(Graphic Processing Unit),图形处理器,是相对于CPU的一个概念,独立于CPU,专门用于图形渲染中的一些计算,有很强的并行计算能力。
为了实现高绘制效率、低CPU占用、高兼容性和接口易用的目的,本发明实施例提供的图形绘制引擎及其实现方法的核心如下:
制定该图形绘制引擎的接口,该接口是对D3D和GDI的封装,或者是对OpenGL和GDI的封装,封装好本发明的图形绘制引擎接口后,提供一套D3D绘制功能的实现方案和一套GDI的绘制功能的实现方案;或者提供一套OpenGL绘制功能的实现方案和一套GDI的绘制功能的实现方案;因此,本发明提供的图形绘制引擎可以看作是双核的图形绘制引擎,在具体实现过程中,在同一台计算机的同一时刻,该引擎只处于一种绘制状态,要么是D3D绘制状态,要么是GDI绘制状态,或者是OpenGL绘制状态。这样一来,由于本发明提供的图形绘制引擎因为对D3D和GDI或者OpenGL和GDI进行了封装,因此可以达到兼容性好,接口易用的目的,并且在不同的时刻,调用D3D、GDI、OpenGL其中一种实现图形的绘制功能,可以达到降低CPU资源占用少,绘制效率高的目的。
以下将结合附图说明本发明实施例提供的图形绘制引擎装置及其实现方法。
参见图1,为本发明提供的图形绘制引擎的实现方法实施例一流程示意图。
本实施例提供的方法,包括:
步骤100,提取第一图形设备接口和第二图形设备接口的绘制功能信息;
步骤101,将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
步骤102,根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
步骤103,通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
具体实现过程中,第一图形设备接口和第二图形设备接口的绘制功能信息通常包括四类:
类别一:渲染引擎的初始化、渲染流程的控制、设备状态管理等功能;
类别二:各种形状的绘制、文字和图片的绘制、资源的选取、坐标系和视角控制等功能;
类别三:坐标的计算和表示功能;
类别四:用于表示各类绘制资源,例如画刷、画笔、字体、图片等。
为了封装第一图形设备接口和第二图形设备接口,需要提取他们的共同绘制功能信息,也就是将以上四个类别的功能提炼出来,当然第一图形设备接口和第二图形设备接口的绘制功能包括但不限于此,此处仅为举例说明。
将绘制功能信息提取出来之后,将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口,并根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
参见图2,在具体实现过程中,所述图形绘制引擎接口的成员函数包括:渲染设备函数、渲染目标函数、尺寸和坐标函数、资源函数。
其中,渲染设备函数具体可以表示为:
class Render Device,该函数用以实现上述类别一中的绘制功能。
渲染目标函数具体可以表示为:
class Render Target,该函数用以实现上述类别二中的绘制功能。
尺寸和坐标函数具体可以表示为:
class FSize;
class FPoint;
class FRect;
该函数一般作为各种绘制函数的参数,用以实现上述类别三中的绘制功能。
资源函数具体可以表示为:
class Pen;
class Brush;
class Font;
class Image;
该函数用于实现上述类别四中的绘制功能。
本发明提供的第一图形设备接口为D3D接口或OPENGL接口;第二图形设备接口为GDI接口。
以图形绘制引擎封装D3D和GDI接口为例,利用本发明提供的图形绘制引擎进行图形绘制时,一段简单的绘制代码如下:
参见图3,为本发明提供的图形绘制引擎的实现方法的示意图。
本实施例中,以针对封装好的图形绘制引擎接口,分别对渲染设备函数(RenderDevice)、渲染目标函数(RenderTarget)和尺寸和坐标函数(Size、Point、Rect)以及资源函数(Brush,Pen,Font,Image)提供了D3D和GDI两套实现图形绘制功能的方式,且两套实现的实际绘制效果完全一致。如果图形绘制引擎接口封装的是OPENGL接口和GDI接口,则提供OPENGL和GDI两套实现图形绘制功能的方式。
本实施例提供的图形绘制引擎封装的是D3D接口和GDI接口,以此为例,说明通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能的过程。
以渲染目标函数(RenderTarget)为例,本发明提供的图形绘制引擎接口在实现它时,将RenderTarget理解为“使用一种渲染器(Renderer)向一个数据区(RenderTargetData)绘制图形”。当处于D3D状态时,使用D3D渲染器向D3D数据区绘制;当处于GDI状态时,使用GDI渲染器向GDI数据区绘制。D3D向GDI切换的过程,实际就是更换渲染器和数据区的过程。其中,D3DRenderer封装D3D渲染方法,GDIRenderer封装GDI绘制方法;D3DRenderTargetData封装了一个D3D中的D3DUSAGE_RENDERTARGET纹理,GDIRenderTargetData封装了一个GDI中的DC和HBITMAP。RenderTarget的结构如图4所示。
代码表示如下:
参见图5,为本发明提供的图形绘制引擎实施例二的流程示意图。
本实施例将详细描述通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,包括:
步骤200,图形绘制引擎启动;
步骤201,判断是否检测到第一图形设备接口;
步骤202,若检测到所述第一图形设备接口,通过图形绘制引擎接口调用所述第一图形设备接口实现所述成员函数对应的绘制功能;
步骤203,若无法检测到所述第一图形设备接口,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
以上所述的在图形绘制引擎启动的时候,就检测第一图形设备接口,当无法检测到第一图形设备接口时,调用第二图形设备接口实现对图形的绘制处理,这实际上是一种不同图形设备接口之间进行静态切换的方式,以本图形绘制引擎封装的是D3D接口和GDI接口为例,说明静态切换流程。
静态切换是指在用户指定本图形绘制引擎以D3D模式初始化(即上述“代码”中提到的InitAsD3DRenderDevice)时,检测到当前操作系统无法支持D3D,或者在初始化D3D的某一步发生了错误,切换为以GDI模式初始化图形绘制引擎的过程。因为这个切换过程是在程序初始化的时候进行的,此时图形绘制引擎还没有创建任何资源,因此静态切换过程非常简单。
参见图6,为本发明提供的图形绘制引擎实现方法实施例三的流程示意图。
本实施例将详细描述通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,包括:
步骤300,判断在使用第一图形设备接口实现所述成员函数对应的绘制功能是否发生异常;
步骤301,当使用第一图形设备接口实现所述成员函数对应的绘制功能发生异常时,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
以上所述的在图形绘制引擎启动的时候,就默认使用第一图形设备接口实现成员函数对应的绘制功能,当检测到第一图形设备接口发生异常时,调用第二图形设备接口实现对图形的绘制处理,这实际上是一种不同图形设备接口之间进行动态切换的方式,以本图形绘制引擎封装的是D3D接口和GDI接口为例,说明动态切换流程。
动态切换是指图形绘制引擎已经成功地初始化为D3D模式,但是在运行过程中发生了致命的渲染错误(如显存不足等),而不得不切换到GDI模式继续绘制以保证软件不至于崩溃。
在从D3D模式动态切换到GDI模式的过程中,需要将所有的D3D资源转换成GDI资源。这些资源包括D3D的纹理和表面,以及维护这些纹理和表面的状态参数。因此必须事先统一管理这些资源。本实施例中用list来维护这些可能发生变动的资源。
以RenderTarget为例,有全局列表:
list<RenderTarget*>g_pRTList;
在RenderTarget的构造函数中,将他添加进列表:
g_pRTList.push_back(this);
在析构函数中,将他从列表中移除:
g_pRTList.erase(this);
本发明提供的图形绘制引擎中其他需要被管理的资源有:
本发明提供的图形绘制引擎对每个D3D调用提供了严格的错误处理,以保证在D3D发生致命错误时及时切换到GDI模式。D3D的每个调用都会返回HRESULT来告知调用的成功与否。本发明提供的图形绘制引擎中定义的D3D致命错误有:
当D3D渲染发生异常时,将会进入动态转换流程。
动态转换的过程为:
将所有被管理的资源的内部状态标志从D3D改为GDI;
将所有被管理的资源逐一通过转换桥;转换桥是一组封装的转换函数,负责将D3D资源转换为GDI资源;
释放所有D3D资源;
通过图形绘制引擎接口调用GDI实现对图形的绘制处理。
其中,上述转换桥的转换操作如下:
实施本发明实施例提供的图形绘制引擎实现方法,具有如下有益效果:
由于第一图形设备接口和第二图形设备接口是两种不同的图形设备接口,本发明中将两种不同类型,各具优点的图形设备接口封装到一起,在对应用程序的界面进行绘制过程中,通过封装的图形绘制引擎接口对其中的一种图形设备接口进行调用以实现相应的绘制功能。上述实施例还具体说明了将D3D和GDI两种不同类型的图形设备接口封装在一起的实现过程,以及在实际图形绘制过程中,如何在D3D和GDI两种图形处理接口之间进行切换的具体实现过程。本发明提供的图形绘制引擎可以兼具两种图形设备接口的优点,从而具有绘制效率高、CPU资源占用少、兼容性好和接口易用的特点。
以下将详细说明本发明提供的图形绘制引擎。
参见图7,为本发明提供的图形绘制引擎装置实施例一的组成示意图。
本实施例提供的图形绘制引擎装置,包括:
信息提取模块10,用于提取第一图形设备接口和第二图形设备接口的绘制功能信息;
接口封装模块11,将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
函数定义模块12,用于根据所述信息提取模块提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
绘制处理模块13,用于通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
具体实现过程中,第一图形设备接口和第二图形设备接口的绘制功能信息通常包括四类:
类别一:渲染引擎的初始化、渲染流程的控制、设备状态管理等功能;
类别二:各种形状的绘制、文字和图片的绘制、资源的选取、坐标系和视角控制等功能;
类别三:坐标的计算和表示功能;
类别四:用于表示各类绘制资源,例如画刷、画笔、字体、图片等。
为了封装第一图形设备接口和第二图形设备接口,需要信息提取模块10提取他们的共同绘制功能信息,也就是将以上四个类别的功能提炼出来,当然第一图形设备接口和第二图形设备接口的绘制功能包括但不限于此,此处仅为举例说明。
将绘制功能信息提取出来之后,接口封装模块11将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口,然后由函数定义模块12根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数;
在具体实现过程中,所述图形绘制引擎接口的成员函数包括:渲染设备函数、渲染目标函数、尺寸和坐标函数、资源函数。各类函数的具体表示如图2所示,在此不再赘述。
参见图8,为本发明提供的图形绘制引擎装置实施例二的组成示意图。
本实施例将详细描述绘制处理模块13通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,其包括:
接口检测单元130,用于在图形绘制引擎启动时检测所述第一图形设备接口;
接口调用单元131,用于在所述接口检测单元检测到所述第一图像设备接口时,通过图形绘制引擎接口调用所述第一图形设备接口实现所述成员函数对应的绘制功能;所述接口检测单元无法检测到所述第一图形设备接口时,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
以上所述的在图形绘制引擎启动的时候,绘制处理模块13的接口检测单元130就检测第一图形设备接口,当无法检测到第一图形设备接口时,由接口调用单元131调用第二图形设备接口实现对图形的绘制处理,这实际上是一种不同图形设备接口之间进行静态切换的方式,以本图形绘制引擎封装的是D3D接口和GDI接口为例,说明静态切换流程。
静态切换是指在用户指定本图形绘制引擎以D3D模式初始化(即上述“代码”中提到的InitAsD3DRenderDevice)时,检测到当前操作系统无法支持D3D,或者在初始化D3D的某一步发生了错误,切换为以GDI模式初始化图形绘制引擎的过程。因为这个切换过程是在程序初始化的时候进行的,此时图形绘制引擎还没有创建任何资源,因此静态切换过程非常简单。
参见图9,为本发明提供的图形绘制引擎装置实施例三的组成示意图。
本实施例将详细描述绘制处理模块13通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,本实施例中的绘制处理模块13除了包括上述实施例中的接口检测单元10和接口调用单元11以外,还包括:
异常检测单元132,用于在接口调用单元调用第一图形设备接口实现所述成员函数对应的绘制功能时,检测是否发生异常;
在所述异常检测单元132检测到发生异常时,所述接口调用单元131还用于通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
以上所述的在图形绘制引擎启动的时候,就默认使用第一图形设备接口实现成员函数对应的绘制功能,当检测到第一图形设备接口发生异常时,调用第二图形设备接口实现对图形的绘制处理,这实际上是一种不同图形设备接口之间进行动态切换的方式,该动态切换的方式参见的本发明提供的图形绘制引擎实施例三的流程中详述的内容,在此不再赘述。
实施本发明实施例提供的图形绘制引擎装置,具有如下有益效果:
由于第一图形设备接口和第二图形设备接口是两种不同的图形设备接口,本发明中将两种不同类型,各具优点的图形设备接口封装到一起,在对应用程序的界面进行绘制过程中,通过封装的图形绘制引擎接口对其中的一种图形设备接口进行调用以实现相应的绘制功能。上述实施例还具体说明了将D3D和GDI两种不同类型的图形设备接口封装在一起的实现过程,以及在实际图形绘制过程中,如何在D3D和GDI两种图形处理接口之间进行切换的具体实现过程。本发明提供的图形绘制引擎可以兼具两种图形设备接口的优点,从而具有绘制效率高、CPU资源占用少、兼容性好和接口易用的特点。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (8)

1.一种图形绘制引擎实现方法,其特征在于,包括:
提取第一图形设备接口和第二图形设备接口的绘制功能信息;
将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
根据所述提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数,所述图形绘制引擎接口的成员函数包括:渲染设备函数、渲染目标函数、尺寸和坐标函数、资源函数;
通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
2.如权利要求1所述的方法,其特征在于,通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,包括:
在图形绘制引擎启动时,检测所述第一图形设备接口;
若检测到所述第一图形设备接口,通过图形绘制引擎接口调用所述第一图形设备接口实现所述成员函数对应的绘制功能;
若无法检测到所述第一图形设备接口,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
3.如权利要求2所述的方法,其特征在于,通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能,包括:
判断在使用第一图形设备接口实现所述成员函数对应的绘制功能是否发生异常;
当使用第一图形设备接口实现所述成员函数对应的绘制功能发生异常时,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述第一图形设备接口为D3D接口或OPENGL接口;所述第二图形设备接口为GDI接口。
5.一种图形绘制引擎装置,其特征在于,包括:
信息提取模块,用于提取第一图形设备接口和第二图形设备接口的绘制功能信息;
接口封装模块,将所述第一图形设备接口和第二图形设备接口封装为图形绘制引擎接口;
函数定义模块,用于根据所述信息提取模块提取的绘制功能信息,定义所述封装的图形绘制引擎接口的成员函数,所述图形绘制引擎接口的成员函数包括:渲染设备函数、渲染目标函数、尺寸和坐标函数、资源函数;
绘制处理模块,用于通过图形绘制引擎接口调用所述第一图形设备接口或第二图形设备接口实现所述成员函数对应的绘制功能。
6.如权利要求5所述的图形绘制引擎装置,其特征在于,所述绘制处理模块,包括:
接口检测单元,用于在图形绘制引擎启动时检测所述第一图形设备接口;
接口调用单元,用于在所述接口检测单元检测到所述第一图像设备接口时,通过图形绘制引擎接口调用所述第一图形设备接口实现所述成员函数对应的绘制功能;所述接口检测单元无法检测到所述第一图形设备接口时,通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
7.如权利要求6所述的图形绘制引擎装置,其特征在于,所述绘制处理模块还包括:
异常检测单元,用于在接口调用单元调用第一图形设备接口实现所述成员函数对应的绘制功能时,检测是否发生异常;
在所述异常检测单元检测到发生异常时,所述接口调用单元还用于通过图形绘制引擎接口调用第二图形设备接口实现对图形的绘制处理。
8.如权利要求5至7中任一项所述的图形绘制引擎装置,其特征在于,所述第一图形设备接口为D3D接口或OPENGL接口;所述第二图形设备接口为GDI接口。
CN201110189638.0A 2011-07-07 2011-07-07 一种图形绘制引擎装置及其实现方法 Active CN102867284B (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN201110189638.0A CN102867284B (zh) 2011-07-07 2011-07-07 一种图形绘制引擎装置及其实现方法
EP12808192.4A EP2731073B1 (en) 2011-07-07 2012-06-06 Graphics rendering engine and implementation method thereof
PCT/CN2012/076507 WO2013004118A1 (zh) 2011-07-07 2012-06-06 一种图形绘制引擎及其实现方法
JP2014517410A JP5805864B2 (ja) 2011-07-07 2012-06-06 グラフィックスレンダリングエンジンおよびその実施方法
AU2012280863A AU2012280863B2 (en) 2011-07-07 2012-06-06 Graphics rendering engine and implementation method thereof
US14/144,348 US9129395B2 (en) 2011-07-07 2013-12-30 Graphic rendering engine and method for implementing graphic rendering engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110189638.0A CN102867284B (zh) 2011-07-07 2011-07-07 一种图形绘制引擎装置及其实现方法

Publications (2)

Publication Number Publication Date
CN102867284A CN102867284A (zh) 2013-01-09
CN102867284B true CN102867284B (zh) 2016-10-26

Family

ID=47436496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110189638.0A Active CN102867284B (zh) 2011-07-07 2011-07-07 一种图形绘制引擎装置及其实现方法

Country Status (6)

Country Link
US (1) US9129395B2 (zh)
EP (1) EP2731073B1 (zh)
JP (1) JP5805864B2 (zh)
CN (1) CN102867284B (zh)
AU (1) AU2012280863B2 (zh)
WO (1) WO2013004118A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103295258A (zh) * 2013-04-18 2013-09-11 于连庆 一种新型的多功能大气科学数据图形渲染引擎
CN103544038B (zh) * 2013-10-31 2017-10-24 Tcl集团股份有限公司 一种基于4k2k系统的应用程序显示方法和装置
US9936002B2 (en) * 2014-02-21 2018-04-03 Dell Products L.P. Video compose function
US9553925B2 (en) 2014-02-21 2017-01-24 Dell Products L.P. Front-end high availability proxy
CN105955833B (zh) * 2016-06-06 2021-09-21 腾讯科技(深圳)有限公司 引擎调用方法和装置
CN106327563B (zh) * 2016-08-24 2019-04-05 武汉斗鱼网络科技有限公司 一种Directx纹理资源互操作系统及方法
CN108108369B (zh) * 2016-11-24 2021-09-07 腾讯科技(深圳)有限公司 公用接口库调用错误处理方法和装置
CA3075756A1 (en) 2017-09-12 2019-03-21 Schlumberger Canada Limited Visualization infrastructure for web applications
CN109964204B (zh) 2017-10-19 2020-12-22 腾讯科技(深圳)有限公司 用于处理图形的方法和系统
CN107728997B (zh) * 2017-10-31 2020-09-11 万兴科技股份有限公司 一种视频播放器渲染系统
CN110825467B (zh) * 2018-08-09 2023-10-24 北京微播视界科技有限公司 渲染方法、装置、硬件装置和计算机可读存储介质
CN109542628B (zh) * 2018-12-12 2023-03-14 中国航空工业集团公司西安航空计算技术研究所 一种基于状态机的层次化gpu资源管理系统
CN110851187B (zh) * 2019-11-19 2023-06-02 北京百度网讯科技有限公司 显存处理方法、装置、设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1763784A (zh) * 2005-11-23 2006-04-26 北京航空航天大学 一种三维场景实时绘制框架和绘制方法
CN1851753A (zh) * 2005-11-28 2006-10-25 北京航空航天大学 一种基于状态集的Shader三维图形绘制框架和绘制方法
CN101937358A (zh) * 2009-06-25 2011-01-05 苹果公司 虚拟图形设备驱动器

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0727505B2 (ja) * 1990-02-12 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション インターフェース方法及びインターフェース・システム
US6289396B1 (en) * 1995-11-21 2001-09-11 Diamond Multimedia Systems, Inc. Dynamic programmable mode switching device driver architecture
US8214849B2 (en) * 2001-07-13 2012-07-03 Advanced Micro Devices, Inc. System for loading device-specific code and method thereof
JP4571437B2 (ja) 2004-05-31 2010-10-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 解像度が異なる複数のウィンドウを表示するためのシステム、方法およびプログラム
US7830372B2 (en) 2004-08-30 2010-11-09 Qnx Software Systems Gmbh & Co. Kg Method and system for providing transparent access to hardware graphic layers
US20060048062A1 (en) * 2004-09-01 2006-03-02 Adamson Dale F Software and method providing graphic user interface for graphics adapter configuration
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20080030510A1 (en) 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1763784A (zh) * 2005-11-23 2006-04-26 北京航空航天大学 一种三维场景实时绘制框架和绘制方法
CN1851753A (zh) * 2005-11-28 2006-10-25 北京航空航天大学 一种基于状态集的Shader三维图形绘制框架和绘制方法
CN101937358A (zh) * 2009-06-25 2011-01-05 苹果公司 虚拟图形设备驱动器

Also Published As

Publication number Publication date
EP2731073A4 (en) 2015-03-04
US20140111527A1 (en) 2014-04-24
AU2012280863A1 (en) 2014-02-20
AU2012280863B2 (en) 2016-03-10
JP5805864B2 (ja) 2015-11-10
WO2013004118A1 (zh) 2013-01-10
EP2731073A1 (en) 2014-05-14
US9129395B2 (en) 2015-09-08
JP2014526077A (ja) 2014-10-02
EP2731073B1 (en) 2018-02-28
CN102867284A (zh) 2013-01-09

Similar Documents

Publication Publication Date Title
CN102867284B (zh) 一种图形绘制引擎装置及其实现方法
US8325177B2 (en) Leveraging graphics processors to optimize rendering 2-D objects
JP6073533B1 (ja) タイルベースのアーキテクチャ上での最適化されたマルチパスレンダリング
CN103336816B (zh) 安卓系统上基于GPU实现的Canvas元素渲染方法及装置
CN101059760B (zh) Opengl到opengl│es翻译器和opengl│es仿真器
CN109646955B (zh) 游戏界面生成方法、装置和存储介质
CN106990961B (zh) 一种WebGL图形渲染引擎的建立方法
CN103677777B (zh) 调用应用程序组件的方法及装置
CN105224163B (zh) 界面显示方法和装置
US10825129B2 (en) Eliminating off screen passes using memoryless render target
CN105550973B (zh) 图形处理单元、图形处理系统及抗锯齿处理方法
KR20170040698A (ko) 그래픽스 파이프라인을 수행하는 방법 및 장치
US9153193B2 (en) Primitive rendering using a single primitive type
CN117788609A (zh) 界面图元的拾取方法、装置、设备及存储介质
US8203567B2 (en) Graphics processing method and apparatus implementing window system
KR20130073943A (ko) 컨텐츠 보존 와프를 이용한 인터페이스들의 재형상화
RU2666300C2 (ru) Технологии уменьшения пиксельного шейдинга
CN102740025B (zh) 屏幕菜单色彩的处理方法及装置
KR101281156B1 (ko) 레이 트레이싱 코어 및 레이 트레이싱 처리 방법
CN108805964B (zh) 基于OpenGL ES的VR机顶盒启动动画制作方法及系统
Peuhkurinen et al. Mixed reality application paradigm for multiple simultaneous 3D applications
CN103310479B (zh) 图像处理方法和电子设备
WO2019216468A1 (ko) 모바일 뷰잉 시스템
KR20190129602A (ko) 모바일 뷰잉 시스템
Yoon Visualizing oceanographic data using a cluster of Sony Playstation2s

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant