System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于纹理渲染,尤其涉及一种自动生成mipmap纹理贴图的方法及系统。
技术介绍
1、随着用户对于图像质量、游戏流畅度以及使用体验性要求的提高,厂商的显卡性能也是越来越高,针对于云计算方面的云手机和云桌面,对于虚拟gpu的需求也越来越明显。现有技术中,gpu虚拟化主要有pcie直通、sr-iov和api指令转发。其中,pcie直通由于只能1:1,而不支持1:n,所以基本不被采用;sr-iov成本高,所以采用的也较少;api指令转发,因为是通过纯软件实现,是目前云手机侧最合适的解决方案。
2、对于api指令转发的gpu虚拟化,在渲染中,纹理渲染最为重要与频繁,由于云手机的流畅度与真机暂时还存在一定的差距,所以对纹理渲染进行一定的指令优化,提高流畅度很有必要,但是现有技术缺乏有效的自动生成mipmap纹理贴图的方法,无法有效提高云手机的流畅度。
技术实现思路
1、本专利技术实施例的目的在于提供一种自动生成mipmap纹理贴图的方法及系统,旨在解决
技术介绍
中提出的问题。
2、为实现上述目的,本专利技术实施例提供如下技术方案:
3、一种自动生成mipmap纹理贴图的方法,所述方法具体包括以下步骤:
4、在goldfish层进行纹理指令拦截,更新纹理状态;
5、拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理;
6、在需要生成mipmap纹理时,计算mipmap层级,生成mipmap纹理,根据所述mi
7、作为本专利技术实施例技术方案进一步的限定,所述在goldfish层进行纹理指令拦截,更新纹理状态具体包括以下步骤:
8、上层app渲染开始时,通过api指令转发,在goldfish层进行纹理指令拦截,记录texture信息;
9、根据所述texture信息,更新纹理状态。
10、作为本专利技术实施例技术方案进一步的限定,所述拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理具体包括以下步骤:
11、拦截描画指令;
12、根据所述描画指令,读取画布大小以及记录的纹理信息;
13、根据所述画布大小和所述纹理信息,判断是否需要生成mipmap纹理。
14、作为本专利技术实施例技术方案进一步的限定,所述根据所述画布大小和所述纹理信息,判断是否需要生成mipmap纹理中:
15、通过分析纹理的颜色格式、使用频率以及base纹理与画布大小的比,综合判断是否需要生成mipmap纹理。
16、作为本专利技术实施例技术方案进一步的限定,所述通过分析纹理的颜色格式、使用频率以及base纹理与画布大小的比,综合判断是否需要生成mipmap纹理具体包括以下步骤:
17、根据所述纹理信息,计算base纹理与渲染区域大小的比;
18、判断base纹理与渲染区域大小的比是否小于0.5;
19、在base纹理与渲染区域大小的比小于0.5时,根据所述纹理信息,判断纹理的颜色格式是否为单色;
20、在纹理的颜色格式为单色时,根据所述纹理信息,获取纹理的使用频率;
21、判断所述使用频率是否为高频率;
22、在所述使用频率为高频率时,判定需要生成mipmap;
23、在所述使用频率不为高频率,但是base纹理与渲染区域大小的比小于0.125时,判定需要生成mipmap。
24、作为本专利技术实施例技术方案进一步的限定,所述在需要生成mipmap纹理时,计算mipmap层级,生成mipmap纹理,根据所述mipmap纹理进行描画渲染中:
25、通过计算缩小比率、mipmap层级以及mipmap纹理的宽高,生成mipmap纹理,根据所述mipmap纹理进行描画渲染。
26、作为本专利技术实施例技术方案进一步的限定,所述通过计算缩小比率、mipmap层级以及mipmap纹理的宽高,生成mipmap纹理,根据所述mipmap纹理进行描画渲染具体包括以下步骤:
27、根据所述纹理信息,计算缩小比率;
28、基于所述缩小比率,计算mipmap层级;
29、判断所述mipmap层级的纹理是否已经生成;
30、在所述mipmap层级的纹理未生成时,根据所述mipmap层级,计算mipmap纹理的宽高;
31、根据mipmap纹理的宽高,生成mipmap纹理并保存;
32、根据所述mipmap纹理进行描画渲染。
33、作为本专利技术实施例技术方案进一步的限定,所述计算缩小比率的公式为:
34、d=sqrt(max((ux^2+vx^2),(uy^2+vy^2)));
35、其中,ux为渲染目标宽度在x轴上的投影大小,vx为渲染目标高度在x轴上的投影大小,uy为渲染目标宽度在y轴上的投影大小,vy为渲染目标高度在y轴上的投影大小;
36、所述计算mipmap层级的公式为:
37、level=floor(log2(d+0.5));
38、其中,floor为向下取整,即舍弃小数部分;
39、所述计算mipmap纹理的宽高的公式为:
40、newwidth=basewidth/level;
41、newheight=baseheight/level;
42、其中,basewidth为纹理贴图原始宽度,baseheight为纹理贴图原始高度。
43、一种自动生成mipmap纹理贴图的系统,所述系统包括纹理指令拦截模块、纹理生成判断模块和描画渲染处理模块,其中:
44、纹理指令拦截模块,用于在goldfish层进行纹理指令拦截,更新纹理状态;
45、纹理生成判断模块,用于拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理;
46、描画渲染处理模块,用于在需要生成mipmap纹理时,计算mipmap层级,生成mipmap纹理,根据所述mipmap纹理进行描画渲染。
47、作为本专利技术实施例技术方案进一步的限定,所述纹理生成判断模块具体包括:
48、描画指令拦截单元,用于拦截描画指令;
49、纹理信息读取单元,用于根据所述描画指令,读取画布大小以及记录的纹理信息;
50、生成mipmap纹理判断单元,用于根据所述画布大小和所述纹理信息,判断是否需要生成mipmap纹理。
51、与现有技术相比,本专利技术的有益效果是:
52、本专利技术实施例通过在goldfish层进行纹理指令拦截,更新纹理状态;拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理;在需要生成mipmap纹理时,计算mipmap层级,生成mipmap纹理,根据mipmap纹理进行描画渲染本文档来自技高网...
【技术保护点】
1.一种自动生成mipmap纹理贴图的方法,其特征在于,所述方法具体包括以下步骤:
2.根据权利要求1所述的自动生成mipmap纹理贴图的方法,其特征在于,所述在Goldfish层进行纹理指令拦截,更新纹理状态具体包括以下步骤:
3.根据权利要求1所述的自动生成mipmap纹理贴图的方法,其特征在于,所述拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理具体包括以下步骤:
4.根据权利要求3所述的自动生成mipmap纹理贴图的方法,其特征在于,所述根据所述画布大小和所述纹理信息,判断是否需要生成mipmap纹理中:
5.根据权利要求4所述的自动生成mipmap纹理贴图的方法,其特征在于,所述通过分析纹理的颜色格式、使用频率以及base纹理与画布大小的比,综合判断是否需要生成mipmap纹理具体包括以下步骤:
6.根据权利要求1所述的自动生成mipmap纹理贴图的方法,其特征在于,所述在需要生成mipmap纹理时,计算mipmap层级,生成mipmap纹理,根据所述mipmap纹理进行描画渲染中:
7
8.根据权利要求7所述的自动生成mipmap纹理贴图的方法,其特征在于,所述计算缩小比率的公式为:
9.一种自动生成mipmap纹理贴图的系统,其特征在于,所述系统包括纹理指令拦截模块、纹理生成判断模块和描画渲染处理模块,其中:
10.根据权利要求9所述的自动生成mipmap纹理贴图的系统,其特征在于,所述纹理生成判断模块具体包括:
...【技术特征摘要】
1.一种自动生成mipmap纹理贴图的方法,其特征在于,所述方法具体包括以下步骤:
2.根据权利要求1所述的自动生成mipmap纹理贴图的方法,其特征在于,所述在goldfish层进行纹理指令拦截,更新纹理状态具体包括以下步骤:
3.根据权利要求1所述的自动生成mipmap纹理贴图的方法,其特征在于,所述拦截描画指令,读取纹理信息,判断是否需要生成mipmap纹理具体包括以下步骤:
4.根据权利要求3所述的自动生成mipmap纹理贴图的方法,其特征在于,所述根据所述画布大小和所述纹理信息,判断是否需要生成mipmap纹理中:
5.根据权利要求4所述的自动生成mipmap纹理贴图的方法,其特征在于,所述通过分析纹理的颜色格式、使用频率以及base纹理与画布大小的比,综合判断是否需要生成mipmap纹理具体包括以下步骤:
6...
【专利技术属性】
技术研发人员:刘跃成,毛伟平,张云龙,
申请(专利权)人:天翼云科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。