图形渲染方法和系统、通用游戏支撑平台的制作方法

文档序号:6500900阅读:68来源:国知局
图形渲染方法和系统、通用游戏支撑平台的制作方法
【专利摘要】本发明提供了一种图形渲染方法和系统、通用游戏支撑平台,执行所述方法的系统设置有内存缓冲区,所述方法包括数据缓存过程和图形渲染过程,所述数据缓存过程包括:若WritePointer+AllocationSize<ReadPointer,或(ReadPointer<WritePointer且WritePointer+AllocationSize<Enddata),则将从数据存储设备读取的长度为AllocationSize的图形数据写入所述内存缓冲区中WritePointer指向的位置;所述图形渲染过程包括:若ReadPointer<Enddata且ReadPointer≠WritePointer,则将所述内存缓冲区中ReadPointer指向位置的图形数据显示在屏幕上。在本发明在基于内存缓冲区进行图形渲染时,可较大程度的提高渲染效率,解决了现有技术渲染效果不佳的问题。
【专利说明】图形渲染方法和系统、通用游戏支撑平台

【技术领域】
[0001] 本发明涉及图形处理【技术领域】,特别是涉及一种图形渲染方法和系统,以及,一 种通用游戏支撑平台。

【背景技术】
[0002] 渲染到纹理是三维图形(3D)处理中的一种功能强大并能产生很多特殊效果的技 术(如发光效果、环境映射、阴影映射等),可以将多个纹理的图像通道(Alpha通道)层、图像 颜色(color)层分别进行各种混合处理后得到最终渲染的纹理。渲染到纹理是渲染到表面 的一个延伸,首先,需要创造一个纹理;第二步,把适当的场景渲染到创建的纹理上;然后, 把这个纹理用在最后的渲染上。
[0003] 为实现现场真实感,在图形渲染时,一般需要将图形的完整数据读取到内存(内存 缓冲区需要大于或等于渲染对象的大小),因此开发、运行应用软件需要图形渲染时对环境 (特别是内存)要求很高。为解决上述问题,现有技术给出了一些改进措施,下面以目前非常 流行的面向对象图形?宣染引擎(OGRE,Object-Oriented Graphics Rendering Engine)为 例进行说明。
[0004] OGRE是一个用C++开发的面向场景、非常灵活的3D引擎,旨在让开发人员更容易、 更直接地利用硬件加速的3D图形系统开发应用,其类库隐藏了底层系统库(如:Direct3D 和OpenGL)的所有细节,提供一个基于对象和类的接口,不但可实现PNG、TGA、DDS、TIF、 GIF、JPG等多种纹理图片的渲染,还可以实现一维纹理(ID)、容积纹理(Volumetric textures)、体积纹理(Cubemaps)、压缩的纹理格式(如:DXTC)等特殊格式的纹理渲染。为 支持硬件配置较低环境下的软件开发和运行时的图形渲染,0GRE采用单一队列为基础的渲 染管理方式。但是,由于上述单一队列管理方式不支撑异步渲染技术,因此图形渲染性能不 高,在一定程度上影响了图形渲染效果。


【发明内容】

[0005] 本发明所要解决的技术问题是提供一种图形渲染方法,可解决现有技术图形渲染 效果不佳的问题。
[0006] 本发明还提供了一种图形渲染系统以及一种通用游戏支撑平台,以保证上述方法 的实际应用。
[0007] 为了解决上述问题,本发明公开了一种图形渲染方法,执行所述方法的系统设 置有内存缓冲区,所述方法包括数据缓存过程和图形渲染过程,所述数据缓存过程包括: 若 WritePointer+AllocationSize < ReadPointer,或(ReadPointer < WritePointer 且WritePointer + AllocationSize<Enddata),则将从数据存储设备读取的长度为 AllocationSize的图形数据写入所述内存缓冲区中WritePointer指向的位置;所述图形 ?宣染过程包括:若 ReadPointer < Enddata 且 ReadPointer 尹 WritePointer,则将所述内 存缓冲区中ReadPointer指向位置的图形数据显示在屏幕上;其中,ReadPointer表示指向 所述内存缓冲区的读指针,WritePointer表示指向所述内存缓冲区的写指针,Enddata表 示所述内存缓冲区的结束地址,AllocationSize表示每次处理的图形数据长度。
[0008] 优选的,所述数据缓存过程还包括:当WritePointer + AllocationSize > Enddata 时,若 ReadPointer 尹 BeginData,则将 WritePointer 移动到 BeginData ;其中,BeginData表示所述内存缓冲区的起始地址。
[0009] 优选的,所述图形渲染过程还包括:当ReadPointer彡EndData时,若 WritePointer 尹 BeginData,则将 ReadPointer 移动到 BeginData ;其中,BeginData 表不所 述内存缓冲区的起始地址。
[0010] 优选的,所述内存缓冲区为环形队列结构,所述数据缓存过程还包 括: 当 WritePointer + AllocationSize ^ Enddata 时, 若(WritePointer + AllocationSize)%BufferSize +BeginData < ReadPointer,则将上述图形数据写入所述内 存缓冲区中WritePointer指向的位置,当写到EndData地址时,后续图形数据从BeginData 地址开始继续写入;其中,%表示取模运算,BeginData表示所述内存缓冲区的起始地址, BufferSize表示所述内存缓冲区的大小。
[0011] 优选的,所述数据缓存过程由1个写线程操作,所述图形渲染过程由1个或多个并 行读线程操作。
[0012] 依据本发明的另一优选实施例,公开了一种图形渲染系统,包括:内存管理单元, 用于申请和管理起始地址为BeginData,结束地址为EndData的内存缓冲区;数据读取单 元,用于从存储设备读取长度为AllocationSize的图形数据;指针位置判断单元,用于判 断指向所述内存缓冲区的读指针ReadPointer和写指针WritePointer的位置关系;第一数 据缓存单元,用于根据所述指针位置判断单元的判断结果重复执行下述数据缓存过程:当 读指针 ReadPointer 和写指针 WritePointer 的位置关系为 WritePointer+AllocationSize < ReadPointer,或(ReadPointer < WritePointer 且 WritePointer + AllocationSize < Enddata)时,接收所述数据读取单元读取的图形数据,并写入所述内存缓冲区中 WritePointer指向的位置;图形渲染单元,用于根据所述指针位置判断单元的判断结果 重复执行下述图形渲染过程:当ReadPointer尹WritePointer时,将所述内存缓冲区中 ReadPointer指向位置的图形数据显示在屏幕上。
[0013] 优选的,还包括:写指针位置调整单元,用于根据所述指针位置判断单元的判断 结果执行下述指针位置调整过程:当WritePointer + AllocationSize彡Enddata时,若 ReadPointer 尹 BeginData,则将 WritePointer 移动到 BeginData。
[0014] 优选的,还包括:读指针位置调整单元,用于根据所述指针位置判断单 元的判断结果执行下述指针位置调整过程:当ReadPointer彡EndData时,若 WritePointer 尹 BeginData,则将 ReadPointer 移动到 BeginData。
[0015] 优选的,所述内存缓冲区为环形队列结构;所述系统还包括第二数据缓存单元,用 于根据所述指针位置判断单元的判断结果重复执行下述数据缓存过程:当WritePointer + AllocationSize ^ Enddata ? (WritePointer + AllocationSize)%BufferSize+BeginData < ReadPointer 时,接收 所述数据读取单元获得的图形数据并写入所述内存缓冲区中WritePointer指向的位置, 当写到EndData地址时,后续图形数据从BeginData地址开始继续写入;其中,%表示取模 运算,BufferSize表示所述内存缓冲区的大小。
[0016] 另外,本发明还公开了一种包括上述图形渲染系统的通用游戏支撑平台。
[0017] 与现有技术相比,本发明具有以下优点: 在本发明优选实施例公开的方案中,通过对内存缓冲区进行读、写操作的指针位置进 行了控制,使其不会超越对方指针的位置,因此,对内存缓冲区进行读、写操作可以由不同 的进程或线程进行控制,在基于内存缓冲区进行图形渲染时,不仅可以实现异步操作,还可 以实现并发操作,可较大程度的提高渲染效率,解决了现有技术渲染效果不佳的问题。

【专利附图】

【附图说明】
[0018] 图1-1是本发明图形渲染方法第一实施例数据缓存过程的流程图; 图1-2是本发明图形渲染方法第一实施例图形渲染过程的流程图; 图2-1是本发明图形渲染方法第二实施例数据缓存过程的流程图; 图3是本发明图形渲染系统一实施例的结构示意图。

【具体实施方式】
[0019] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。
[0020] 方法实施例一: 在本优选实施例中,需要系统配置一个大小为BufferSize的内存缓冲区,该内存缓冲 区的起始地址为BeginData,结束地址为EndData。为提高渲染效率,解决现有技术渲染效 果不佳的问题,本优选实施例采用异步操作技术,将数据缓存过程和图形渲染过程设置成 二个互相独立、能够并发运行的过程;为解决对同一缓冲区操作过程中的冲突问题,本优选 实施例对上述操作过程进行了特定控制,具体说明如下: 参照图1-1,示出了本发明图形渲染方法第一实施例数据缓存过程的流程,具体包括以 下步骤: 步骤 S101 :若 WritePointer+AllocationSize < ReadPointer 成立,转步骤 S103 ;否 贝丨J,转步骤S102 ; 其中,ReadPointer表示指向上述内存缓冲区的读指针,WritePointer表示指向上述 内存缓冲区的写指针,AllocationSize表示本方法实施例中每次处理的图形数据长度。
[0021] 步骤 S102 :若 ReadPointer < WritePointer 且 WritePointer + AllocationSize < Enddata成立,转步骤S103 ;否则,转步骤S104 ; 步骤S103 :将从数据存储设备读取的长度为AllocationSize的图形数据写入上述内 存缓冲区中WritePointer指向的位置; 步骤 S104 :判断当 WritePointer + AllocationSize > Enddata 时, ReadPointer尹BeginData是否成立,若是,转步骤S105 ;否则,转步骤S101 ; 步骤 S105 :将 WritePointer 指向 BeginData,转步骤 S101。
[0022] 参照图1-2,示出了本发明图形渲染方法第一实施例图形渲染过程的流程,具体包 括以下步骤: 步骤 SI 11 :若 ReadPointer < Enddata 且 ReadPointer 尹 WritePointer 成立,转步骤 S112 ;否则,转步骤S113 ; 步骤S112 :则将上述内存缓冲区中ReadPointer指向位置的图形数据显示在屏幕上; 步骤 S113 :判断当 ReadPointer > Enddata 时,WritePointer 尹 BeginData 是否成立, 若是,转步骤S114 ;否则,转步骤S111 ; 步骤 S114 :将 ReadPointer 指向 BeginData,转步骤 S111。
[0023] 当所有图形数据渲染完成后,结束上述数据缓存和图形渲染过程。另外,为保 证方案的正常执行,在初始阶段,先执行数据缓存过程(WritePointer指向BeginData), WritePointer变化之后,再执行图形渲染过程(ReadPointer指向BeginData)。
[0024] 方法实施例二: 本优选实施例与上述第一方法实施例的区别之一在于,系统配置的大小为BufferSize 的内存缓冲区为环形队列结构,相应的,准许写的情况也有所区别。
[0025] 参照图2-1,示出了本发明图形渲染方法第二实施例数据缓存的流程,具体包括以 下步骤: 步骤 S201 :若 ReadPointer < WritePointer 且 WritePointer + AllocationSize < Enddata成立,转步骤S203 ;否则,转步骤S202 ; 步骤 S202 :若 WritePointer+AllocationSize < ReadPointer 成立,转步骤 S203 ;否 贝丨J,转步骤S204 ; 步骤S203 :将从数据存储设备读取的长度为AllocationSize的图形数据写入上述内 存缓冲区中WritePointer指向的位置; 步骤 S204:判断当 WritePointer + AllocationSize > Enddata 时,(WritePointer + AllocationSize)%BufferSize + BeginData < ReadPointer 是否成立,若是,转步骤 S205 ; 否则,转步骤S201 ; 其中,%表示取模运算,如4%5、9%5、14%5的运算结果均为4。
[0026] 步骤S205 :将上述读取的图形数据写入内存缓冲区中WritePointer指向的位置, 当写到EndData地址时,后续图形数据从BeginData地址开始继续写入。
[0027] 然后,转步骤S201重复执行上述数据缓存过程,直至所有图形数据渲染完成。
[0028] 本优选实施例的图形渲染流程与上述第一方法实施例基本相同,在此不再赘述。
[0029] 对于前述的各方法实施例,为了描述简单,故将其都表述为一系列的动作组 合,但是本领域的技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根 据本发明,某些步骤可以采用其他顺序或同时执行,如对于准许写条件的判断顺序,可 以先判断 WritePointer+AllocationSize < ReadPointer,也可以先判断 ReadPointer < WritePointer 且 WritePointer + AllocationSize < Enddata;其次,本领域技术人员 也应该知悉,上述方法实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明 所必须的。
[0030] 系统实施例: 参照图3,示出了本发明图形渲染系统一实施例的结构示意图,包括: 内存管理单元30 :用于申请和管理起始地址为BeginData,结束地址为EndData的内存 缓冲区; 数据读取单元31 :用于从存储设备读取长度为AllocationSize的图形数据; 指针位置判断单元32 :用于判断指向内存缓冲区的读指针ReadPointer和写指针 WritePointer的位置关系; 第一数据缓存单元33:用于根据指针位置判断单元32的判断结果重复执行 下述数据缓存过程:当读指针ReadPointer和写指针WritePointer的位置关系为 WritePointer+AllocationSize < ReadPointer,或(ReadPointer < WritePointer ? WritePointer + AllocationSize < Enddata)时,接收数据读取单元31读取的图形数据, 并写入上述内存缓冲区中WritePointer指向的位置; 写指针位置调整单元34:用于根据指针位置判断单元32的判断结果执行 下述指针位置调整过程:当WritePointer + AllocationSize > Enddata时,若 ReadPointer 尹 BeginData,则将 WritePointer 移动到 BeginData ; 图形渲染单元35 :用于根据指针位置判断单元32的判断结果重复执行下述图形渲染 过程:当ReadPointer尹WritePointer时,将内存缓冲区中ReadPointer指向位置的图形 数据显示在屏幕上; 读指针位置调整单元36 :用于根据指针位置判断单元32的判断结果执行下述指 针位置调整过程:当 ReadPointer > EndData 时,若 WritePointer 尹 BeginData,则将 ReadPointer 移动到 BeginData。
[0031] 另外,在上述系统实施例进一步的优选实施例中,内存缓冲区为环形队列结构,系 统还包括第二数据缓存单元,用于根据指针位置判断单元32的判断结果重复执行下述数 据缓存过程: 当 WritePointer + AllocationSize > Enddata 且 (WritePointer + AllocationSize)%BufferSize+BeginData < ReadPointer 时,接收 数据读取单元31获得的图形数据并写入内存缓冲区中WritePointer指向的位置,当写到 EndData地址时,后续图形数据从BeginData地址开始继续写入。
[0032] 平台实施例: 为方便多种类型的游戏开发和运行,可基于上述图形渲染系统实施例组成一通用游戏 支撑平台,为其在图形处理过程中提供包括图形渲染在内的底层技术支撑和工具集。
[0033] 需要说明的是,上述装置实施例属于优选实施例,所涉及的单元和模块并不一定 是本发明所必须的。
[0034] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与 其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0035] 以上对本发明所提供的一种图形渲染方法和系统,以及,一种通用游戏支撑平台 进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实 施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术 人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说 明书内容不应理解为对本发明的限制。
【权利要求】
1. 一种图形渲染方法,其特征在于,执行所述方法的系统设置有内存缓冲区,所述方法 包括: 数据缓存过程:若 WritePointer+AllocationSize < ReadPointer,或(ReadPointer < WritePointer 且 WritePointer + AllocationSize < Enddata),则将从数据存储设备 读取的长度为AllocationSize的图形数据写入所述内存缓冲区中WritePointer指向的位 置; 图形?宣染过程:若 ReadPointer < Enddata 且 ReadPointer 尹 WritePointer,则将所 述内存缓冲区中ReadPointer指向位置的图形数据显示在屏幕上; 其中,ReadPointer表示指向所述内存缓冲区的读指针,WritePointer表示指向所述 内存缓冲区的写指针,Enddata表示所述内存缓冲区的结束地址,AllocationSize表示每 次处理的图形数据长度。
2. 如权利要求1所述的方法,其特征在于,所述数据缓存过程还包括: 当 WritePointer + AllocationSize > Enddata 时,若 ReadPointer 尹 BeginData,则 将 WritePointer 移动到 BeginData ; 其中,BeginData表示所述内存缓冲区的起始地址。
3. 如权利要求1所述的方法,其特征在于,所述图形渲染过程还包括: 当 ReadPointer > EndData 时,若 WritePointer 尹 BeginData,则将 ReadPointer 移动 到 BeginData ; 其中,BeginData表示所述内存缓冲区的起始地址。
4. 如权利要求1所述的方法,其特征在于,所述内存缓冲区为环形队列结构,所述数据 缓存过程还包括: 当 WritePointer + AllocationSize > Enddata 时,若 (WritePointer + AllocationSize) %BufferSize +BeginData < ReadPointer 则将上述图形数据写入所述内存缓冲区中WritePointer指向的位置,当写到EndData 地址时,后续图形数据从BeginData地址开始继续写入; 其中,%表示取模运算,BeginData表示所述内存缓冲区的起始地址,BufferSize表示 所述内存缓冲区的大小。
5. 如权利要求1所述的方法,其特征在于: 所述数据缓存过程由1个写线程操作,所述图形渲染过程由1个或多个并行读线程操 作。
6. -种图形渲染系统,其特征在于,包括: 内存管理单元,用于申请和管理起始地址为BeginData,结束地址为EndData的内存缓 冲区; 数据读取单元,用于从存储设备读取长度为AllocationSize的图形数据; 指针位置判断单元,用于判断指向所述内存缓冲区的读指针ReadPointer和写指针 WritePointer的位置关系; 第一数据缓存单元,用于根据所述指针位置判断单元的判断结果重复执行下 述数据缓存过程:当读指针ReadPointer和写指针WritePointer的位置关系为 WritePointer+AllocationSize < ReadPointer,或(ReadPointer < WritePointer ? WritePointer + AllocationSize<Enddata)时,接收所述数据读取单元读取的图形数据, 并写入所述内存缓冲区中WritePointer指向的位置; 图形渲染单元,用于根据所述指针位置判断单元的判断结果重复执行下述图形渲染过 程:当ReadPointer尹WritePointer时,将所述内存缓冲区中ReadPointer指向位置的图 形数据显示在屏幕上。
7. 如权利要求6所述的系统,其特征在于,还包括: 写指针位置调整单元,用于根据所述指针位置判断单元的判断结果执行下 述指针位置调整过程:当 WritePointer + AllocationSize > Enddata 时,若 ReadPointer 尹 BeginData,则将 WritePointer 移动到 BeginData。
8. 如权利要求6所述的系统,其特征在于,还包括: 读指针位置调整单元,用于根据所述指针位置判断单元的判断结果执行下述指针位置 调整过程:当 ReadPointer > EndData 时,若 WritePointer 尹 BeginData,则将 ReadPointer 移动到 BeginData。
9. 如权利要求6所述的系统,其特征在于: 所述内存缓冲区为环形队列结构; 所述系统还包括第二数据缓存单元,用于根据所述指针位置判断单元的判断结果重复 执行下述数据缓存过程: 当 WritePointer + AllocationSize > Enddata 且 (WritePointer + AllocationSize)%BufferSize+BeginData < ReadPointer 时,接收 所述数据读取单元获得的图形数据并写入所述内存缓冲区中WritePointer指向的位置, 当写到EndData地址时,后续图形数据从BeginData地址开始继续写入; 其中,%表示取模运算,BufferSize表示所述内存缓冲区的大小。
10. -种通用游戏支撑平台,其特征在于,包括权利要求6、之一所述的图形渲染系 统。
【文档编号】G06T15/00GK104063892SQ201310089264
【公开日】2014年9月24日 申请日期:2013年3月20日 优先权日:2013年3月20日
【发明者】姜威 申请人:北京麒麟网文化股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1