预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局*CN103455356A*(12)发明专利申请(10)申请公布号(10)申请公布号CNCN103455356103455356A(43)申请公布日2013.12.18(21)申请号201310406709.7(22)申请日2013.09.05(71)申请人中国计量学院地址310018浙江省杭州市下沙高教园区学源街258号(72)发明人王秀敏张麒单良(51)Int.Cl.G06F9/445(2006.01)G06F9/46(2006.01)G06T15/00(2011.01)权权利要求书1页利要求书1页说明书3页说明书3页附图1页附图1页(54)发明名称多核移动设备上3D模型的并发加载及渲染方法(57)摘要本发明涉及一种在多核移动设备上的3D模型并发加载及渲染方法,本发明包括以下步骤:以当前设备的CPU核心数作为线程池的容量来创建线程池。然后分别为存于外存设备上的每个3D模型文件分别创建3D模型数据加载任务。再为每个3D模型分别创建渲染任务。将所有数据加载任务提交到线程池的缓冲队列中,由线程池并发执行数据加载任务。等数据加载任务全部执行完毕之后,再将渲染任务提交到线程池的缓冲队列中,由线程池并发执行渲染任务。最后等所有渲染任务执行完毕后,销毁线程池释放系统资源。CN103455356ACN103456ACN103455356A权利要求书1/1页1.多核移动设备上3D模型的并发加载及渲染方法,其特征包括以下步骤:步骤一:获取当前移动设备的CPU核心数,具体是:根据移动设备所使用的操作系统,直接使用操作系统提供的API或者通过判断文件系统中存放CPU信息的文件数来获取当前移动设备的CPU核心数。步骤二:创建容量为CPU核心数的线程池,具体是:创建整型的线程池数变量,将该变量的值设置为由步骤一获取的CPU核心数;以整型的线程池数变量作为线程池的容量参数,使用移动设备所使用的操作系统的应用程序开发工具包中的线程池类来创建容量为CPU核心数的线程池。步骤三:为每个3D模型文件分别创建异步数据加载任务,具体是:先遍历存于外存设备上的3D模型文件,获取每个模型文件的存放路径,并且置于数组中;再创建异步数据加载任务,具任务流程是:流程一:根据存于数组中的3D模型文件的文件路径打开文件I/O;流程二:抽取存于外存设备上的3D模型文件的数据,包括:顶点数据、法向量数据、纹理坐标数据、面数据、材质数据;流程三:将抽取的3D模型数据单独封装成一个数据对象。步骤四:为每个3D模型分别创建异步渲染任务,渲染任务流程具体是:流程一:使用步骤三封装的3D模型数据对象中的3D模型数据,为画笔绑定顶点数据,法向量数据,纹理坐标数据、面数据,并且设置材质特性;流程二:调用OpenGlES的gl.glDrawElements函数来渲染3D模型。步骤五:由线程池并发执行所有的异步数据加载任务,具体是:将由步骤三创建的所有异步数据加载任务提交到由步骤二所创建的线程池的缓冲队列中;启动线程池,并发地执行缓冲队列中所有异步数据加载任务。步骤六:由线程池并发执行所有的异步渲染任务,具体是:等步骤五的异步数据加载任务全部执行完毕后,将所有的渲染任务提交到由步骤二所创建的线程池的缓冲队列中;启动线程池,并发地执行缓冲队列中所有异步渲染任务;等所有异步渲染任务执行完毕后,销毁线程池释放系统资源。2CN103455356A说明书1/3页多核移动设备上3D模型的并发加载及渲染方法技术领域[0001]本发明属于嵌入式软件领域。尤其涉及一种在多核移动设备上的3D模型并发加载及渲染方法。背景技术[0002]随着嵌入式技术的不断发展,以智能手机、平板电脑为首的移动设备得到了迅猛的发展。移动设备的中央处理器从以前的单核心一直发展到现在的双核心、四核心甚至是八核心。在3D应用方面,多核移动设备不但能展示复杂的3D图形,甚至能运行大型的3D游戏。[0003]对于复杂场景的3D应用来说,需要加载及渲染多个3D模型。现有的方法是先将所有的3D模型文件以串行的方式加载至内存中,然后以串行的方式逐个渲染。然而在多核移动设备中,这种串行的3D处理方法并不能发挥多核处理器的优势来提高3D处理速度。发明内容[0004]本发明所需要解决的技术问题在于提供一种在多核移动设备上的3D模型并发加载及渲染方法。[0005]本发明解决技术问题所采取的技术方案如下:[0006]在加载及渲染3D模型前先判断当前移动设备的CPU核心数。以当前设备的CPU核心数作为线程池的容量来创建线程池。然后分别为存于外存设备上的每个3D模型文件分别创建3D模型数据加载任务。数据加载任务用来加载3D模型文件的顶点数据、法向量数据、纹理坐标数据、面数据、材质数据至内存。再为每个3D模型分别创建渲染任务。最后再将所