CN117369935A - 用于libGDX引擎的多视图渲染方法、装置及设备 - Google Patents
用于libGDX引擎的多视图渲染方法、装置及设备 Download PDFInfo
- Publication number
- CN117369935A CN117369935A CN202311434353.8A CN202311434353A CN117369935A CN 117369935 A CN117369935 A CN 117369935A CN 202311434353 A CN202311434353 A CN 202311434353A CN 117369935 A CN117369935 A CN 117369935A
- Authority
- CN
- China
- Prior art keywords
- view
- rendering
- native
- interface
- management component
- 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.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 218
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000003993 interaction Effects 0.000 claims abstract description 134
- 230000004044 response Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
Classifications
-
- 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/543—Local
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明的实施方式提供了一种用于libGDX引擎的多视图渲染方法、装置及设备。通过在接收到用于初始化libGDX引擎的初始化指令时,创建用于管理多个视图交互接口的接口管理组件,以将已创建的原生视图的视图交互接口添加至接口管理组件中,从而可以在接收到用于渲染不同的原生视图的多个视图渲染请求时,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面。本发明的方法使得libGDX引擎可以进行多个视图的同时渲染,而无需将需要使用libGDX引擎渲染的内容集中到一个视图上,降低了视图渲染难度,提高了视图渲染效率。
Description
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及一种用于libGDX引擎的多视图渲染方法、装置及设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
跨平台游戏开发库(Libraries for Game Development Across Platforms,libGDX)是一个开源的跨平台渲染引擎,可以用来在安卓(Android)平台中制作应用界面。
相关技术中,libGDX引擎在Android平台上使用单视图模式实现,不支持同屏多个视图同时渲染,也就是说,在Android平台上使用libGDX引擎渲染应用界面时,必须把所有需要使用libGDX引擎渲染的内容集中到一个视图上,大大增加了视图渲染难度,给应用界面的开发带来了诸多限制。
发明内容
在本上下文中,本发明的实施方式期望提供一种用于libGDX引擎的多视图渲染方法、装置及设备,以降低在Android平台上使用libGDX引擎渲染应用界面时的视图渲染难度,提高视图渲染效率。
在本发明实施方式的第一方面中,提供了一种用于libGDX引擎的多视图渲染方法,该方法包括:
响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,接口管理组件用于管理多个视图交互接口;
将已创建的原生视图的视图交互接口添加至接口管理组件中;
响应于接收到多个视图渲染请求,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
在本发明的一个实施例中,接口管理组件中存储有关联指示信息,关联指示信息用于指示每个渲染线程对应的视图交互接口;
通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,包括:
对于多个视图渲染请求中的任一视图渲染请求,基于接口管理组件中所存储的关联指示信息以及视图渲染请求所对应的渲染线程,确定视图渲染请求所对应的目标视图交互接口;
将视图渲染请求发送给目标视图交互接口。
在本发明的一个实施例中,每个目标视图交互接口中均预先配置有渲染逻辑;
通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面,包括:
对于任一目标视图交互接口,按照目标视图交互接口中所配置的渲染逻辑,渲染第一视图渲染请求所对应的原生界面,第一视图渲染请求为目标视图交互接口所对应的视图渲染请求。
在本发明的一个实施例中,通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面,包括:
通过多个目标视图交互接口,并行渲染多个视图渲染请求所对应的多个原生界面。
在本发明的一个实施例中,响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,包括:
响应于接收到初始化指令,在全局变量中注册接口管理组件,以在libGDX引擎中创建接口管理组件。
在本发明的一个实施例中,将已创建的原生视图的视图交互接口添加至接口管理组件中,包括:
对于任一原生视图,响应于对原生视图的创建指令,将原生视图的视频交互接口添加至接口管理组件中。
在本发明的一个实施例中,每个原生视图对应于一个开放图形库OpenGL上下文;
该方法还包括:
对于任一原生视图,为原生视图的OpenGL上下文配置共享OpenGL上下文;
使用共享OpenGL上下文已加载的纹理资源渲染原生界面。
在本发明实施方式的第二方面中,提供了一种用于libGDX引擎的多视图渲染装置,该装置包括:
创建模块,用于响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,接口管理组件用于管理多个视图交互接口;
添加模块,用于将已创建的原生视图的视图交互接口添加至接口管理组件中;
渲染模块,用于响应于接收到多个视图渲染请求,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
在本发明实施方式的第三方面中,提供了一种计算设备,该计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述第一方面中任一实施例所提供的用于libGDX引擎的多视图渲染方法。
在本发明实施方式的第四方面中,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有程序,程序被处理器执行如上述第一方面中任一实施例所提供的用于libGDX引擎的多视图渲染方法。
根据本发明实施方式的用于libGDX引擎的多视图渲染方法,在接收到用于初始化libGDX引擎的初始化指令时,创建用于管理多个视图交互接口的接口管理组件,以将已创建的原生视图的视图交互接口添加至接口管理组件中,从而可以在接收到用于渲染不同的原生视图的多个视图渲染请求时,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面。本发明的方法使得libGDX引擎可以进行多个视图的同时渲染,而无需将需要使用libGDX引擎渲染的内容集中到一个视图上,降低了视图渲染难度,提高了视图渲染效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1是本发明根据一示例性实施例示出的一种用于libGDX引擎的多视图渲染方法的流程图;
图2是本发明根据一示例性实施例示出的一种在libGDX引擎中创建接口管理组件的流程图;
图3是根据本发明实施例示出的一种视图交互接口的处理过程的流程图;
图4是根据本发明实施例示出的一种用于libGDX引擎的多视图渲染过程的流程图;
图5是本发明根据一示例性实施例示出的一种共享OpenGL上下文的流程图;
图6是本发明根据一示例性实施例示出的一种用于libGDX引擎的多视图渲染装置的框图;
图7是本发明根据一示例性实施例示出的一种计算机可读存储介质的示意图;
图8是本发明根据一示例性实施例示出的一种计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种用于libGDX引擎的多视图渲染方法、装置及设备。
发明概述
相关技术中,libGDX引擎作为一个开源免费的、跨平台的游戏渲染引擎,在Android平台中通常用来制作二维(Two-dimensional,2D)、三维(Three-dimensional,3D)游戏、渲染骨骼动画等。
本发明人发现,libGDX引擎在Android平台上需使用单视图模式实现,不支持同屏多个视图同时渲染,从而使得开发者必须将所有需要使用libGDX引擎渲染的内容都集中到一个视图上,但是,多视图模式的多个视图之间往往具有复杂的层级结构,单视图模式显然无法满足此需求,而且,在将需要使用libGDX引擎渲染的内容都集中到一个视图上进行渲染的情况下,渲染完成的视图难以和原生界面相结合。
有鉴于此,本发明期望提供一种用于libGDX引擎的多视图渲染方法,以对libGDX引擎进行改造,使得libGDX引擎可以支持同屏多视图渲染,克服单视图模式带来的诸多限制。
应用场景概述
本发明所提供的用于libGDX引擎的多视图渲染方法,可以用于对多种类型的应用界面进行渲染。例如,可以通过本发明所提供的用于libGDX引擎的多视图渲染方法,来对游戏类应用中的应用界面进行渲染,或者,还可以通过本发明所提供的用于libGDX引擎的多视图渲染方法,来对社交类应用、生活类应用等多种类型的非游戏应用中的应用界面进行渲染,本发明对具体用于渲染何种应用的应用界面不加以限定。
上述用于libGDX引擎的多视图渲染方法可以由计算设备执行,计算设备可以为终端设备,如台式计算机、便携式计算机、笔记本电脑、平板电脑、智能手机,等等,但不限于此,计算设备还可以是其他类型的终端设备,或者,计算设备还可以是除终端设备之外的其他类型的设备,本发明对计算设备的设备类型不加以限定。
需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制,相反,本发明的实施方式可以应用于适用的任何场景。
示例性方法
下面结合上述有关应用场景的介绍,来对本发明所提供的用于libGDX引擎的多视图渲染方法进行详细介绍。
参见图1,图1是本发明根据一示例性实施例示出的一种用于libGDX引擎的多视图渲染方法的流程图,如图1所示,该方法包括:
S101、响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,接口管理组件用于管理多个视图交互接口。
可选地,可以在启动应用程序时进行libGDX引擎的初始化。例如,可以在应用程序的启动类中设置libGDX引擎的初始化代码,从而使得在接收到用于启动应用程序的启动指令的情况下,通过加载应用程序的启动类,即可实现对libGDX引擎的初始化代码的加载,以达到触发用于初始化libGDX引擎的初始化指令的效果。
其中,接口管理组件可以为一个全局的适配器,但不限于此,接口管理组件也可以为其他类型的组件。
S102、将已创建的原生视图的视图交互接口添加至接口管理组件中。
需要说明的是,所启动的应用程序中可以包括多个原生视图,每个原生视图均会对应于一个视图交互接口,通过上述步骤S102,可以将所启动的应用程序中每个原生视图的视图交互接口添加至接口管理组件中,以便可以通过接口管理组件来对多个原生视图的视图交互接口进行管理。
S103、响应于接收到多个视图渲染请求,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
通过接口管理组件将视图渲染请求转发给相应的视图交互接口,使得接口管理组件仅需对多个视图管理接口进行管理即可,而无需执行实际的渲染操作,实际的渲染操作仍然由视图交互接口执行。
通过本发明所提供的用于libGDX引擎的多视图渲染方法,在接收到用于初始化libGDX引擎的初始化指令时,创建用于管理多个视图交互接口的接口管理组件,以将已创建的原生视图的视图交互接口添加至接口管理组件中,从而可以在接收到用于渲染不同的原生视图的多个视图渲染请求时,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面。本发明的方法使得libGDX引擎可以进行多个视图的同时渲染,而无需将需要使用libGDX引擎渲染的内容集中到一个视图上,降低了视图渲染难度,提高了视图渲染效率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
在一些实施例中,对于步骤S101,在响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件时,可以通过如下方式实现:
响应于接收到初始化指令,在全局变量中注册接口管理组件,以在libGDX引擎中创建接口管理组件。
可选地,可以响应于接收到初始化指令,先创建一个用于管理多个视图交互接口的接口管理组件,再将所创建的接口管理组件注册到libGDX全局变量中,以达到在libGDX引擎中创建全局的接口管理组件的效果。
其中,接口管理组件可以为适配器。适配器是一种可以对一个或多个不兼容的接口进行转换,从而使得不兼容的接口可以一起工作的一种设计模式。
通过使用适配器作为接口管理组件,可以在不影响原有的代码结构和系统结构的前提下,实现多个视图交互接口的集成和协作,以达到管理多个视图交互接口的目的。
以接口管理组件为适配器为例,在libGDX引擎中创建接口管理组件的过程可以参见图2,图2是本发明根据一示例性实施例示出的一种在libGDX引擎中创建接口管理组件的流程图,如图2所示,可以在应用启动时即对libGDX引擎进行初始化,在初始化libGDX引擎时,可以创建用于管理视图交互接口的适配器,从而注册适配器到全局libGDX变量,以达到在libGDX引擎中创建全局的适配器的效果,以便可以通过适配器来对多个视图交互接口进行管理。
通过上述实施例,可以在初始化libGDX引擎时,不再直接注册真正的视图交互接口,而是改为注册一个全局的接口管理组件,以通过接口管理组件来管理多个真正的视图交互接口。需要说明的是,接口管理组件虽然也实现了视图交互接口的功能,但是不执行实际的渲染操作,实际的渲染操作仍然可以由真正的视图交互接口来执行。
在通过上述实施例完成接口管理组件的创建后,即可通过步骤S102,将已创建的原生视图的视图交互接口添加至接口管理组件中。在一些实施例中,对于步骤S102,在将已创建的原生视图的视图交互接口添加至接口管理组件中时,可以通过如下方式实现:
对于任一原生视图,响应于对原生视图的创建指令,将原生视图的视频交互接口添加至接口管理组件中。
也即是,可以在每个原生视图被创建后,即动态地创建相应的视图交互接口,并将所创建的视图交互接口添加到接口管理组件中。
参见图3,图3是根据本发明实施例示出的一种视图交互接口的处理过程的流程图,如图3所示,以包括3个原生视图的应用程序为例,这3个原生视图可以称为原生视图1、原生视图2和原生视图3,原生视图1被创建后,即可创建原生视图1对应的视图交互接口1,同理,原生视图2被创建后,即可创建原生视图2对应的视图交互接口2,原生视图3被创建后,即可创建原生视图3对应的视图交互接口3。在每个视图交互接口被创建后,即可将所创建的视图交互接口添加到接口管理组件中,以便可以通过接口管理组件对多个视图交互接口进行统一管理。
通过上述实施例即可实现注册视图交互接口的完整过程,以便可以通过步骤S103,响应于接收到多个视图渲染请求,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面。
可选地,接口管理组件中可以预先存储有关联指示信息,关联指示信息可以用于指示每个渲染线程对应的视图交互接口。例如,关联指示信息可以用于指示渲染线程和视图交互接口之间的映射关系。
需要说明的是,libGDX引擎底层可以基于开放图形库(Open Graphics Library,OpenGL)实现渲染,在Android平台中,每个使用OpenGL渲染的视图都可以拥有一个单独的渲染线程,因而可以通过存储渲染线程和视图交互接口之间的映射关系,以实现关联指示信息的存储。
可选地,可以使用渲染线程的线程标识(Identification,ID)作为原生视图的唯一标识,通过存储线程ID与视图交互接口之间的映射关系,以实现关联指示信息的存储。
基于此,对于步骤S103,在通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口时,可以通过如下步骤实现:
步骤S1031、对于多个视图渲染请求中的任一视图渲染请求,基于接口管理组件中所存储的关联指示信息以及视图渲染请求所对应的渲染线程,确定视图渲染请求所对应的目标视图交互接口。
可选地,关联指示信息可以用于指示渲染线程的线程ID和视图交互接口之间的映射关系。
在一种可能的实现方式中,当接收到视图渲染请求时,可以通过libGDX全局变量找到预先注册的接口管理组件,以便可以通过接口管理组件,根据该视图渲染请求所在渲染线程的线程ID,结合接口管理组件中所存储的关联指示信息找到该线程ID对应的视图交互接口,作为该视图渲染请求所对应的目标视图交互接口。
步骤S1032、将视图渲染请求发送给目标视图交互接口。
上述步骤S1031至步骤S1032是以一个视图渲染请求的转发过程为例来进行说明的,其他多个视图渲染请求的转发过程与之同理,以便可以通过接口管理组件,将多个视图渲染请求分发给多个视图交互接口,其中,不同的视图渲染请求会被分发给不同的视图交互接口。
通过上述实施例,可以预先在接口管理组件中存储渲染线程和视图交互接口之间的映射关系,以便在接口管理组件接收到视图渲染请求时,根据该视图渲染请求所在的渲染线程,通过映射关系找到相应的目标视图交互接口,以完成视图渲染请求的分发。
在通过上述步骤S1031至步骤S1032完成视图渲染请求的分发之后,还可以包括如下步骤:
步骤S1033、通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面。
其中,每个目标视图交互接口中均预先配置有渲染逻辑。基于此,对于步骤S1033,在通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面时,可以通过如下方式实现:
对于任一目标视图交互接口,按照目标视图交互接口中所配置的渲染逻辑,渲染第一视图渲染请求所对应的原生界面,第一视图渲染请求为目标视图交互接口所对应的视图渲染请求。
需要说明的是,由于每个原生视图都有单独的视图交互接口,且这些视图交互接口之间各自独立、互不干涉,所以这多个视图交互接口之间可以并行渲染,以实现多个视图的同时渲染。
也即是,在通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面时,可以通过多个目标视图交互接口,并行渲染多个视图渲染请求所对应的多个原生界面。
上述实施例所提供的视图渲染过程可以参见图4,图4是根据本发明实施例示出的一种用于libGDX引擎的多视图渲染过程的流程图,如图4所示,以包括3个原生视图的应用程序为例,这3个原生视图可以称为原生视图1、原生视图2和原生视图3,当这3个原生视图同时渲染时,每个原生视图均会向libGDX引擎发送视图渲染请求,libGDX引擎可以通过libGDX全局变量找到预先注册的接口管理组件,接口管理组件可以将不同的视图渲染请求根据其来源(也即是视图渲染请求所在渲染线程的线程ID)分发到对应的目标视图交互接口,由目标视图交互接口完成真正的渲染操作。由于每个原生视图都有单独的视图交互接口,且这些视图交互接口之间各自独立、互不干涉,所以能实现多个原生视图同时渲染。
通过上述实施例,即可实现对libGDX引擎的改造,以使libGDX引擎可以支持同屏多视图渲染,克服单视图模式带来的诸多限制。
此外,相比于单视图模式,多视图同时渲染时使用的纹理资源会成倍增加(每增加一个原生视图,渲染过程所使用的纹理资源会增加一倍),为有效应对多视图同时渲染时占用内存较高的问题,可以通过共享上下文的方式以减少需要加载的纹理资源的资源量。
需要说明的是,libGDX引擎底层可以基于OpenGL实现渲染,每个使用OpenGL渲染的原生视图都会创建一个OpenGL上下文(或称OpenGL上下文对象),在创建这个OpenGL上下文时,可以选择传入另一个OpenGL上下文作为它的共享OpenGL上下文。通过这种方式创建OpenGL上下文后,在渲染时可以直接使用共享的OpenGL上下文加载过的纹理资源,而不用自己重新加载,这样就可以实现多个视图的纹理资源的复用,以有效应对多视图同时渲染时占用内存较高的问题。
在一些实施例中,对于任一原生视图,可以为该原生视图的OpenGL上下文配置共享OpenGL上下文,以使用共享OpenGL上下文已加载的纹理资源渲染原生界面。
可选地,上述共享OpenGL上下文的方式可以参见图5,图5是本发明根据一示例性实施例示出的一种共享OpenGL上下文的流程图,如图5所示,可以先创建一个全局的OpenGL上下文,且无需为其绑定原生视图,后续所有的纹理资源都可以加载到这个全局的OpenGL上下文上。当每个原生视图(包括但不限于原生视图1、原生视图2和原生视图3)创建了自己的OpenGL上下文后,均可以以这个全局OpenGL上下文作为共享上下文,通过这种共享上下文的方式,内存中只需加载一份纹理资源,与单视图模式下的内存占用相同,以降低多视图同时渲染时的内存占用。
示例性装置
另外,本发明还提供了一种用于libGDX引擎的多视图渲染装置,参见图6,图6是本发明根据一示例性实施例示出的一种用于libGDX引擎的多视图渲染装置的框图,如图6所示,该装置包括:
创建模块601,用于响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,接口管理组件用于管理多个视图交互接口;
添加模块602,用于将已创建的原生视图的视图交互接口添加至接口管理组件中;
渲染模块603,用于响应于接收到多个视图渲染请求,通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
在一些实施例中,接口管理组件中存储有关联指示信息,关联指示信息用于指示每个渲染线程对应的视图交互接口;
渲染模块603,在用于通过接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口时,用于:
对于多个视图渲染请求中的任一视图渲染请求,基于接口管理组件中所存储的关联指示信息以及视图渲染请求所对应的渲染线程,确定视图渲染请求所对应的目标视图交互接口;
将视图渲染请求发送给目标视图交互接口。
在一些实施例中,每个目标视图交互接口中均预先配置有渲染逻辑;
渲染模块603,在用于通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面时,用于:
对于任一目标视图交互接口,按照目标视图交互接口中所配置的渲染逻辑,渲染第一视图渲染请求所对应的原生界面,第一视图渲染请求为目标视图交互接口所对应的视图渲染请求。
在一些实施例中,渲染模块603,在用于通过多个目标视图交互接口渲染多个视图渲染请求所对应的多个原生界面时,用于:
通过多个目标视图交互接口,并行渲染多个视图渲染请求所对应的多个原生界面。
在一些实施例中,创建模块601,在用于响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件时,用于:
响应于接收到初始化指令,在全局变量中注册接口管理组件,以在libGDX引擎中创建接口管理组件。
在一些实施例中,添加模块602,在用于将已创建的原生视图的视图交互接口添加至接口管理组件中时,用于:
对于任一原生视图,响应于对原生视图的创建指令,将原生视图的视频交互接口添加至接口管理组件中。
在一些实施例中,每个原生视图对应于一个开放图形库OpenGL上下文;
该装置还包括:
配置模块,用于对于任一原生视图,为原生视图的OpenGL上下文配置共享OpenGL上下文;
渲染模块603,还用于使用共享OpenGL上下文已加载的纹理资源渲染原生界面。
示例性介质
本发明实施例还提供了一种计算机可读存储介质。图7是本发明根据一示例性实施例示出的一种计算机可读存储介质的示意图,如图7所示,该存储介质上存储有计算机程序701,该计算机程序701被处理器执行时可以执行本发明任一实施例所提供的用于libGDX引擎的多视图渲染方法。
示例性设备
本发明实施例还提供了一种计算设备,该计算设备可以包括存储器、处理器,该存储器用于存储可在处理器上运行的计算机指令,该处理器用于在执行该计算机指令时实现本发明任一实施例所提供的用于libGDX引擎的多视图渲染方法。参见图8,图8是本发明根据一示例性实施例示出的一种计算设备的结构示意图,该计算设备800可以包括但不限于:处理器810、存储器820、连接不同系统组件(包括存储器820和处理器810)的总线830。
其中,存储器820存储有计算机指令,该计算机指令可以被处理器810执行,使得处理器810能够执行本发明任一实施例所提供的用于libGDX引擎的多视图渲染方法。存储器820可以包括随机存取存储单元RAM821、高速缓存存储单元822和/或只读存储单元ROM823。该存储器820还可以包括:具有一组程序模块824的程序工具825,该程序模块824包括但不限于:操作系统、一个或多个应用程序、其他程序模块和程序数据,这些程序模块一种或多种组合可以包含网络环境的实现。
总线830例如可以包括数据总线、地址总线和控制总线等。该计算设备800还可以通过I/O接口840与外部设备850通信,该外部设备850例如可以是键盘、蓝牙设备等。该计算设备800还可以通过网络适配器880与一个或多个网络通信,例如,该网络可以是局域网、广域网、公共网络等。如图8所示,该网络适配器860还可以通过总线830与计算设备800的其他模块进行通信。
示例性产品
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,程序被计算设备800的处理器810执行时,可以实现本发明任一实施例所提供的用于libGDX引擎的多视图渲染方法。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种用于libGDX引擎的多视图渲染方法,其特征在于,所述方法包括:
响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,所述接口管理组件用于管理多个视图交互接口;
将已创建的原生视图的视图交互接口添加至所述接口管理组件中;
响应于接收到多个视图渲染请求,通过所述接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染所述多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
2.根据权利要求1所述的方法,其特征在于,所述接口管理组件中存储有关联指示信息,所述关联指示信息用于指示每个渲染线程对应的视图交互接口;
所述通过所述接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,包括:
对于所述多个视图渲染请求中的任一视图渲染请求,基于所述接口管理组件中所存储的关联指示信息以及所述视图渲染请求所对应的渲染线程,确定所述视图渲染请求所对应的目标视图交互接口;
将所述视图渲染请求发送给所述目标视图交互接口。
3.根据权利要求1所述的方法,其特征在于,每个目标视图交互接口中均预先配置有渲染逻辑;
所述通过多个目标视图交互接口渲染所述多个视图渲染请求所对应的多个原生界面,包括:
对于任一目标视图交互接口,按照所述目标视图交互接口中所配置的渲染逻辑,渲染第一视图渲染请求所对应的原生界面,所述第一视图渲染请求为所述目标视图交互接口所对应的视图渲染请求。
4.根据权利要求1所述的方法,其特征在于,所述通过多个目标视图交互接口渲染所述多个视图渲染请求所对应的多个原生界面,包括:
通过所述多个目标视图交互接口,并行渲染所述多个视图渲染请求所对应的多个原生界面。
5.根据权利要求1所述的方法,其特征在于,所述响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,包括:
响应于接收到所述初始化指令,在全局变量中注册接口管理组件,以在libGDX引擎中创建所述接口管理组件。
6.根据权利要求1所述的方法,其特征在于,所述将已创建的原生视图的视图交互接口添加至所述接口管理组件中,包括:
对于任一原生视图,响应于对所述原生视图的创建指令,将所述原生视图的视频交互接口添加至所述接口管理组件中。
7.根据权利要求1所述的方法,其特征在于,每个原生视图对应于一个开放图形库OpenGL上下文;
所述方法还包括:
对于任一原生视图,为所述原生视图的OpenGL上下文配置共享OpenGL上下文;
使用所述共享OpenGL上下文已加载的纹理资源渲染所述原生界面。
8.一种用于libGDX引擎的多视图渲染装置,其特征在于,所述装置包括:
创建模块,用于响应于接收到用于初始化libGDX引擎的初始化指令,创建接口管理组件,所述接口管理组件用于管理多个视图交互接口;
添加模块,用于将已创建的原生视图的视图交互接口添加至所述接口管理组件中;
渲染模块,用于响应于接收到多个视图渲染请求,通过所述接口管理组件将每个视图渲染请求转发给对应的目标视图交互接口,以通过多个目标视图交互接口渲染所述多个视图渲染请求所对应的多个原生界面;其中,不同的视图渲染请求用于渲染不同的原生视图。
9.一种计算设备,其特征在于,所述计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至7中任一项所述的用于libGDX引擎的多视图渲染方法所执行的操作。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有程序,所述程序被处理器执行如权利要求1至7中任一项所述的用于libGDX引擎的多视图渲染方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311434353.8A CN117369935A (zh) | 2023-10-31 | 2023-10-31 | 用于libGDX引擎的多视图渲染方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311434353.8A CN117369935A (zh) | 2023-10-31 | 2023-10-31 | 用于libGDX引擎的多视图渲染方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117369935A true CN117369935A (zh) | 2024-01-09 |
Family
ID=89402143
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311434353.8A Pending CN117369935A (zh) | 2023-10-31 | 2023-10-31 | 用于libGDX引擎的多视图渲染方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117369935A (zh) |
-
2023
- 2023-10-31 CN CN202311434353.8A patent/CN117369935A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10074206B1 (en) | Network-optimized graphics library for virtualized graphics processing | |
JP2022023772A (ja) | Gpuを共有するための方法、装置、電子デバイス、コンピュータ可読記憶媒体及びコンピュータプログラム | |
US9830176B2 (en) | Methods, systems, and media for binary compatible graphics support in mobile operating systems | |
US20120054740A1 (en) | Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments | |
US7730492B1 (en) | Method and system for running multiple virtual machines in a single process | |
CN112644276B (zh) | 一种屏幕显示方法、车辆及计算机存储介质 | |
JP2022516486A (ja) | リソース管理方法と装置、電子デバイス、及び記録媒体 | |
CN108073423B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
US20160132346A1 (en) | Memory Space Mapping Techniques for Server Based Graphics Processing | |
CN115309511B (zh) | 基于Xen的数据交互方法、装置、存储介质以及电子设备 | |
CN107800779B (zh) | 优化负载均衡的方法及系统 | |
CN116508001A (zh) | 卸载容器执行环境 | |
CN115904617A (zh) | 一种基于sr-iov技术的gpu虚拟化实现方法 | |
CN115361389A (zh) | 一种云计算实例创建方法及装置 | |
CN115421787A (zh) | 指令执行方法、装置、设备、系统、程序产品及介质 | |
WO2022100693A1 (zh) | 一种地址转换关系的配置方法及计算机系统 | |
CN110362375A (zh) | 桌面数据的显示方法、装置、设备和存储介质 | |
EP4137957A1 (en) | File sharing method and terminal device | |
CN108062239A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN116467043A (zh) | 一种基于k8s容器化差异化自动部署方法、装置及介质 | |
CN117369935A (zh) | 用于libGDX引擎的多视图渲染方法、装置及设备 | |
CN115774701A (zh) | 数据共享方法、装置、电子设备及存储介质 | |
EP3798859A1 (en) | File system using approximate membership filters | |
CN112073505B (zh) | 在云服务器上进行卸载的方法、控制装置、存储介质 | |
CN114924837A (zh) | 数据处理方法、电子设备和可读存储介质 |
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 |