CN111596903A - 一种渲染引擎中的数据处理方法和装置 - Google Patents
一种渲染引擎中的数据处理方法和装置 Download PDFInfo
- Publication number
- CN111596903A CN111596903A CN202010228256.3A CN202010228256A CN111596903A CN 111596903 A CN111596903 A CN 111596903A CN 202010228256 A CN202010228256 A CN 202010228256A CN 111596903 A CN111596903 A CN 111596903A
- Authority
- CN
- China
- Prior art keywords
- data
- rendering
- thread
- cache
- vertex
- 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.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 265
- 238000003672 processing method Methods 0.000 title abstract description 6
- 238000000034 method Methods 0.000 claims abstract description 52
- 238000004806 packaging method and process Methods 0.000 claims abstract description 3
- 238000012545 processing Methods 0.000 claims description 66
- 230000015654 memory Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 abstract description 32
- 238000010586 diagram Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 12
- 238000012856 packing Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005291 magnetic effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/316—Aspect-oriented programming techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
Abstract
本申请实施例的目的是提供一种渲染引擎中的数据处理方法和装置。所述方法包括:根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。本申请实施例具有以下优点:本申请实施例将第三方UI库接入到渲染引擎中,使得渲染引擎的UI代码能够方便地到移植到其他类型渲染引擎中,而无需从新编写代码,提高了效率;并且,本申请实施例通过建立无锁的渲染队列进行缓存,提高了逻辑线程和渲染线程之间的数据同步效率;并且,本申请实施例通过提供高效的渲染逻辑、字体缓存逻辑和贴图管理逻辑,从而能够更高效地运用第三方UI。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种渲染引擎中的数据处理方法和装置。
背景技术
基于现有技术的方案中,特定渲染引擎的UI代码和资源一般不能移植到他类型的渲染引擎中使用。例如,一个自研引擎的UI代码很难移植到UE4(Unreal Engine 4)中,或者,UE4引擎的UI代码很难移植到其他类型的引擎(比如U3D)中。
并且,以UE4为例,UE4中的UI方案为UE4自带的SlateUI工具,并没有第三方UI接入的官方支持,SlateUI的使用要先熟悉UE4的编程规范和架构,对新手学习有较大的门槛。并且,SlateUI目前与UE4本身的资源管理,字体缓存,蓝图等逻辑高度耦合,对于很多旧项目,如果想更换UE4引擎,前端UI部分需要重新书写代码,因此需要调整前端逻辑架构,效率缓慢;同样,如果UE4引擎想更换到其他效果更好的引擎,也要重构UI部分的逻辑。
并且,基于现有技术的方案中,逻辑线程和渲染线程之间的数据同步是通过加锁的方式实现,效率较低,并导致逻辑和渲染发生卡顿。
发明内容
本申请实施例的目的是提供一种渲染引擎中的数据处理方法和装置。
本申请实施例提供的一种渲染引擎中的数据处理方法,包括:
根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
根据本申请的实施例,所述渲染引擎为UE4引擎,所述将一项或多项数据的逻辑实现封装成类包括:将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
根据本申请的实施例,所述方法进一步包括:在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
根据本申请的实施例,缓存的渲染数据包括顶点数据和纹理数据指针。
根据本申请的实施例,所述方法进一步包括:在渲染线程中创建两个无锁的渲染队列第一队列和第二队列,其中,所述第一队列作为逻辑线程的缓存,用于从第三方UI库的逻辑线程同步新的渲染数据,所述第二队列作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至所述逻辑线程。
根据本申请的实施例,所述方法进一步包括:响应于逻辑线程的每一帧发起的渲染事件,将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存;响应于渲染线程的每一帧访问逻辑线程的缓存的事件,令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据的装置;如果渲染线程获取到新的渲染数据,则将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染。
根据本申请的实施例,所述逻辑线程将需要渲染的渲染数据添加至逻辑线程的缓存进一步包括:逻辑线程尝试从第二队列尝试获取顶点缓存数据;如果获取到顶点缓存数据,将所获取到的顶点缓存数据重置为零,并且不释放内存;从第三方库拷贝新的渲染数据至顶点缓存数据;将顶点缓存数据添加至第一队列进行缓存,从而使用新的渲染数据覆盖第一队列中已有的数据。
本申请实施例提供的一种渲染引擎中的数据处理装置,包括:用于根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口的装置。
根据本申请的实施例,所述渲染引擎为UE4引擎,所述将一项或多项数据的逻辑实现封装成类包括:将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
根据本申请的实施例,所述数据处理装置进一步包括:用于在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据的装置,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
根据本申请的实施例,所述数据处理装置进一步包括:用于在渲染线程中创建两个无锁的渲染队列第一队列和第二队列的装置,其中,所述第一队列作为逻辑线程的缓存,用于从第三方UI库的逻辑线程同步新的渲染数据,所述第二队列作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至所述逻辑线程。
根据本申请的实施例,所述数据处理装置进一步包括:用于响应于逻辑线程的每一帧发起的渲染事件,将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存的装置;用于响应于渲染线程的每一帧访问逻辑线程的缓存的事件,令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据的装置;用于如果渲染线程获取到新的渲染数据,则将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染的装置。
根据本申请的实施例,所述将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存进一步包括:逻辑线程尝试从第二队列尝试获取顶点缓存数据;如果获取到顶点缓存数据,将所获取到的顶点缓存数据重置为零,并且不释放内存;从第三方库拷贝新的渲染数据至顶点缓存数据;将顶点缓存数据添加至第一队列进行缓存,从而使用新的渲染数据覆盖第一队列中已有的数据。
本申请实施例提供的一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现本申请实施例的方法。
本申请实施例提供的一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现本申请实施例的方法。
本申请实施例具有以下优点:本申请实施例将第三方UI库接入到渲染引擎中,使得渲染引擎的UI代码能够方便地到移植到其他类型渲染引擎中,而无需从新编写代码,提高了效率;并且,本申请实施例通过建立无锁的渲染队列进行缓存,提高了逻辑线程和渲染线程之间的数据同步效率;并且,本申请实施例通过提供高效的渲染逻辑、字体缓存逻辑和贴图管理逻辑,从而能够更高效地运用第三方UI。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出了根据本申请实施例的一种渲染引擎中的数据处理方法的流程图;
图2示出了根据本申请实施例的一个逻辑线程和渲染线程之间同步数据的方法流程图;
图3示出了根据本申请实施例的一个示例性的UE4中的渲染逻辑的流程图;
图4示出了根据本申请实施例的缓存字体的方法流程图;
图5示出了根据本申请实施例的缓存贴图的方法流程图;
图6示出了根据本申请实施例的一种渲染引擎中的数据处理装置的结构示意图;
图7示出了根据本申请实施例的用于同步数据的数据处理装置的结构示意图;
图8示出了根据本申请实施例的用于缓存字体的数据处理装置的的结构示意图;
图9示出了根据本申请实施例的用于缓存贴图的数据处理装置的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1示出了根据本申请实施例的一种渲染引擎中的数据处理方法的流程图。
在步骤S1中,数据处理装置根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
根据一个实施例,渲染引擎为UE4引擎,数据处理装置将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方IU库提供接入接口。例如,在UE4中将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为MyGUI提供接入接口。
其中,顶点数据包括图像中各个对象对应的顶点坐标信息和索引信息。
其中,纹理数据包括各种与图像的纹理(texture)相关的信息,如纹理坐标信息等。
其中,所述配置资源数据包括用于指示UI的布局的信息和所使用的贴图的信息。通过UI的布局进而生成相应的顶点数据,并通过加载贴图来生成相应的纹理数据。
本领域技术人员应熟悉,对于UE4引擎以外的其他类型的渲染引擎,可基于渲染引擎的类型采用相似的方式来为第三方UI库提供接入接口。
图2示出了根据本申请实施例的一个逻辑线程和渲染线程之间同步数据的方法流程图。本实施例中的渲染引擎为UE4引擎。
参照图2,在步骤S201中,数据处理装置在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
其中,所述逻辑线程指运行逻辑的线程。例如,游戏的逻辑线程可包括游戏的玩法逻辑,UI组织逻辑等。
其中,所述渲染线程指用于将需要渲染的数据提交到图像处理单元(GraphicsProcessing Unit,GPU)进行渲染的线程。并且,渲染线程负责与GPU相关的渲染设置和接口调用等。
其中,渲染数据可包括顶点数据,纹理数据,贴图数据,材质数据。其中,材质(Material)数据是着色器(shader),贴图以及shader的参数等数据的集合。
优选地,缓存的渲染数据包括顶点数据和纹理数据指针。其中,纹理数据指针用于指向纹理数据。
其中,动态长度的顶点缓存数据表示数据结构的内存是动态增长的,例如,数据结构的前一帧需要渲染n个顶点,当前帧需要渲染n+1个顶点,其所需要的内存的大小不同,而动态长度的顶点缓存数据可满足该需求。
在步骤S202中,数据处理装置在渲染线程中创建两个无锁的渲染队列第一队列和第二队列,其中,所述第一队列作为逻辑线程的缓存,用于从第三方库的逻辑线程同步新的渲染数据,所述第二队列作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至所述逻辑线程。
在步骤S203中,响应于逻辑线程的每一帧发起的渲染事件,数据处理装置将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存。
具体地,逻辑线程尝试从第二队列尝试获取顶点缓存数据;如果获取到顶点缓存数据,将所获取到的顶点缓存数据重置为零,并且不释放内存;从第三方UI库拷贝新的渲染数据至顶点缓存数据;将顶点缓存数据添加至第一队列进行缓存,从而使用新的渲染数据覆盖第一队列中已有的数据。
在步骤S204中,响应于渲染线程的每一帧访问逻辑线程的缓存的事件,数据处理装置令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据。
在步骤S205中,如果渲染线程获取到新的渲染数据,则数据处理装置将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则数据处理装置将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染。
图3示出了根据本申请实施例的一个示例性的UE4中的渲染逻辑的流程图。
参照图3所示的渲染逻辑的流程图,在UE4中将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为MyGUI提供接入接口。
在UE4的渲染线程中创建两个无锁队列,队列A和队列B,其中,队列A作为逻辑线程的缓存,用于从MyGUI的逻辑线程同步新的渲染数据,队列B作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至逻辑线程。
该渲染逻辑的流程包括:
步骤1,逻辑线程中的每一帧发起渲染事件,该渲染事件包含指示需要渲染哪些顶点数据和需要的纹理数据的信息。
步骤2,逻辑线程从渲染线程的缓存获取数据;
逻辑线程在处理这个渲染事件时,将需要渲染的顶点数据和纹理数据的指针放入逻辑线程的缓存中。具体地,逻辑线程从队列B中尝试获取顶点缓存数据,如果获取到,重置其长度为零,但不释放内存,并从MyGUI中拷贝最新的渲染数据到其中。然后,逻辑线程将顶点缓存数据添加至队列A中进行缓存。
步骤3,渲染线程从逻辑线程的缓存获取数据;
具体地,渲染线程的每一帧发起访问逻辑线程的缓存的事件,渲染线程访问逻辑线程的缓存,以尝试从队列A尝试获取顶点缓存数据。
步骤4,如果渲染线程获取到新的渲染数据,将旧的数据放回到渲染线程的缓存中。
具体地,如果渲染线程获取到新的渲染数据,则将所获取到新的渲染数据拷贝到自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则将缓存中已有的渲染数据提交至GPU进行渲染。最后将顶点缓存数据添加至队列B中进行缓存。
步骤5,回到步骤2的流程,逻辑线程将新的需要渲染的数据放入逻辑线程的缓存时,访问渲染线程的缓存来获取其中的旧的数据,并将该旧的数据修改为新的需要渲染的数据。
根据本申请实施例的方法,本申请实施例将第三方UI库接入到渲染引擎中,使得渲染引擎的UI代码能够方便地到移植到其他类型渲染引擎中,而无需从新编写代码,提高了效率;并且,本申请实施例的方法通过建立无锁的渲染队列进行缓存,提高了逻辑线程和渲染线程之间的数据同步效率。
图4示出了根据本申请实施例的缓存字体的方法流程图。所述方法包括步骤S401。
参照图1,在步骤S401中,数据处理装置在渲染引擎中使用多个缓存块对需要渲染的字体进行缓存。
其中,通过对用于缓存字体的贴图进行切割得到所述多个缓存块。所述缓存块用于缓存需要渲染的多种字体相对应的贴图数据。
优选地,数据处理装置通过对用于缓存字体的贴图进行切割得到64个相同大小的正方形,以使用64个缓存块对需要渲染的字体进行缓存。
优选地,每个缓存块对应于特定字体的某个字号。例如,一个缓存块可对应于“二号”大小的“幼圆”字体。
根据一个实施例,所述方法进一步包括步骤S402。
在步骤S402中,数据处理装置创建或更新用于查找特定字体和大小的字体贴图数据的映射表。
优选地,该映射表记录各种大小的具体文字的缓存贴图的UV地址。
根据一个实施例,所述方法进一步包括步骤S403和步骤S404。
在步骤S403中,数据处理装置记录缓存块中各个文字的使用频率信息。
其中,所述使用频率信息包括各种可用于指示文字的使用频率的高低的信息。例如,某个文字在过去半年内的使用次数,又例如,某个文字距离上次被使用时的时间长短等等。
在步骤S404中,如果一缓存块已满,数据处理装置将其中使用频率最低的一个或多个文字对应的缓存空间回收。
根据一个实施例,所述方法进一步包括步骤S405,步骤S406和步骤S407。
在步骤S405中,数据处理装置使用不同的数据段在字体文件中加载相应的字体贴图信息和字体描边信息。
在步骤S406中,数据处理装置对该字体贴图信息和字体描边信息进行打包,得到相应的字体打包数据。
在步骤S407中,数据处理装置在渲染文字时通过字体打包数据进行解包操作,得到相应的字体贴图信息和字体描边信息,使得渲染后的文字具有描边效果。
例如,数据处理装置从字体文件中加载某种字体对应的字体贴图信息和字体描边信息。并且,在用于缓存字体数据的数据段中,所加载的字体描边信息占用0到0.5数据段,字体贴图信息占用0.5到1数据段。并且,数据处理装置对该字体贴图信息和字体描边信息进行打包,得到相应的字体打包数据。在渲染文字时,数据处理装置通过字体打包数据进行解包操作,得到相应的字体贴图信息和字体描边信息,使得渲染后的文字具有描边效果。
根据一个实施例,所述方法进一步包括步骤S408。
在步骤S408中,数据处理装置基于预定的时间间隔在渲染线程中更新缓存字体的贴图。
优选地,所述时间间隔为100毫秒,数据处理装置每100ms在渲染线程判断贴图是否需要更新到GPU,如需要更新,则数据处理装置从CPU端拷贝数据到GPU,从而保证新缓存的文字最多100ms就会正常显示出来。并且,在拷贝数据的过程中不锁定CPU端数据,以避免造成新能浪费。
图5示出了根据本申请实施例的缓存贴图的方法流程图。
根据本实施例的方法包括步骤S501和步骤S502。
参照图5,在步骤S501中,在渲染的过程中,数据处理装置记录使用过的各个贴图的使用频率信息。
例如,贴图在过去三个月内的使用次数,又例如,某贴图距离上次被使用时的时间长短等等。
在步骤S502中,数据处理装置根据各个贴图的使用频率信息,将使用频率低于预定阈值的贴图对应的纹理销毁。
例如,将过去半年使用次数低于5次的贴图对应的纹理销毁。又例如,将超过一个月未被使用的贴图对应的纹理销毁等等。
优选地,根据本实施例的方法进一步包括步骤S503。
在步骤S503中,数据处理装置创建或更新贴图的加载路径和纹理的映射表。
优选地,根据本实施例的方法进一步包括步骤S504。
在步骤S504中,如果已销毁的贴图重新被访问,则数据处理装置根据该贴图的加载路径进行异步加载。
优选地,在异步加载的过程中数据处理装置不对该贴图对应的数据进行渲染,或者,使用默认的贴图代替该贴图。
根据一个示例,数据处理装置包含于UE4引擎。数据处理装置建立贴图加载路径和纹理数据指针的映射表。并且,在每次渲染贴图时,数据处理装置为所使用的贴图设置时间标志并进行记录。如果某个贴图的时间标志远小于当前时间时,则销毁该贴图对应的纹理,以节省内存空间。
如果已销毁的贴图重新被访问,则数据处理装置根据该贴图的加载路径进行异步加载,避免阻塞当前的逻辑线程和渲染线程。并且,数据处理装置不对该贴图对应的UI数据进行渲染,或者,使用默认的贴图代替该贴图。
本申请实施例方法,通过提供高效的渲染逻辑、字体缓存逻辑和贴图管理逻辑,从而能够更高效地运用第三方UI。
图6示出了根据本申请实施例的一种渲染引擎中的数据处理装置的结构示意图。所述数据处理装置包括数据接入装置1。
数据接入装置1根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
根据一个实施例,渲染引擎为UE4引擎,数据接入装置1将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方IU库提供接入接口。例如,在UE4中将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为MyGUI提供接入接口。
其中,顶点数据包括图像中各个对象对应的顶点坐标信息和索引信息。
其中,纹理数据包括各种与图像的纹理(texture)相关的信息,如纹理坐标信息等。
其中,所述配置资源数据包括用于指示UI的布局的信息和所使用的贴图的信息。通过UI的布局进而生成相应的顶点数据,并通过加载贴图来生成相应的纹理数据。
本领域技术人员应熟悉,对于UE4引擎以外的其他类型的渲染引擎,可基于渲染引擎的类型采用相似的方式来为第三方UI库提供接入接口。
图7示出了根据本申请实施例的用于同步数据的数据处理装置的结构示意图。本实施例中的渲染引擎为UE4引擎。
根据本实施例的数据处理装置包括:用于在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据的装置(以下简称“顶点缓存装置201”),用于在渲染线程中创建两个无锁的渲染队列第一队列和第二队列的装置(以下简称“队列创建装置202”),用于响应于逻辑线程的每一帧发起的渲染事件,将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存的装置(以下简称“逻辑渲染装置203”),用于响应于渲染线程的每一帧访问逻辑线程的缓存的事件,令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据的装置(以下简称“渲染获取装置204”),用于如果渲染线程获取到新的渲染数据,则将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染的装置(以下简称“渲染处理装置205”)。
顶点缓存装置201在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
其中,所述逻辑线程指运行逻辑的线程。例如,游戏的逻辑线程可包括游戏的玩法逻辑,UI组织逻辑等。
其中,所述渲染线程指用于将需要渲染的数据提交到图像处理单元(GraphicsProcessing Unit,GPU)进行渲染的线程。并且,渲染线程负责与GPU相关的渲染设置和接口调用等。
其中,渲染数据可包括顶点数据,纹理数据,贴图数据,材质数据。其中,材质(Material)数据是着色器(shader),贴图以及shader的参数等数据的集合。
优选地,缓存的渲染数据包括顶点数据和纹理数据指针。其中,纹理数据指针用于指向纹理数据。
其中,动态长度的顶点缓存数据表示数据结构的内存是动态增长的,例如,数据结构的前一帧需要渲染n个顶点,当前帧需要渲染n+1个顶点,其所需要的内存的大小不同,而动态长度的顶点缓存数据可满足该需求。
队列创建装置202在渲染线程中创建两个无锁的渲染队列第一队列和第二队列,其中,所述第一队列作为逻辑线程的缓存,用于从第三方库的逻辑线程同步新的渲染数据,所述第二队列作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至所述逻辑线程。
响应于逻辑线程的每一帧发起的渲染事件,逻辑渲染装置203将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存。
具体地,逻辑线程尝试从第二队列尝试获取顶点缓存数据;如果获取到顶点缓存数据,将所获取到的顶点缓存数据重置为零,并且不释放内存;从第三方UI库拷贝新的渲染数据至顶点缓存数据;将顶点缓存数据添加至第一队列进行缓存,从而使用新的渲染数据覆盖第一队列中已有的数据。
响应于渲染线程的每一帧访问逻辑线程的缓存的事件,渲染获取装置204令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据。
如果渲染线程获取到新的渲染数据,则渲染处理装置205将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则渲染处理装置205将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染。
根据本申请实施例的方案,本申请实施例将第三方UI库接入到渲染引擎中,使得渲染引擎的UI代码能够方便地到移植到其他类型渲染引擎中,而无需从新编写代码,提高了效率;并且,本申请实施例的方法通过建立无锁的渲染队列进行缓存,提高了逻辑线程和渲染线程之间的数据同步效率。
图8示出了根据本申请实施例的用于缓存字体的数据处理装置的的结构示意图。所述数据处理装置包括用于在渲染引擎中使用多个缓存块对需要渲染的字体进行缓存的装置(以下简称“字体缓存装置401”)。
字体缓存装置401在渲染引擎中使用多个缓存块对需要渲染的字体进行缓存。
其中,通过对用于缓存字体的贴图进行切割得到所述多个缓存块。所述缓存块用于缓存需要渲染的多种字体相对应的贴图数据。
优选地,字体缓存装置801通过对用于缓存字体的贴图进行切割得到64个相同大小的正方形,以使用64个缓存块对需要渲染的字体进行缓存。
优选地,每个缓存块对应于特定字体的某个字号。例如,一个缓存块可对应于“二号”大小的“幼圆”字体。
根据一个实施例,所述数据处理装置进一步包括用于创建或更新用于查找特定字体和大小的字体贴图数据的映射表的装置(以下简称“子字体映射装置”)。
子字体映射装置创建或更新用于查找特定字体和大小的字体贴图数据的映射表。
优选地,该映射表中记录各种大小的具体文字的缓存贴图的UV地址。
根据一个实施例,所述数据处理装置进一步包括用于记录缓存块中各个文字的使用频率信息的装置(以下简称“字体记录装置”),和用于如果一缓存块已满,将其中使用频率最低的一个或多个文字对应的缓存空间回收的装置(以下简称“空间回收装置”)。
字体记录装置记录缓存块中各个文字的使用频率信息。
其中,所述使用频率信息包括各种可用于指示文字的使用频率的高低的信息。例如,某个文字在过去半年内的使用次数,又例如,某个文字距离上次被使用时的时间长短等等。
如果一缓存块已满,空间回收装置将其中使用频率最低的一个或多个文字对应的缓存空间回收。
根据一个实施例,所述数据处理装置进一步包括用于使用不同的数据段在字体文件中加载相应的字体贴图信息和字体描边信息的装置(以下简称“描边加载装置”),用于对该字体贴图信息和字体描边信息进行打包,得到相应的字体打包数据的装置(以下简称“描边打包装置”),和用于在渲染文字时通过字体打包数据进行解包操作,得到相应的字体贴图信息和字体描边信息,使得渲染后的文字具有描边效果的装置(以下简称“描边解包装置”)。
描边加载装置使用不同的数据段在字体文件中加载相应的字体贴图信息和字体描边信息。
描边打包装置对该字体贴图信息和字体描边信息进行打包,得到相应的字体打包数据。
描边解包装置在渲染文字时通过字体打包数据进行解包操作,得到相应的字体贴图信息和字体描边信息,使得渲染后的文字具有描边效果。
例如,描边加载装置从字体文件中加载某种字体对应的字体贴图信息和字体描边信息。并且,在用于缓存字体数据的数据段中,所加载的字体描边信息占用0到0.5数据段,字体贴图信息占用0.5到1数据段。并且,描边解包装置对该字体贴图信息和字体描边信息进行打包,得到相应的字体打包数据。在渲染文字时,描边解包装置通过字体打包数据进行解包操作,得到相应的字体贴图信息和字体描边信息,使得渲染后的文字具有描边效果。
根据一个实施例,所述数据处理装置进一步包括用于基于预定的时间间隔在渲染线程中更新缓存字体的贴图的装置(以下简称“字体更新装置”)。
字体更新装置基于预定的时间间隔在渲染线程中更新缓存字体的贴图。
优选地,所述时间间隔为100毫秒,字体更新装置每100ms在渲染线程判断贴图是否需要更新到GPU,如需要更新,则字体更新装置从CPU端拷贝数据到GPU,从而保证新缓存的文字最多100ms就会正常显示出来。并且,在拷贝数据的过程中不锁定CPU端数据,以避免造成新能浪费。
图9示出了根据本申请实施例的用于缓存贴图的数据处理装置的结构示意图。根据本实施例的数据处理装置包括用于在渲染的过程中记录使用过的各个贴图的使用频率信息的装置(以下简称“贴图记录装置501”),用于根据各个贴图的使用频率信息,将使用频率低于预定阈值的贴图对应的纹理销毁的装置(以下简称“纹理销毁装置502”)。
参照图6,在渲染的过程中,贴图记录装置501记录使用过的各个贴图的使用频率信息。
例如,贴图在过去三个月内的使用次数,又例如,某贴图距离上次被使用时的时间长短等等。
纹理销毁装置502根据各个贴图的使用频率信息,将使用频率低于预定阈值的贴图对应的纹理销毁。
例如,将过去半年使用次数低于5次的贴图对应的纹理销毁。又例如,将超过一个月未被使用的贴图对应的纹理销毁等等。
优选地,根据本实施例的数据处理装置进一步包括用于创建或更新贴图的加载路径和纹理的映射表的装置(以下简称“纹理映射装置”)。
纹理映射装置创建或更新贴图的加载路径和纹理的映射表。
优选地,根据本实施例的数据处理装置进一步包括用于如果已销毁的贴图重新被访问,则根据该贴图的加载路径进行异步加载的装置(以下简称“异步加载装置”)。
如果已销毁的贴图重新被访问,则异步加载装置根据该贴图的加载路径进行异步加载。
优选地,在异步加载的过程中异步加载装置不对该贴图对应的数据进行渲染,或者,使用默认的贴图代替该贴图。
根据一个示例,数据处理装置包含于UE4引擎。纹理映射装置建立贴图加载路径和纹理数据指针的映射表。并且,在每次渲染贴图时,贴图记录装置301为所使用的贴图设置时间标志并进行记录。如果某个贴图的时间标志远小于当前时间时,则纹理销毁装置302销毁该贴图对应的纹理,以节省内存空间。
如果已销毁的贴图重新被访问,则异步加载装置根据该贴图的加载路径进行异步加载,避免阻塞当前的逻辑线程和渲染线程。并且,异步加载装置不对该贴图对应的UI数据进行渲染,或者,使用默认的贴图代替该贴图。
本申请实施例方案,通过提供高效的渲染逻辑、字体缓存逻辑和贴图管理逻辑,从而能够更高效地运用第三方UI。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种渲染引擎中的数据处理方法,包括:
根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
2.根据权利要求1所述的方法,所述渲染引擎为UE4引擎,所述将一项或多项数据的逻辑实现封装成类包括:
将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
3.根据权利要求2所述的方法,进一步包括:
在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
4.根据权利要求3所述的方法,其中,缓存的渲染数据包括顶点数据和纹理数据指针。
5.根据权利要求3所述的方法,进一步包括:
在渲染线程中创建两个无锁的渲染队列第一队列和第二队列,其中,所述第一队列作为逻辑线程的缓存,用于从第三方UI库的逻辑线程同步新的渲染数据,所述第二队列作为渲染线程的缓存,用于将已渲染的顶点缓存数据同步至所述逻辑线程。
6.根据权利要求3至5中任一项所述的方法,进一步包括:
响应于逻辑线程的每一帧发起的渲染事件,将需要渲染的渲染数据从逻辑线程添加至逻辑线程的缓存;
响应于渲染线程的每一帧访问逻辑线程的缓存的事件,令渲染线程访问逻辑线程的缓存,以尝试获取新的渲染数据;
如果渲染线程获取到新的渲染数据,则将所获取到新的渲染数据拷贝到渲染线程自身的缓存中,并将新的渲染数据提交至GPU进行渲染;如果渲染线程未获取到新的渲染数据,则将渲染线程的缓存中已有的渲染数据提交至GPU进行渲染。
7.根据权利要求6所述的方法,所述逻辑线程将需要渲染的渲染数据添加至逻辑线程的缓存进一步包括:
逻辑线程尝试从第二队列尝试获取顶点缓存数据;
如果获取到顶点缓存数据,将所获取到的顶点缓存数据重置为零,并且不释放内存;
从第三方库拷贝新的渲染数据至顶点缓存数据;
将顶点缓存数据添加至第一队列进行缓存,从而使用新的渲染数据覆盖第一队列中已有的数据。
8.一种渲染引擎中的数据处理装置,包括:
用于根据渲染引擎的类型,将一项或多项数据的逻辑实现封装成类,从而为第三方UI库提供接入接口的装置。
9.根据权利要求8所述的数据处理装置,所述渲染引擎为UE4引擎,所述将一项或多项数据的逻辑实现封装成类包括:
将顶点数据、纹理数据和配置资源数据的逻辑实现封装成类,从而为第三方UI库提供接入接口。
10.根据权利要求9所述的数据处理装置,进一步包括:
用于在渲染线程中采用数据缓存冗余机制来创建两份动态长度的顶点缓存数据的装置,其中,一份顶点缓存数据用来与所述逻辑线程交换数据,另一份顶点缓存数据用来缓存最近一次的渲染数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010228256.3A CN111596903B (zh) | 2020-03-27 | 2020-03-27 | 一种渲染引擎中的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010228256.3A CN111596903B (zh) | 2020-03-27 | 2020-03-27 | 一种渲染引擎中的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111596903A true CN111596903A (zh) | 2020-08-28 |
CN111596903B CN111596903B (zh) | 2024-01-05 |
Family
ID=72181672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010228256.3A Active CN111596903B (zh) | 2020-03-27 | 2020-03-27 | 一种渲染引擎中的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111596903B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113485776A (zh) * | 2021-08-02 | 2021-10-08 | 竞技世界(北京)网络技术有限公司 | 一种在多线程渲染中实体的处理方法及装置 |
CN113608727A (zh) * | 2021-08-04 | 2021-11-05 | 网易(杭州)网络有限公司 | 可视化编程的代码处理方法、装置、系统 |
CN115035228A (zh) * | 2022-06-08 | 2022-09-09 | 北京领为军融科技有限公司 | 通过异步io实时读取卫片文件生成纹理的渲染方法 |
WO2023044876A1 (zh) * | 2021-09-26 | 2023-03-30 | 厦门雅基软件有限公司 | 一种多线程渲染方法、装置、电子设备及存储介质 |
CN116662222A (zh) * | 2022-11-22 | 2023-08-29 | 荣耀终端有限公司 | 缓存管理方法及相关设备 |
CN117785767A (zh) * | 2024-02-27 | 2024-03-29 | 苏州仰思坪半导体有限公司 | 消息同步方法、系统以及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186919A (zh) * | 2011-12-28 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 一种文字渲染方法及装置 |
CN104317575A (zh) * | 2014-09-30 | 2015-01-28 | 珠海格力电器股份有限公司 | 空调器组件的代码文件的封装方法和装置 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN109669739A (zh) * | 2017-10-16 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 一种界面渲染方法、装置、终端设备和存储介质 |
US20200081692A1 (en) * | 2018-09-07 | 2020-03-12 | Boyd Cannon Multerer | User interface generation system |
-
2020
- 2020-03-27 CN CN202010228256.3A patent/CN111596903B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186919A (zh) * | 2011-12-28 | 2013-07-03 | 腾讯科技(深圳)有限公司 | 一种文字渲染方法及装置 |
CN104317575A (zh) * | 2014-09-30 | 2015-01-28 | 珠海格力电器股份有限公司 | 空调器组件的代码文件的封装方法和装置 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN109669739A (zh) * | 2017-10-16 | 2019-04-23 | 阿里巴巴集团控股有限公司 | 一种界面渲染方法、装置、终端设备和存储介质 |
US20200081692A1 (en) * | 2018-09-07 | 2020-03-12 | Boyd Cannon Multerer | User interface generation system |
Non-Patent Citations (1)
Title |
---|
赵强: "网络虚拟现实原型系统Web-VRGIS的架构设计与实现" * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113487714A (zh) * | 2021-06-23 | 2021-10-08 | 北京奇岱松科技有限公司 | 空间对象的渲染方法、装置、计算设备及存储介质 |
CN113485776A (zh) * | 2021-08-02 | 2021-10-08 | 竞技世界(北京)网络技术有限公司 | 一种在多线程渲染中实体的处理方法及装置 |
CN113485776B (zh) * | 2021-08-02 | 2024-04-05 | 竞技世界(北京)网络技术有限公司 | 一种在多线程渲染中实体的处理方法及装置 |
CN113608727A (zh) * | 2021-08-04 | 2021-11-05 | 网易(杭州)网络有限公司 | 可视化编程的代码处理方法、装置、系统 |
CN113608727B (zh) * | 2021-08-04 | 2023-07-25 | 网易(杭州)网络有限公司 | 可视化编程的代码处理方法、装置、系统 |
WO2023044876A1 (zh) * | 2021-09-26 | 2023-03-30 | 厦门雅基软件有限公司 | 一种多线程渲染方法、装置、电子设备及存储介质 |
CN115035228A (zh) * | 2022-06-08 | 2022-09-09 | 北京领为军融科技有限公司 | 通过异步io实时读取卫片文件生成纹理的渲染方法 |
CN115035228B (zh) * | 2022-06-08 | 2023-01-17 | 北京领为军融科技有限公司 | 通过异步io实时读取卫片文件生成纹理的渲染方法 |
CN116662222A (zh) * | 2022-11-22 | 2023-08-29 | 荣耀终端有限公司 | 缓存管理方法及相关设备 |
CN117785767A (zh) * | 2024-02-27 | 2024-03-29 | 苏州仰思坪半导体有限公司 | 消息同步方法、系统以及相关装置 |
CN117785767B (zh) * | 2024-02-27 | 2024-04-23 | 苏州仰思坪半导体有限公司 | 消息同步方法、系统以及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111596903B (zh) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111596903B (zh) | 一种渲染引擎中的数据处理方法和装置 | |
KR101732288B1 (ko) | 스프라이트 그래픽 렌더링 시스템 | |
JP4896376B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US10817973B2 (en) | Task assembly for SIMD processing | |
JP5335743B2 (ja) | タスクのスケジューリングを支援する装置 | |
KR101735222B1 (ko) | 해제 일관성 메모리 순서화 모델을 갖는 멀티-코어 컴퓨트 캐시 코히어런시 | |
US10255650B2 (en) | Graphics processing using dynamic resources | |
JP5805675B2 (ja) | ガーベッジコレクションに対するcpuサポート | |
US8301672B2 (en) | GPU assisted garbage collection | |
US9189360B2 (en) | Processor that records tracing data in non contiguous system memory slices | |
US6662274B2 (en) | Method for using cache prefetch feature to improve garbage collection algorithm | |
US8502819B1 (en) | System and method for performing ray tracing node traversal in image rendering | |
CN102971727B (zh) | 在软件分布式共享存储器系统中记录脏信息 | |
US20190361718A1 (en) | 3D API Redirection for Virtual Desktop Infrastructure | |
US9235512B2 (en) | System, method, and computer program product for graphics processing unit (GPU) demand paging | |
US20060161913A1 (en) | Method and apparatus for marking code for data versioning | |
EP2755129B1 (en) | Memory allocation method, program, and system | |
US20180060241A1 (en) | Instruction to query cache residency | |
CN105164636A (zh) | 一种虚拟化环境中的数据通信的方法、装置及处理器 | |
US8577936B2 (en) | Fixup cache tool for object memory compaction in an information handling system | |
US8645651B2 (en) | Low-contention update buffer queuing for small systems | |
CN111581910B (zh) | 一种渲染引擎中的数据缓存方法和装置 | |
CN111699506B (zh) | 指令处理 | |
US20060161601A1 (en) | Heap manager and application programming interface support for managing versions of objects | |
CA2280284C (en) | Access frontier for demand loading in object-oriented databases |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |