一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

纹理管理方法、装置、设备及存储介质与流程

2022-06-01 11:05:06 来源:中国专利 TAG:


1.本技术实施例涉及计算机技术领域,尤其涉及纹理管理方法、装置、设备及存储介质。


背景技术:

2.计算机图形学领域中,纹理可以理解为表示物体表面细节的一幅或几幅二维图形,也称纹理贴图。当把纹理按照特定的方式映射到物体表面上时,能使物体看上去更加真实。纹理映射是将纹理空间中的纹理像素映射到屏幕空间中的像素的过程,从而使得渲染后的画面能够更细腻更真实地表现场景。
3.纹理通常包含多种属性,如尺寸以及维度等等。由于纹理属性较多且通常差异较大,难以对纹理进行有效的复用,在现有的渲染引擎中,会频繁的创建和销毁纹理,这样会增加系统的负载和带来额外的耗时,进而影响渲染的效率。


技术实现要素:

4.本技术实施例提供了纹理管理方法、装置、设备及存储介质,可以优化现有的纹理管理方案。
5.第一方面,本技术实施例提供了一种纹理管理方法,该方法包括:
6.确定待渲染画面中待生成的第一纹理的第一属性信息,并根据所述第一属性信息确定对应的第一纹理标识;
7.查询预设纹理池中是否存在与所述第一纹理标识对应的第一纹理单元,其中,所述预设纹理池中包括纹理标识与纹理单元的对应关系,所述纹理单元中包括纹理对象所占用内存的指针;
8.若存在,则根据所述第一纹理单元中的第一指针获取第一纹理对象,根据所述第一纹理对象生成所述第一纹理。
9.第二方面,本技术实施例提供了一种纹理管理装置,该装置包括:
10.纹理标识确定模块,用于确定待渲染画面中待生成的第一纹理的第一属性信息,并根据所述第一属性信息确定对应的第一纹理标识;
11.纹理单元查询模块,用于查询预设纹理池中是否存在与所述第一纹理标识对应的第一纹理单元,其中,所述预设纹理池中包括纹理标识与纹理单元的对应关系,所述纹理单元中包括纹理对象所占用内存的指针;
12.纹理生成模块,用于若预设纹理池中存在与所述第一纹理标识对应的第一纹理单元,则根据所述第一纹理单元中的第一指针获取第一纹理对象,根据所述第一纹理对象生成所述第一纹理。
13.第三方面,本技术实施例提供了一种纹理管理设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本技术实施例提供的纹理管理方法。
14.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本技术实施例提供的纹理管理方法。
15.本技术实施例中提供的纹理管理方案,确定待渲染画面中待生成的第一纹理的第一属性信息,并根据第一属性信息确定对应的第一纹理标识,查询预设纹理池中是否存在与第一纹理标识对应的第一纹理单元,其中,预设纹理池中包括纹理标识与纹理单元的对应关系,纹理单元中包括纹理对象所占用内存的指针,若存在,则根据第一纹理单元中的第一指针获取第一纹理对象,根据第一纹理对象生成第一纹理。通过采用上述技术方案,利用预设纹理池对已创建的纹理对象进行管理,当需要生成纹理时,根据纹理属性从预设纹理池中查询到对应的纹理对象的指针,并根据指针获取到纹理对象进行纹理生成,避免在需要生成纹理时临时向系统内存申请创建纹理对象,提高纹理生成效率,进而提高画面渲染效率。
附图说明
16.图1为本技术实施例提供的一种纹理管理方法的流程示意图;
17.图2为本技术实施例提供的又一种纹理管理方法的流程示意图;
18.图3为本技术实施例提供的一种纹理管理装置的结构框图;
19.图4为本技术实施例提供的一种纹理管理设备的结构框图。
具体实施方式
20.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。此外,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
21.需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块、单元或对象进行区分,如第一纹理和第二纹理等,并非用于限定这些装置、模块、单元或对象所执行的功能的顺序或者相互依存关系。
22.相关技术中,纹理生成完成并用于画面渲染后,不会对纹理进行缓存,因此会频繁的创建和销毁纹理,这样会增加系统的负载和带来额外的耗时,进而影响渲染的效率。
23.而本技术实施例中,提出了纹理池的概念,可以将创建的纹理对象保存在内存中,例如将系统普通内存划分为纹理内存区和系统内存堆,将纹理对象保存于纹理内存区,利用预设纹理池对所保存的纹理对象进行管理,当需要生成纹理时,利用预设纹理池找到合适的纹理对象用于生成纹理,避免在需要生成纹理时临时向系统内存申请创建纹理对象,提高纹理生成效率,进而提高画面渲染效率。
24.图1为本技术实施例提供的一种纹理管理方法的流程示意图,该方法可以由纹理管理装置执行,其中该装置可由软件和/或硬件实现,一般可集成在纹理管理设备中。其中,所述电子设备可以为手机、平板电脑以及笔记本电脑等移动设备;也可为台式计算机等其他设备。
25.如图1所示,该方法包括:
26.步骤101、确定待渲染画面中待生成的第一纹理的第一属性信息,并根据所述第一
属性信息确定对应的第一纹理标识。
27.示例性的,待渲染画面可以是目标页面中的画面,目标页面可以包含于预设应用程序(application,app)中,预设应用程序的具体类型不做限定,例如可以是短视频类应用程序、直播类应用程序或游戏类应用程序等,还可以是其他类型的应用程序,目标页面例如可以是视频播放页面、直播页面或游戏页面等等。待渲染画面也可以理解为待显示画面,待渲染画面中可以包含一个或多个需要添加纹理的物体或对象,第一纹理可以是待渲染画面中的任意一个纹理或指定纹理,具体不做限定。
28.纹理一般具有多种属性,本技术实施例中,纹理的属性信息例如可以包括尺寸、维度、像素格式、采样方式、通道数和访问权限中的一项或多项。第一属性信息是第一纹理的属性信息。具有不同属性信息的纹理是不同的纹理,可以根据属性信息对纹理进行划分,不同属性信息对应不同的纹理标识。可选的,可以根据属性信息计算得到哈希值,将哈希值作为纹理标识。第一纹理标识为第一属性信息对应的纹理标识,可以根据第一属性信息计算哈希值,将计算得到的哈希值确定为第一纹理标识。
29.步骤102、查询预设纹理池中是否存在与所述第一纹理标识对应的第一纹理单元,其中,所述预设纹理池中包括纹理标识与纹理单元的对应关系,所述纹理单元中包括纹理对象所占用内存的指针。
30.示例性的,纹理内存区中可以存储在渲染目标页面对应的画面过程中创建过的全部或部分纹理对象。纹理对象可以理解为具有一定属性信息的纹理模板,可以理解为不同的纹理属性信息可以对应不同的纹理对象。在生成纹理时,一般需要先创建相应属性信息的纹理对象,再对纹理对象进行内容填充或修改等操作,进而生成所需纹理。在预设纹理池中存储纹理标识和纹理单元的对应关系,纹理单元中包括纹理对象所占用内存的指针,该指针可以指向对应的纹理对象在纹理内存区中的存储位置,从而通过指针可找到相应的纹理对象,用于后续的纹理生成。
31.本技术实施例中,在得到第一纹理标识后,到预设纹理池中查找是否存在第一纹理标识,若存在第一纹理标识,则确定预设纹理池中存在与第一纹理标识对应的第一纹理单元,根据上述对应关系找到第一纹理单元。
32.步骤103、若存在,则根据所述第一纹理单元中的第一指针获取第一纹理对象,根据所述第一纹理对象生成所述第一纹理。
33.示例性的,在查找到第一纹理单元后,可以读取其中包含的指针,也即第一指针,到第一指针指向的内存地址获取第一纹理对象,对第一纹理对象进行内容填充或修改等操作,进而生成第一纹理。
34.可选的,在查询预设纹理池中是否存在与所述第一纹理标识对应的第一纹理单元之后,还包括:若不存在,则向系统内存申请创建与所述第一属性信息匹配的第二纹理对象,并根据所述第二纹理对象生成所述第一纹理。这样设置的好处在于,当无法找到与第一纹理标识对应的已创建的纹理对象的情况下,向系统内存申请创建与第一属性信息匹配的第二纹理对象,保证纹理能够成功生成,进而使得待渲染画面能够成功渲染完成。
35.可选的,一个纹理标识对应一个纹理单元,也即一个纹理标识对应一个指针,可以减少纹理对象对系统内存的占用。针对这种情况,当指针对应的纹理对象已被取出的情况下,再次根据该指针将无法获取所存储的纹理对象,此时,可以向系统内存申请创建与第一
属性信息匹配的新的纹理对象。
36.可选的,所述预设纹理池以哈希多重表形式存在,所述纹理标识包括根据纹理的属性信息计算得到的哈希值,每个所述纹理标识对应多个纹理单元。这样设置的好处在于,一个纹理标识对应多个纹理单元,也即一个纹理标识对应多个指针,每个指针分别对应一个与纹理标识所代表的纹理属性匹配的纹理对象,当某一纹理标识对应的一个纹理对象被取出后,仍然有其他纹理对象可供获取,进一步保证纹理生成效率。示例性的,该哈希多重表中,以纹理标识为键(key),以多个纹理单元为值(value)。
37.本技术实施例中提供的纹理管理方法,确定待渲染画面中待生成的第一纹理的第一属性信息,并根据第一属性信息确定对应的第一纹理标识,查询预设纹理池中是否存在与第一纹理标识对应的第一纹理单元,其中,预设纹理池中包括纹理标识与纹理单元的对应关系,纹理单元中包括纹理对象所占用内存的指针,若存在,则根据第一纹理单元中的第一指针获取第一纹理对象,根据第一纹理对象生成第一纹理。通过采用上述技术方案,利用预设纹理池对已创建的纹理对象进行管理,当需要生成纹理时,根据纹理属性从预设纹理池中查询到对应的纹理对象的指针,并根据指针获取到纹理对象进行纹理生成,避免在需要生成纹理时临时向系统内存申请创建纹理对象,提高纹理生成效率,进而提高画面渲染效率。
38.在一些实施例中,所述根据所述第一属性信息确定对应的第一纹理标识,包括:判断待渲染画面中待生成的第一纹理是否需要占用系统共享内存;若否,根据所述第一属性信息确定对应的第一纹理标识;若是,向系统共享内存申请创建与所述第一属性信息匹配的第三纹理对象,并根据所述第三纹理对象生成所述第一纹理。这样设置的好处在于,合理利用共享内存的优势来创建纹理。
39.本技术实施例中,系统共享内存具体可以指中央处理器(central processing unit,cpu)和图形处理器(graphics processing unit,gpu)的共享内存,系统普通内存具体可以指系统中除系统共享内存之外的内存。利用系统共享内存生成纹理,可以提高性能,可以设定需要使用系统共享内存进行纹理生成的预设条件,在满足该预设条件的情况下,确定需要占用系统共享内存,预设条件可以根据实际需求设置。对于系统共享内存,纹理使用完后,需要及时释放纹理所占用内存,而预设纹理池管理的纹理对象存储于系统普通内存中,因此,在确定第一纹理不需要占用系统共享内存的情况下,再根据第一属性信息计算第一纹理标识,而若需要占用系统共享内存时,则向系统共享内存申请内存,用于创建与第一属性信息匹配的纹理对象。
40.在一些实施例中,还包括:在检测到第二纹理的释放请求时,确定所述第二纹理对应的第四纹理对象当前所占用的系统内存的类型;若所述第四纹理对象占用系统共享内存,则将所述第四纹理对象占用的内存释放;若所述第四纹理对象占用系统普通内存,则保留所述第四纹理对象。这样设置的好处在于,可以根据创建方式的不同,对使用完成的纹理进行有针对性的处理。
41.示例性的,在确定接下来待渲染的页面中不再需要第二纹理(可以是已生成的上述第一纹理,也可以是其他任意的已生成的纹理)时,可认为检测到第二纹理的释放请求。对于生成第二纹理时所依赖的第四纹理对象,可确定其存储于系统共享内存还是系统普通内存,若存储于系统共享内存,则需要将分配给第四纹理对象的内存归还,也即删除第四纹
理对象,第四纹理对象所占用的内存不再为其保留;若存储于系统普通内存,则为了避免后续再次需要使用第四纹理对象时的重复创建操作,可以对第四纹理对象进行保留。
42.在一些实施例中,所述保留所述第四纹理对象,包括:判断所述预设纹理池中是否包含所述第四纹理对象对应的第二纹理标识,若不存在,则保留所述第四纹理对象,并在所述预设纹理池中添加所述第二纹理标识和第二纹理单元的对应关系,其中,所述第二纹理单元中包含所述第四纹理对象所占用内存的指针。这样设置的好处在于,选择合适的方式保留第四纹理对象。
43.示例性的,对于首次创建的第四纹理对象,预设纹理池中并不存在其对应的纹理标识,此时,可以将第四纹理对象纳入预设纹理池的管理范围,例如,可以确定第四纹理对象所占用内存的指针,生成第二纹理单元,在预设纹理池中增加第二纹理标识和第二纹理单元的对应关系,从而在后续画面渲染过程中,可以实现对第四纹理对象的复用。
44.示例性的,若第四纹理对象已经在预设纹理池的管理范围内,则预设纹理池中存在第四纹理对象对应的第二纹理标识,从第二纹理标识对应的纹理单元中找到第四纹理对象对应的指针,根据指针将第四纹理对象放入曾经在纹理内存区中占用的存储位置,避免重新为第四纹理对象分配内存。
45.在一些实施例中,所述纹理单元中还包括入池帧数计数值,所述入池帧数计数值用于表示对应的纹理对象在未被使用期间完成渲染的画面的帧数。示例性的,对于存在于纹理内存区的纹理对象来说,因为并未被取出,因为未被使用,也即没有被用于纹理的生成,处于空闲状态,在此期间,画面渲染操作并未停止,因此,可以用该期间完成渲染的画面的帧数来衡量纹理对象未被使用的时长。若长时间未被使用到,可认为继续存储该纹理对象的会造成内存的浪费,降低了内存的利用率,可以对其占用的内存进行释放。示例性的,所述方法还包括:在确定第三纹理单元中的入池帧数计数值大于第一预设数值的情况下,将所述第三纹理单元中的指针指向的内存释放,并将所述第三纹理单元和对应的第三纹理标识从所述预设纹理池中清除。这样设置的好处在于,避免利用率低的纹理对象对内存空间的长期占用,及时释放内存,提高内存利用率。其中,第一预设数值可以根据实际需求设置,例如可以参考目标页面中的画面内容复杂度或内容变化的剧烈程度来设定。例如,对于游戏页面和直播页面来说,游戏页面的画面内容的变换频率和变换幅度高于直播页面,游戏页面对应的第一预设数值可以大于直播页面的第一预设数值,如游戏页面设置为8,直播页面设置为3等。
46.在一些实施例中,所述根据所述第一纹理单元中的第一指针获取第一纹理对象,包括:在所述第一纹理单元中的入池帧数计数值小于第二预设数值的情况下,根据所述第一纹理单元中的第一指针获取第一纹理对象。这样设置的好处在于,对于刚刚进入预设纹理池或者刚刚返回预设纹理池的纹理对象来说,上一帧画面可能并未完全使用完毕,为了避免出错,可设置为暂时不允许分配。
47.在一些实施例中,还包括:接收到目标页面的目标画面渲染任务时,创建所述目标页面对应的预设纹理池;在检测到所述目标画面渲染任务结束后,将所述预设纹理池中的指针指向的内存释放,并清空所述预设纹理池。这样设置的好处在于,在目标画面渲染任务结束后,及时将纹理对象的内存释放,返还给系统普通内存堆,并清空预设纹理池,提高内存利用率。
48.示例性的,可以检查目标画面渲染任务对应的渲染线程是否退出,若已退出,则确定目标画面渲染任务结束。
49.图2为本技术实施例提供的又一种纹理管理方法的流程示意图,本技术实施例在上述各可选实施例基础上进行优化,可包括:
50.步骤201、接收到目标页面的目标画面渲染任务时,创建目标页面对应的预设纹理池。
51.其中,预设纹理池以哈希多重表形式存在,纹理标识包括根据纹理的属性信息计算得到的哈希值,每个纹理标识对应多个纹理单元。每个纹理单元中包含纹理对象所占用内存的指针和入池帧数计数值,入池帧数计数值用于表示对应的纹理对象在未被使用期间完成渲染的画面的帧数。
52.可选的,首次创建的预设纹理池可以空的。创建完成后,可以自动根据预设属性信息创建对应的纹理对象,并生成纹理标识和纹理单元,保存两者的对应关系;也可以随着画面渲染的不断进行,逐渐创建符合当前需求的纹理对象,并纳入预设纹理池。
53.步骤202、确定待渲染画面中待生成的第一纹理的第一属性信息。
54.其中,纹理的属性信息例如可以包括尺寸、维度、像素格式、采样方式、通道数和访问权限,可以全面地表征纹理属性,使得纹理对象能够得到更精准地划分。
55.步骤203、判断第一纹理是否由系统共享内存创建,若是,则执行步骤208;否则,执行步骤204。
56.步骤204、根据第一属性信息计算哈希值,得到第一纹理标识。
57.步骤205、查询预设纹理池中是否存在第一纹理标识对应的第一纹理单元,若是,则执行步骤206;否则,执行步骤209。
58.示例性的,根据第一纹理标识确定预设纹理池中的出池纹理链表,判断出池纹理链表是否为空,也即是否存在可用的纹理对象。
59.步骤206、判断第一纹理单元中的入池帧数计数值小于第二预设数值,若是,则执行步骤209;否则执行步骤207。
60.示例性的,第二预设数值可以为2。
61.步骤207、根据第一纹理单元中的第一指针获取第一纹理对象,并根据第一纹理对象生成第一纹理。
62.步骤208、向系统共享内存申请创建与第一属性信息匹配的第三纹理对象,并根据第三纹理对象生成第一纹理。
63.步骤209、向系统普通内存申请创建与第一属性信息匹配的第二纹理对象,并根据第二纹理对象生成第一纹理。
64.步骤210、在检测到第二纹理的释放请求时,确定第二纹理对应的第四纹理对象当前所占用的系统内存的类型。
65.步骤211、判断类型是否为系统共享内存,若是,则执行步骤212;否则,执行步骤213。
66.步骤212、将第四纹理对象占用的内存释放。
67.步骤213、保留第四纹理对象。
68.示例性的,若第四纹理对象通过系统普通内存构建,则将第四纹理对象插入预设
纹理池中空闲列表。
69.步骤214、判断目标画面渲染任务是否结束,若是,则执行步骤215;否则,返回执行步骤202。
70.需要说明的是,再次执行步骤202时,第一纹理为新的待生成的纹理。
71.在目标画面渲染任务的进行过程中,可以实时更新未被使用的各个纹理对象对应的纹理单元中的入池帧数计数值,并以预设频率检查是否存在入池帧数计数值大于第一预设数值的纹理单元,若存在,则将第三纹理单元中的指针指向的内存释放,并将第三纹理单元和对应的第三纹理标识从预设纹理池中清除。
72.步骤215、将预设纹理池中的指针指向的内存释放,并清空预设纹理池。
73.本技术实施例提供的纹理管理方法,将纹理的创建方式划分为纹理池分配和系统内存堆创建,创建纹理时,根据纹理的属性来确定纹理对象是由纹理池分配还是从系统内存创建,释放内存时,根据纹理的创建方式来确定纹理对象销毁或者进入纹理池,此外,每帧根据指定规则更新纹理池中的纹理单元。在复杂场景的渲染任务中,纹理创建分为从纹理池中分配纹理和向系统申请创建纹理两种方式,通过纹理池管理纹理创建和删除,提高纹理使用的效率,避免频繁申请系统内存和创建纹理,能够有效减轻系统的负载和减少渲染的耗时。
74.图3为本技术实施例提供的一种纹理管理装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在纹理管理设备中,可通过执行纹理管理方法来进行纹理管理。如图3所示,该装置包括:
75.纹理标识确定模块301,用于确定待渲染画面中待生成的第一纹理的第一属性信息,并根据所述第一属性信息确定对应的第一纹理标识;
76.纹理单元查询模块302,用于查询预设纹理池中是否存在与所述第一纹理标识对应的第一纹理单元,其中,所述预设纹理池中包括纹理标识与纹理单元的对应关系,所述纹理单元中包括纹理对象所占用内存的指针;
77.纹理生成模块303,用于若预设纹理池中存在与所述第一纹理标识对应的第一纹理单元,则根据所述第一纹理单元中的第一指针获取第一纹理对象,根据所述第一纹理对象生成所述第一纹理。
78.本技术实施例中提供的纹理管理装置,确定待渲染画面中待生成的第一纹理的第一属性信息,并根据第一属性信息确定对应的第一纹理标识,查询预设纹理池中是否存在与第一纹理标识对应的第一纹理单元,其中,预设纹理池中包括纹理标识与纹理单元的对应关系,纹理单元中包括纹理对象所占用内存的指针,若存在,则根据第一纹理单元中的第一指针获取第一纹理对象,根据第一纹理对象生成第一纹理。通过采用上述技术方案,利用预设纹理池对已创建的纹理对象进行管理,当需要生成纹理时,根据纹理属性从预设纹理池中查询到对应的纹理对象的指针,并根据指针获取到纹理对象进行纹理生成,避免在需要生成纹理时临时向系统内存申请创建纹理对象,提高纹理生成效率,进而提高画面渲染效率。
79.本技术实施例提供了一种纹理管理设备,该纹理管理设备中可集成本技术实施例提供的纹理管理装置。图4为本技术实施例提供的一种纹理管理设备的结构框图。纹理管理设备400包括存储器401、处理器402及存储在存储器401上并可在处理器402上运行的计算
机程序,所述处理器402执行所述计算机程序时实现本技术实施例提供的纹理管理方法。
80.本技术实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本技术实施例提供的纹理管理方法。
81.上述实施例中提供的纹理管理装置、设备以及存储介质可执行本技术任意实施例所提供的纹理管理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本技术任意实施例所提供的纹理管理方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献