买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】虚拟现实软件的绘制调用数量的检测方法及存储介质_福建天晴数码有限公司_201711364965.9 

申请/专利权人:福建天晴数码有限公司

申请日:2017-12-18

公开(公告)日:2021-04-27

公开(公告)号:CN108153655B

主分类号:G06F11/34(20060101)

分类号:G06F11/34(20060101)

优先权:

专利状态码:有效-授权

法律状态:2021.04.27#授权;2018.07.06#实质审查的生效;2018.06.12#公开

摘要:本发明公开了一种虚拟现实软件的绘制调用数量的检测方法及存储介质,方法包括:获取虚拟现实软件运行设备的设备名称;根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;获取虚拟场景中的绘制调用数量;将所述绘制调用数量与所述极限值进行比对。本发明可实现自动化的绘制调用数量的检测,且可提高绘制调用数量的检测准确性。

主权项:1.一种虚拟现实软件的绘制调用数量的检测方法,其特征在于,包括:获取虚拟现实软件运行设备的设备名称;根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;获取虚拟场景中的绘制调用数量;将所述绘制调用数量与所述极限值进行比对;所述获取虚拟场景中的绘制调用数量包括:测试程序在初始化阶段通过AppDomain类,根据lambda表达式筛选出名称为UnityEditor的程序集;通过反射的方式提取程序集中的drawCalls函数,通过该方法函数准确获取到当前虚拟场景中绘制调用的数量。

全文数据:虚拟现实软件的绘制调用数量的检测方法及存储介质技术领域[0001]本发明涉及虚拟现实技术领域,尤其涉及一种虚拟现实软件的绘制调用数量的检测方法及存储介质。背景技术[0002]随着虚拟现实技术的发展,越来越多的虚拟现实软件出现在人们的生活中。作为虚拟现实软件,沉浸感一直是用户体验的核心。目前,影响用户沉浸感的因素有很多,而虚拟场景中绘制调用的数量就是众多因素的其中之一,单个虚拟场景中绘制调用的数量越多,则对于CPU的负担越重,从而引起应用软件的卡顿现象,大幅度降低用户对于虚拟现实应用软件的沉浸感。[0003]常规的基于Unity3D开发引擎的绘制调用极限值的检测方法,一般是通过黑盒测试的方法进行,测试人员需要获取项目工程的源代码,并且在Unity3D引擎中导入项目工程,在引擎的游戏视图GameView窗口,点击右上方的状态Stats按钮,即可显示一个重叠视窗与实时渲染统计数据。统计的数据根据构建目标的不同而显示不同的内容。对于以测试绘制调用数量为构建目标的情况,统计数据则包括Batches。一个绘制调用等于呼叫一次DrawIndexedPrimitiveDXorglDrawElements0GL,等于一个Batach。即统计数据中包含的Batches的数量就是对应的虚拟场景中绘制调用的数量。通过这种方式,黑盒测试人员即可获取当前虚拟场景的绘制调用数量。[0004]但上述方法存在以下缺点:[0005]缺点1:每个虚拟场景下的绘制调用数量都需要通过黑盒测试的方式获取,并且存在代码依赖性,在开发人员未提供的工程源代码的情况下无法进行对应的数据获取以及测试,容易形成测试盲区;其次,无法通过自动化的方式进行获取,比较浪费人力成本。[0006]缺点2:通过黑盒测试的方式进行虚拟场景绘制调用数量的检测,仅能够获取当前的测试数据,想要检测这些数据在对应的移动端设备上是否合理,还需要一一对数据在设备上的体验效果进行观察,这样的测量方式存在主观性,容易导致最终的测试结果不准确。[0007]缺点3:上述方法在测试完成时,需要手工对测试数据进行记录存储以及数据的分析,并且无法自动生成测试报告,这些在测试末期都会占用较多的时间成本。发明内容[0005]本发明所要解决的技术问题是:提供一种虚拟现实软件的绘制调用数量的检测方法及存储介质,可计算所连接的移动端设备对于绘制调用的最大承受值,并且对虚拟场景中的实际绘制调用数进行检测。_9]为了解决上述技术问题,本发明采用的技术方案为:一种虚拟现实软件的绘制调用数量的检测方法,包括:[0010]获取虚拟现实软件运行设备的设备名称;_1]讎所述设备名称,从设备信息配置文件中获取臟设备的cpu主频和植染性能百分比;[0012]根据所述WU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;[0013]获取虚拟场景中的绘制调用数量;[0014]将所述绘制调用数量与所述极限值进行比对。[0015]本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:[0016]获取虚拟现实软件运行设备的设备名称;[0017]根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;[0018]根据所述cro主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;[0019]获取虚拟场景中的绘制调用数量;[0020]将所述绘制调用数量与所述极限值进行比对。[0021]本发明的有益效果在于:通过获取硬件信息,根据硬件信息计算硬件对于绘制调用的承受能力,然后与当前场景绘制调用数量进行比对,能够更加准确地定位到目前场景中绘制调用的数量是否达到设备硬件的承受峰值,从而更加准确地对绘制调用的数量进行测试。本发明可实现自动化的绘制调用数量的检测,且可提高绘制调用数量的检测准确性。附图说明[0022]图1为本发明的一种虚拟现实软件的绘制调用数量的检测方法的流程图;[0023]图2为本发明实施例一的方法流程图;[0024]图3为本发明实施例二的方法流程图;[0025]图4为本发明实施例三的通信原理示意图。具体实施方式[0026]为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图详予说明。[0027]本发明最关键的构思在于:根据硬件信息计算硬件对于绘制调用的承受能力,并与虚拟场景的绘制调用数量进行比对。[0028]请参阅图1,一种虚拟现实软件的绘制调用数量的检测方法,包括:[0029]获取虚拟现实软件运行设备的设备名称;[0030]根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;[0031]根据所述CHJ主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;[0032]获取虚拟场景中的绘制调用数量;[0033]将所述绘制调用数量与所述极限值进行比对。[0034]从上述描述可知,本发明的有益效果在于:[0035]进一步地,所述“获取虚拟现实软件运行设备的设备名称”具体为:[0036]获取虚拟现实软件运行设备的设备信息;[0037]从所述设备信息中获取设备名称。[0038]进一步地,所述“根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值”具体为:[0039]根据第一公式计算得到所述设备对应的绘制调用数量的极限值,所述第一公式为:极限值=25KXCPU主频X渲染性能百分比预设的帧率。[0040]由上述描述可知,根据绘制调用数量的极限值计算公式对获取的设备数据进行计算,从而获取准确的承受极限值,提高了测试的准确性。[0041]进一步地,所述“获取虚拟现实软件运行设备的设备名称”之前,进一步包括:[0042]在虚拟现实软件中构建服务端,并创建服务端套接字;[0043]在外部的测试框架中构建客户端,并创建客户端套接字;[0044]客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;[0045]服务端接收所述连接请求后,建立与客户端的通信连接;[0046]客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。[0047]由上述描述可知,基于CS结构,通过客户端Socket与服务端Socket之间的通信,实现测试框架与虚拟现实软件间的数据交互,有效解决源码依赖性的问题。[0048]进一步地,所述“将所述绘制调用数量与所述极限值进行比对”之后,进一步包括:[0049]将比对结果记录到结果集中;[0050]服务端将所述结果集返回至客户端;[0051]客户端根据所述结果集,生成测试报表。[0052]由上述描述可知,可自动根据比对结果生成测试报表,节约时间和人工成本。[0053]本发明还涉及一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:[0054]获取虚拟现实软件运行设备的设备名称;[0055]根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;[0056]根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;[0057]获取虚拟场景中的绘制调用数量;[0058]将所述绘制调用数量与所述极限值进行比对。[0059]进一步地,所述“获取虚拟现实软件运行设备的设备名称”具体为:[0060]获取虚拟现实软件运行设备的设备信息;[0061]从所述设备信息中获取设备名称。[0062]进一步地,所述“根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值”具体为:[0063]根据第一公式计算得到所述设备对应的绘制调用数量的极限值,所述第一公式为:极限值=25KXCPU主频X渲染性能百分比预设的帧率。[0064]进一步地,所述“获取虚拟现实软件运行设备的设备名称”之前,进一步包括:[0065]在虚拟现实软件中构建服务端,并创建服务端套接字;[0066]在外部的测试框架中构建客户端,并创建客户端套接字;[0067]客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;[0068]服务端接收所述连接请求后,建立与客户端的通信连接;[0069]客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。[0070]进一步地,所述“将所述绘制调用数量与所述极限值进行比对”之后,进一步包括:[0071]将比对结果记录到结果集中;[0072]服务端将所述结果集返回至客户端;[0073]客户端根据所述结果集,生成测试报表。[0074]实施例一[0075]请参照图2,本发明的实施例一为:一种虚拟现实软件的绘制调用数量的检测方法,包括如下步骤:[0076]S11:获取虚拟现实软件运行设备的设备信息,即获取运行虚拟现实软件的设备的设备信息。测试程序被调起后,在程序初始化时,通过Unity3d引擎提供的Systemlnf〇类,进行必要的数据获取,Systemlnfo类中的属性都是只读属性,存储着运行平台的一些信息,其中包含了设备名称、设备类型、支持的渲染目标数等信息。[0077]S12:从所述设备信息中获取设备名称;具体地,通过systemlnfo•deviceName读取设备的名称信息。虽然步骤S11中的Systemlnfo类中包含了设备信息,但是读取并使用设备名称需要通过systemlnfo•deviceName进行获取。[0078]S13:根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比。以设备名称作为关键字,在设备信息配置文件中检索该设备所对应的相关信息,其中包含了频率指设备CPU的主频,代表CPU的处理效率、设备用来提供渲染的百分比指设备在进行渲染时,消耗CHJ性能的百分比,可以理解为设备的CPU需要消耗多少性能对虚拟现实软件进行画面的渲染等。[0079]S14:根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值。[0080]NIVIDIA在GDC游戏开发者大会上提出25Kbatchsec的渲染量会使1GHZ的CPU达到100%的使用率,由此推导出设备绘制调用数量的极限值公式为:极限值=25KXCPU主频GHZX渲染性能百分比预设的帧率,其中,所述预设的帧率即虚拟现实软件预期能够运行的最优帧率。[0081]S15:获取虚拟场景中的绘制调用数量;测试程序在初始化阶段还会通过AppDomain类,根据lambda表达式UnityEditor=GetType.Anyt=t.Name==“UnityEditor”)筛选出名称为UnityEditor的程序集,该程序集为Unity3D引擎的编辑器工具类。.NetFramework中提供了反射机制,可以在加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息。通过反射的方式提取程序集中的drawCalls函数,通过该方法函数能够准确获取到当前虚拟场景中绘制调用的数量。[0082]S16:将所述绘制调用数量与所述极限值进行比对校验,并将比对结果记录到结果集中,后续可根据该结果集,生成测试报表。[0083]具体地,在该步骤之前,先创建一个用于存储比对结果的HashMap这是一种基于哈希表的Map接口的实现,此实现提供了所有可选的映射操作);在该步骤中,将绘制调用数量与极限值进行比对校验,不论绘制调用数量是否通过检测,都会被收集并且记录到HashMap中。进一步地,通过实例化一个JSONObject,对HashMap数据进行格式转化,最终转化成Json数据格式。[0084]本实施例通过获取硬件信息,根据硬件信息计算硬件对于绘制调用的承受能力,然后与当前场景绘制调用数量进行比对,能够更加准确地定位到目前场景中绘制调用的数量是否达到设备硬件的承受峰值,从而更加准确地对绘制调用的数量进行测试。同时,本实施例可实现自动化的测试流程,节约测试时间,提高测试效率。[0085]实施例二[0086]请参照图3,本实施例是实施例的进一步拓展,相同之处不再累述,区别在于,步骤S11之前,还包括如下步骤:[0087]S01:在虚拟现实软件中构建服务端,并创建服务端套接字;[0088]S02:在外部的测试框架中构建客户端,并创建客户端套接字;[0089]S03:客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;[0090]S04:服务端接收所述连接请求后,建立与客户端的通信连接;[0091]S05:客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。所述检测请求中还可以包括调用指令,根据调用指令调用对应实施例一方法的测试流程进行绘制调用数量极限值的计算和绘制调用数量的对比检测。[0092]进一步地,在步骤S16之后,服务端将所述结果集返回至客户端;客户端根据所述结果集,生成测试报表。[0093]在本实施例中,测试程序(即实施例一的方法对应的程序和服务端可以通过挂载的方式集成在虚拟现实软件中,在软件运行时创建服务端Socket,在外部的测试框架中创建客户端Socket。服务端Socket监听来自客户端Socket的连接请求,开启阻塞模式直到客户端发来连接请求。测试框架通过服务端的IP地址和端口号向服务端Socket发送连接请求。在建立通信连接后,发送移动端绘制调用数量检测请求,请求数据中包含了测试程序的调用指令以及可扩展标记语言格式的移动端设备信息配置文件,该文件在发送前将被转化为Json格式数据,该格式的数据能够被Socket进行接收和发送。服务端Socket接收到测试请求后,调用测试程序进行检测,测试程序得到结果集后,会将结果集转化为Js〇n数据格式。这些数据会返回给服务端Socket并发送到测试框架的客户端Socket进行解析处理。月艮务端Socket在执行完测试程序后会将检测的结果信息以Json数据组的格式返回给客户端Socket。测试框架会对返回数据进行解析,生成用于填充测试报表的数据组,并调用报告接口,生成测试报表。[0094]本实施例基于CS结构,通过客户端Socket与服务端Socket之间的通信,实现测试框架与虚拟现实软件间的数据交互,有效解决源码依赖性的问题。[0095]实施例三[0096]本实施例是对应上述实施例的一具体应用场景。[0097]本实施例的通信原理如图4所示。虚拟现实软件启动时,挂载的脚本组件分别调用socket创建TCP套接口,bind绑定地址和端口,listen转换主动套接口为被动套接口完成初始化服务器,并阻塞等待客户端的连接请求。[0098]测试框架在完成客户端Socket初始化后,通过服务器的地址和端口,调用connect0向服务器发送连接请求,并阻塞等待服务器应答。服务器回复应答并阻塞等待客户端发送请求数据后,客户端同样回复一个连接成功的应答,此时客户端和服务器建立通信连接。[0099]完成测试框架与虚拟现实软件之间的通信连接后,从测试框架发送绘制调用检测请求,挂载在软件上的服务端Socket接收到请求后,调用测试程序进行数据采集并返回数据列表。期间,测试框架的客户端Socket阻塞等待服务器应答。测试程序完成数据的采集后,通过Socket服务端将数据列表发送给测试框架的客户端Socket。客户端调用close向服务端Socket发送中断连接请求,服务端Socket接收到请求后,中断连接。[0100]其中,测试程序采用了集成移动端设备配置信息,在程序初始化阶段对虚拟现实软件所运行的设备的设备信息进行采集,通过设备名称作为关键字,在设备信息配置文件中检索对应的信息,从而计算出当前移动端设备能够承受绘制调用数量的极限值,并通过C#反射机制获取程序加载过程中所需要的程序集,并从程序集中提取用于获取当前虚拟场景运行时的绘制调用数量,并自动对测试数据和设备承受极限数据进行对比分析,并整合必要的测试结论数据,并转化为json格式的数据。[0101]服务端Socket返回json数据格式的数据组给测试框架的客户端Socket,并通过JsonConvert类的DeserializeObject函数对包含了数据组的json字符串进行反序列化处理。解析后的数据中包含了测试编号,对应的测试设备名称,设备的系统,设备的绘制调用数量的极限值,当前虚拟场景名称,当前绘制调用数量以及是否通过检测这些基本信息。[0102]这些数据会被统一写入数据库中,调用测试报告接口,动态读取数据库信息,生成有效的测试报表。[0103]实施例四[0104]本实施例是对应上述实施例的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现以下步骤:[0105]获取虚拟现实软件运行设备的设备名称;[0106]根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;[0107]根据所述CHJ主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;[0108]获取虚拟场景中的绘制调用数量;[0109]将所述绘制调用数量与所述极限值进行比对。[0110]进一步地,所述“获取虚拟现实软件运行设备的设备名称”具体为:[0111]获取虚拟现实软件运行设备的设备信息;[0112]从所述设备信息中获取设备名称。[0113]进一步地,所述“根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值”具体为:[0114]根据第一公式计算得到所述设备对应的绘制调用数量的极限值,所述第一公式为:极限值二25KXCPU主频X渲染性能百分比预设的帧率。[0115]进一步地,所述“获取虚拟现实软件运行设备的设备名称”之前,进一步包括:[0116]在虚拟现实软件中构建服务端,并创建服务端套接字;[0117]在外部的测试框架中构建客户端,并创建客户端套接字;[0118]客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;[0119]服务端接收所述连接请求后,建立与客户端的通信连接;[0120]客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。[0121]进一步地,所述“将所述绘制调用数量与所述极限值进行比对”之后,进一步包括:[0122]将比对结果记录到结果集中;[0123]服务端将所述结果集返回至客户端;[0124]客户端根据所述结果集,生成测试报表。[0125]综上所述,本发明提供的一种虚拟现实软件的绘制调用数量的检测方法及存储介质,通过获取硬件信息,根据硬件信息计算硬件对于绘制调用的承受能力,然后与当前场景绘制调用数量进行比对,能够更加准确地定位到目前场景中绘制调用的数量是否达到设备硬件的承受峰值,从而更加准确地对绘制调用的数量进行测试。本发明可实现自动化的绘制调用数量的检测,且可提高绘制调用数量的检测准确性。[0126]以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

权利要求:1.一种虚拟现实软件的绘制调用数量的检测方法,其特征在于,包括:获取虚拟现实软件运行设备的设备名称;根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;根据所述CHJ主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;获取虚拟场景中的绘制调用数量;将所述绘制调用数量与所述极限值进行比对。2.根据权利要求1所述的虚拟现实软件的绘制调用数量的检测方法,其特征在于,所述“获取虚拟现实软件运行设备的设备名称”具体为:获取虚拟现实软件运行设备的设备信息;从所述设备信息中获取设备名称。3.根据权利要求1所述的虚拟现实软件的绘制调用数量的检测方法,其特征在于,所述“根据所述CRJ主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值”具体为:根据弟~'公式计算得到所述设备对应的绘制调用数量的极限值,所述第一'公式为:极限值二25KXCPU主频X渲染性能百分比预设的帧率。4.根据权利要求1所述的虚拟现实软件的绘制调用数量的检测方法,其特征在于,所述“获取虚拟现实软件运行设备的设备名称”之前,进一步包括:在虚拟现实软件中构建服务端,并创建服务端套接字;在外部的测试框架中构建客户端,并创建客户端套接字;客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;服务端接收所述连接请求后,建立与客户端的通信连接;客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。5.根据权利要求4所述的虚拟现实软件的绘制调用数量的检测方法,其特征在于,所述“将所述绘制调用数量与所述极限值进行比对”之后,进一步包括:将比对结果记录到结果集中;服务端将所述结果集返回至客户端;客户端根据所述结果集,生成测试报表。6.—种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现以下步骤:获取虚拟现实软件运行设备的设备名称;根据所述设备名称,从设备信息配置文件中获取所述设备的CPU主频和渲染性能百分比;根据所述CPU主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值;获取虚拟场景中的绘制调用数量;将所述绘制调用数量与所述极限值进行比对。7.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“获取虚拟现实软件运行设备的设备名称”具体为:获取虚拟现实软件运行设备的设备信息;从所述设备信息中获取设备名称。8.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“根据所述CHJ主频、渲染性能百分比和预设的帧率,计算得到所述设备对应的绘制调用数量的极限值”具体为:根据第一公式计算得到所述设备对应的绘制调用数量的极限值,所述第一公式为:极限值=25KXCPU主频X渲染性能百分比预设的帧率。9.根据权利要求6所述的计算机可读存储介质,其特征在于,所述“获取虚拟现实软件运行设备的设备名称”之前,进一步包括:在虚拟现实软件中构建服务端,并创建服务端套接字;在外部的测试框架中构建客户端,并创建客户端套接字;客户端根据所述服务端的IP地址和端口号,向服务端发送连接请求;服务端接收所述连接请求后,建立与客户端的通信连接;客户端发送检测请求至服务端,所述检测请求包括设备信息配置文件。10.根据权利要求9所述的计算机可读存储介质,其特征在于,所述“将所述绘制调用数量与所述极限值进行比对”之后,进一步包括:将比对结果记录到结果集中;服务端将所述结果集返回至客户端;客户端根据所述结果集,生成测试报表。

百度查询: 福建天晴数码有限公司 虚拟现实软件的绘制调用数量的检测方法及存储介质

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。