一种着色器程序的生成方法、装置和电子设备制造方法及图纸

技术编号:38727969 阅读:18 留言:0更新日期:2023-09-08 23:19
本申请实施例提供了一种着色器程序的生成方法、装置和电子设备。其中,该方法包括:确定发起图形绘制请求的应用程序的待绘制界面,记为目标界面;生成M帧包含目标界面中图形的图形数据帧,M为正整数;根据M帧图形数据帧,生成目标界面对应的第一着色器程序。通过该方法,可以将任意一个应用程序的任意一个待绘制界面包括的所有图形分别置于多帧图形数据帧中,然后根据多帧图形数据帧,分帧生成该待绘制界面对应的着色器程序。后续,GPU可以动态加载运行每一帧图形数据帧对应的着色器程序,使得该待绘制界面在显示时,可以动态加载控件,从而使得该待绘制界面的显示过程,不会出现卡顿现象,用户体验更好。用户体验更好。用户体验更好。

【技术实现步骤摘要】
一种着色器程序的生成方法、装置和电子设备


[0001]本申请涉及终端
,尤其涉及一种着色器程序的生成方法、装置和电子设备。

技术介绍

[0002]着色器(shader)是在图形处理器(graphics processing unit,GPU)上运行的一段程序代码。GPU通过运行应用程序的待绘制界面对应的、表示着色器的程序代码(后续简称着色器程序),可以对应用程序的待绘制界面进行显示。任意一个应用程序的任意一个待绘制界面,在首次通过着色器进行显示时,例如在应用程序被下载安装后首次通过着色器进行显示或在应用程序更新之后首次通过着色器进行显示时,都需要重新编译生成待绘制界面对应的着色器程序。
[0003]而对于大多数应用程序的待绘制界面,通常都包括多个图形,在编译生成对应的着色器程序时,通常都需要生成多个图形的着色器程序。目前,在编译生成这些待绘制界面对应的着色器程序时,会将待绘制界面中所有图形,置于同一帧图形数据帧中,然后逐个生成该帧图形数据帧中每一个图形的着色器程序,从而得到待绘制界面对应的着色器程序。按照这样的方式,GPU显示待绘制界面时,通常会花费上百毫秒的时间,导致待绘制界面在显示时出现卡顿,用户体验较差。

技术实现思路

[0004]本申请实施例提供了一种着色器程序的生成方法、装置和电子设备,以解决对于包含多个需要编译生成着色器程序的图形的待绘制界面,GPU在显示这些待绘制界面时,花费时间较长,发生显示卡顿的问题。
[0005]第一方面,本申请实施例提供了一种着色器程序的生成方法,该方法包括:
[0006]确定目标界面,所述目标界面为发起图形绘制请求的应用程序的待绘制界面;
[0007]根据所述目标界面,生成M帧图形数据帧,所述图形数据帧为包含所述目标界面中图形的数据帧,M为正整数;
[0008]根据所述M帧图形数据帧,生成第一着色器程序,所述第一着色器程序包括所述目标界面中所有图形的着色器程序。
[0009]这样,通过该方法,可以将任意一个应用程序的任意一个待绘制界面包括的所有图形分别置于多帧图形数据帧中,然后根据多帧图形数据帧,分帧生成该待绘制界面包括的所有图形的着色器程序,从而得到该待绘制界面对应的着色器程序。后续,GPU可以动态加载运行每一帧图形数据帧包括的图形的着色器程序,使得该待绘制界面在显示时,可以动态加载控件,从而使得该待绘制界面的显示过程,不会出现卡顿现象,用户体验更好。
[0010]一种可能的实现方式中,所述根据所述M帧图形数据帧,生成第一着色器程序,包括:
[0011]逐个生成所述M帧图形数据帧中各图形数据帧对应的第二着色器程序;
[0012]存储所有所述第二着色器程序至着色器程序池中;
[0013]从所述着色器程序池中获取所述第一着色器程序。
[0014]这样,可以通过分帧的方式,逐个生成M帧图形数据帧中每一帧图形数据帧对应的着色器程序,然后,可以逐个存储每一帧图形数据帧对应的着色器程序,无需等待M帧图形数据帧对应的着色器程序全部生成,使得GPU可以动态加载运行已经生成的图形数据帧的着色器程序,从而使得后续目标界面的显示,不会出现卡顿现象,用户体验更好。
[0015]一种可能的实现方式中,生成所述M帧图形数据帧中第N1帧图形数据帧对应的第二着色器程序,包括:
[0016]确定所述目标界面的着色器图形池是否为空;
[0017]如果所述着色器图形池为空,确定所述第N1帧图形数据帧包括第一图形的第一数量,所述第一图形的着色器程序未存储在所述着色器程序池中,N1为小于或等于M的正整数;
[0018]如果所述第一数量大于数量阈值,从所述第N1帧图形数据帧包括的第一图形中出栈K1个第一图形,K1为小于或等于所述数量阈值的正整数;
[0019]将所述第N1帧图形数据帧包括的第一图形中,出栈所述K1个第一图形后,余下的第一图形,存储至所述着色器图形池中;
[0020]生成所述K1个第一图形的着色器程序;
[0021]确定所述K1个第一图形的着色器程序为所述第N1帧图形数据帧对应的第二着色器程序。
[0022]这样,在生成每一帧图形数据帧对应的着色器程序时,可以保证需要生成着色器程序的图形的数量不会超过数量阈值,使得后续目标界面的显示过程不会造成卡顿,用户体验更好。
[0023]一种可能的实现方式中,所述方法还包括:
[0024]如果所述着色器图形池不为空,从所述着色器图形池中出栈K2个第一图形,K2为小于或等于所述数量阈值的正整数;
[0025]生成所述K2个第一图形的着色器程序;
[0026]确定所述K2个第一图形的着色器程序为所述第N1帧图形数据帧对应的第二着色器程序。
[0027]这样,可以通过着色器图形池将已经生成对应着色器程序的图形数据帧中未生成着色器程序的图形,进行存储,保证数据不会丢失,数据更加完整,更加安全。
[0028]一种可能的实现方式中,所述方法还包括:
[0029]如果所述第一数量小于或等于所述数量阈值,逐个生成所述第N1帧图形数据帧包括的第一图形的着色器程序;
[0030]确定所述第N1帧图形数据帧包括的所有第一图形的着色器程序为所述第N1帧图形数据帧对应的第二着色器程序。
[0031]这样,在图形数据帧包含未生成着色器程序的图形的数量不超过数量阈值的情况下,可以快速生成该帧图形数据帧对应的着色器程序,无需再做其它处理,效率更高。
[0032]一种可能的实现方式中,生成所述M帧图形数据帧中第N2帧图形数据帧对应的第二着色器程序,包括:
[0033]确定所述第N2帧图形数据帧包括第一图形的第二数量,所述第一图形的着色器程序未存储在所述着色器程序池中,N2为小于或等于M的正整数;
[0034]如果所述第二数量大于数量阈值,从所述第N2帧图形数据帧包括的第一图形中出栈K3个第一图形;K3为小于或等于所述数量阈值的正整数;
[0035]生成所述K3个第一图形的着色器程序;
[0036]确定所述K3个第一图形的着色器程序为所述第N2帧图形数据帧对应的第二着色器程序。
[0037]这样,在生成每一帧图形数据帧对应的着色器程序时,既可以保证需要生成着色器程序的图形的数量不会超过数量阈值,使得后续目标界面的显示过程不会造成卡顿,提高用户的体验效果,又可以提高生成每一帧图形数据帧对应的着色器程序的效率,适用性较好。
[0038]一种可能的实现方式中,所述方法还包括:
[0039]如果所述第二数量小于或等于所述数量阈值,逐个生成所述第N2帧图形数据帧包括的第一图形的着色器程序;
[0040]确定所述第N2帧图形数据帧包括的所有第一图形的着色器程序为所述第N2帧图形数据帧对应的第二着色器程序。
[0041]这样,在图形数据帧包含未生成着色器程序的图形的数量不超过数量阈值的情况下,可以快速生成该帧图形数据帧对应的着本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种着色器程序的生成方法,其特征在于,所述方法包括:确定目标界面,所述目标界面为发起图形绘制请求的应用程序的待绘制界面;根据所述目标界面,生成M帧图形数据帧,所述图形数据帧为包含所述目标界面中图形的数据帧,M为正整数;根据所述M帧图形数据帧,生成第一着色器程序,所述第一着色器程序包括所述目标界面中所有图形的着色器程序。2.根据权利要求1所述的方法,其特征在于,所述根据所述M帧图形数据帧,生成第一着色器程序,包括:逐个生成所述M帧图形数据帧中各图形数据帧对应的第二着色器程序;存储所有所述第二着色器程序至着色器程序池中;从所述着色器程序池中获取所述第一着色器程序。3.根据权利要求2所述的方法,其特征在于,生成所述M帧图形数据帧中第N1帧图形数据帧对应的第二着色器程序,包括:确定所述目标界面的着色器图形池是否为空;如果所述着色器图形池为空,确定所述第N1帧图形数据帧包括第一图形的第一数量,所述第一图形的着色器程序未存储在所述着色器程序池中,N1为小于或等于M的正整数;如果所述第一数量大于数量阈值,从所述第N1帧图形数据帧包括的第一图形中出栈K1个第一图形,K1为小于或等于所述数量阈值的正整数;将所述第N1帧图形数据帧包括的第一图形中,出栈所述K1个第一图形后,余下的第一图形,存储至所述着色器图形池中;生成所述K1个第一图形的着色器程序;确定所述K1个第一图形的着色器程序为所述第N1帧图形数据帧对应的第二着色器程序。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:如果所述着色器图形池不为空,从所述着色器图形池中出栈K2个第一图形,K2为小于或等于所述数量阈值的正整数;生成所述K2个第一图形的着色器程序;确定所述K2个第一图形的着色器程序为所述第N1帧图形数据帧对应的第二着色器程序。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:如果所述第一数量小于或等于所述数量阈值,逐个生成所述第N1帧图形数据帧包括的第一图形的着色器程序;确定所述第N1帧图形...

【专利技术属性】
技术研发人员:李宇婧
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1