三维对象显示方法和装置制造方法

文档序号:6508799阅读:217来源:国知局
三维对象显示方法和装置制造方法
【专利摘要】本发明公开了一种三维对象显示方法和装置,属于三维显示【技术领域】。所述方法包括:通过所述第一处理单元运行第一线程和第二线程;在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于所述第二处理单元GPU中;在所述第一线程的绘制过程中,通过所述第一线程向所述第二线程发送第二显示指令,所述第二显示指令携带所述绘制成的纹理;响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理。本发明通过使用纹理作为缓存,将三维对象显示在二维UI中,纹理绘制的速度比位图绘制的速度提升了3至5倍,且由GPU为纹理分配资源,避免了占用内存资源。
【专利说明】三维对象显示方法和装置

【技术领域】
[0001]本发明涉及三维显示【技术领域】,特别涉及一种三维对象显示方法和装置。

【背景技术】
[0002]当前常用的操作系统一般采用二维的Π (User Interface,用户界面),如安卓(Android)系统。但随着系统界面研究的深入和动画技术的发展,在操作系统的很多场景中均需要在Π上展示三维的画面,以增强立体感,达到更好的界面效果。
[0003]为了将三维的画面显示在二维的Π上,可以将待显示的三维画面转化为二维位图,并进行保存,然后在二维的Π上显示得到的二维位图。
[0004]在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
[0005]将待显示的三维的画面转化为二维的位图时,需要占用CPU(Central ProcessingUnit,中央处理器)额外的内存,且转化的过程增加了时间消耗,降低了 UI显示的效率。


【发明内容】

[0006]为了解决现有技术的问题,本发明实施例提供了一种三维对象显示方法和装置。所述技术方案如下:
[0007]第一方面,提供了一种三维对象显示方法,应用于电子设备中,所述电子设备包括第一处理单元、第二处理单元图形处理器GPU和显示单元,所述显示单元能够显示三维对象和二维对象,所述方法包括:
[0008]通过所述第一处理单元运行第一线程和第二线程,所述第一线程用于将待显示三维对象绘制成纹理,所述第二线程用于基于二维用户界面Π对所述纹理进行显示;
[0009]在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于所述第二处理单元GPU中,所述第一显示指令用于对三维对象进行显示;
[0010]在所述第一线程的绘制过程中,通过所述第一线程向所述第二线程发送第二显示指令,所述第二显示指令携带所述绘制成的纹理;
[0011]响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理。
[0012]所述方法还包括:
[0013]当检测到对当前显示的纹理的操作时,触发所述第一线程根据所述操作的移动轨迹以及三维模型的旋转特性,将执行所述操作后的三维对象绘制为纹理。
[0014]在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理之前,所述方法还包括:
[0015]调用用于上下文共享的应用程序编程接口 API,使得所述第一线程和所述第二线程共享上下文信息。
[0016]在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,包括:
[0017]在接收到所述第一显示指令时,响应于所述第一显示指令,通过所述第一线程调用绘制纹理API,将所述待显示三维对象绘制成纹理。
[0018]响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理,包括:
[0019]响应于所述第二显示指令,通过所述第二线程调用纹理显示API,显示所述绘制成的纹理。
[0020]第二方面,提供了一种三维对象显示装置,所述装置包括:
[0021]处理模块,用于运行第一线程和第二线程,所述第一线程用于将待显示三维对象绘制成纹理,所述第二线程用于基于二维用户界面Π对所述纹理进行显示;
[0022]纹理绘制模块,用于在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于所述第二处理单元GPU中,所述第一显示指令用于对三维对象进行显示;
[0023]指令发送模块,用于在所述第一线程的绘制过程中,通过所述第一线程向所述第二线程发送第二显示指令,所述第二显示指令携带所述绘制成的纹理;
[0024]纹理显示模块,用于响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理。
[0025]所述装置还包括:
[0026]操作绘制模块,用于当检测到对当前显示的纹理的操作时,触发所述第一线程根据所述操作的移动轨迹以及三维模型的旋转特性,将执行所述操作后的三维对象绘制为纹理。
[0027]所述装置还包括:
[0028]上下文共享模块,用于调用用于上下文共享的应用程序编程接口 API,使得所述第一线程和所述第二线程共享上下文信息。
[0029]所述纹理绘制模块用于在接收到所述第一显示指令时,响应于所述第一显示指令,通过所述第一线程调用绘制纹理API,将所述待显示三维对象绘制成纹理。
[0030]所述纹理显示模块用于响应于所述第二显示指令,通过所述第二线程调用纹理显示API,显示所述绘制成的纹理。
[0031]本发明实施例提供的技术方案带来的有益效果是:
[0032]本发明实施例提供的方法和装置,通过使用纹理作为缓存,将三维对象显示在二维Π中,纹理绘制的速度比位图绘制的速度提升了 3至5倍,且由GPU为纹理分配资源,避免了占用内存资源。

【专利附图】

【附图说明】
[0033]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034]图1是本发明实施例提供的一种三维对象显示方法的流程图;
[0035]图2是本发明实施例提供的一种三维对象显示方法的流程图;
[0036]图3是本发明实施例提供的一种三维对象显示装置结构示意图。

【具体实施方式】
[0037]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038]图1是本发明实施例提供的一种三维对象显示方法的流程图。该方法应用于电子设备中,该电子设备包括第一处理单元、第二处理单元GPU (Graphic Processing Unit,图形处理器)和显示单元,该显示单元能够显示三维对象和二维对象,参见图1,该方法包括:
[0039]101:通过该第一处理单元运行第一线程和第二线程,该第一线程用于将待显示三维对象绘制成纹理,该第二线程用于基于二维用户界面Π对该纹理进行显示;
[0040]102:在接收到第一显示指令时,响应于该第一显示指令,通过该第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于该第二处理单元GPU中,该第一显示指令用于对三维对象进行显示;
[0041]其中,该第一线程可以为三维绘画线程,能够将待显示三维对象绘制成纹理。
[0042]一般地,该第二处理单元GPU可以为纹理分配内存资源,将绘制成的纹理保存于该第二处理单元GPU中,能够避免占用CPU的内存资源。
[0043]103:在该第一线程的绘制过程中,通过该第一线程向该第二线程发送第二显示指令,该第二显示指令携带该绘制成的纹理;
[0044]其中,该第二线程可以为二维UI线程,能够对二维的UI界面进行处理和显示。
[0045]104:响应于该第二显示指令,通过该第二线程显示该绘制成的纹理。
[0046]相较于将三维对象转化为二维位图而言,将三维对象绘制成纹理的速度提升了 3至5倍,降低了时间消耗。且由于纹理所占用的资源由GPU分配,避免了占用内存资源。
[0047]本发明实施例提供的方法,通过该第一线程将待显示三维对象绘制成纹理,通过该第二线程显示该绘制成的纹理。通过使用纹理作为缓存,将三维对象显示在二维Π中,纹理绘制的速度比位图绘制的速度提升了 3至5倍,且由GPU为纹理分配资源,避免了占用内存资源。
[0048]可选地,该方法还包括:
[0049]当检测到对当前显示的纹理的操作时,触发该第一线程根据该操作的移动轨迹以及三维模型的旋转特性,将执行该操作后的三维对象绘制为纹理。
[0050]可选地,在接收到第一显示指令时,响应于该第一显示指令,通过该第一线程将待显示三维对象绘制成纹理之前,该方法还包括:
[0051]调用用于上下文共享的应用程序编程接口 API,使得该第一线程和该第二线程共享上下文信息。
[0052]可选地,在接收到第一显示指令时,响应于该第一显示指令,通过该第一线程将待显示三维对象绘制成纹理,包括:
[0053]在接收到该第一显示指令时,响应于该第一显示指令,通过该第一线程调用绘制纹理API,将该待显示三维对象绘制成纹理。
[0054]可选地,响应于该第二显示指令,通过该第二线程显示该绘制成的纹理,包括:
[0055]响应于该第二显示指令,通过该第二线程调用纹理显示API,显示该绘制成的纹理。
[0056]上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再
--赘述。
[0057]图2是本发明实施例提供的一种三维对象显示方法的流程图,参见图2,该方法包括:
[0058]201:通过该第一处理单元运行第一线程和第二线程,该第一线程用于将待显示三维对象绘制成纹理,该第二线程用于基于二维Π对该纹理进行显示;
[0059]202:在接收到第一显示指令时,响应于该第一显示指令,通过该第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于该第二处理单元GPU中,该第一显示指令用于对三维对象进行显示;
[0060]其中,该绘制纹理API可以为openGL、DireCt3D等,具体的绘制纹理API可以由技术人员在开发时设置,还可以由用户在使用过程中设置,本发明实施例对此不做限定。该纹理可以为预先创建的纹理对象。
[0061]在本发明实施例中,该待显示三维对象可以为三维模型中已有的三维对象,当接收到在二维用户显示界面中显示该待显示三维对象的指令时,创建第一线程,由第一线程获取该待显示三维对象,在绘制纹理时,通过调用该绘制纹理API,将该待显示三维对象加载到该纹理对象中。
[0062]203:在该第一线程的绘制过程中,通过该第一线程向该第二线程发送第二显示指令,该第二显示指令携带该绘制成的纹理;
[0063]在本发明实施例中,可以在该第一线程绘制纹理的过程中,即向该第二线程发送该第二显示指令;还可以在该第一线程绘制纹理完成后,向该第二线程发送该第二显示指令,本发明实施例对此不做限定。
[0064]本发明实施例中,在步骤203之前,该方法还包括:调用用于上下文共享的API,使得该第一线程和该第二线程共享上下文信息。
[0065]其中,线程的上下文是指该线程的运行环境,该上下文信息包括该线程的寄存器数据、栈空间资源等信息。不同线程的上下文信息不能共享。
[0066]具体地,通过调用用于上下文共享的API,使得该第一线程和该第二线程共享上下文信息,便于该第一线程和该第二线程共同访问绘制的纹理。
[0067]204:响应于该第二显示指令,通过该第二线程显示该绘制成的纹理。
[0068]在步骤203和步骤204中,在该第一线程将该待显示三维对象绘制成纹理的过程中,该第一线程向该第二线程发送该第二显示指令,该第二显示指令携带该绘制成的纹理,该第二线程在接收到该显示指令后,通过调用纹理显示API,显示该纹理。
[0069]进一步地,由于该第二线程用于对二维的UI界面进行处理和显示,在接收到该第一线程发送的显示指令时,该第二线程还可能在执行其他调用或操作,也即是该第二线程还可能会存在尚未处理的Π界面。因此,当该第二线程接收到该显示指令后,通过调用纹理显示API,显示该纹理,包括:当该第二线程接收到该显示指令,且该第二线程中存在未处理的UI界面时,对该未处理的UI界面进行处理,当将所有的UI界面处理完成时,通过调用该纹理显示API,显示该纹理。需要说明的是,该步骤为可选步骤,本发明实施例对于该第二线程对Π界面和该显示指令的处理顺序不做限定。
[0070]205:当检测到对当前显示的纹理的操作时,触发该第一线程根据该操作的移动轨迹以及三维模型的旋转特性,将执行该操作后的三维对象绘制为纹理。
[0071]在本发明实施例中,可能会检测到用户对当前显示的纹理的操作,此时可以触发该第一线程根据该操作的移动轨迹和三维模型的旋转特性,将执行该操作后的三维对象绘制为纹理。
[0072]例如,当检测到对当前显示的纹理的向右旋转操作时,触发该第一线程根据该向右旋转操作的移动轨迹以及三维模型的旋转特性,将向右旋转后的三维对象绘制成纹理。
[0073]本发明实施例提供的方法,通过该第一线程将待显示三维对象绘制成纹理,通过该第二线程显示该绘制成的纹理。通过使用纹理作为缓存,将三维对象显示在二维Π中,纹理绘制的速度比位图绘制的速度提升了 3至5倍,且由GPU为纹理分配资源,避免了占用内存资源。
[0074]图3是本发明实施例提供的一种三维对象显示装置结构示意图,参见图3,所述装置包括:
[0075]处理模块301,用于运行第一线程和第二线程,该第一线程用于将待显示三维对象绘制成纹理,该第二线程用于基于二维用户界面UI对该纹理进行显示;
[0076]纹理绘制模块302,用于在接收到第一显示指令时,响应于该第一显示指令,通过该第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于该第二处理单元GPU中,该第一显示指令用于对三维对象进行显示;
[0077]指令发送模块303,用于在该第一线程的绘制过程中,通过该第一线程向该第二线程发送第二显示指令,该第二显示指令携带该绘制成的纹理;
[0078]纹理显示模块304,用于响应于该第二显示指令,通过该第二线程显示该绘制成的纹理。
[0079]该装置还包括:
[0080]操作绘制模块,用于当检测到对当前显示的纹理的操作时,触发该第一线程根据该操作的移动轨迹以及三维模型的旋转特性,将执行该操作后的三维对象绘制为纹理。
[0081]该装置还包括:
[0082]上下文共享模块,用于调用用于上下文共享的应用程序编程接口 API,使得该第一线程和该第二线程共享上下文信息。
[0083]该纹理绘制模块302用于在接收到该第一显示指令时,响应于该第一显示指令,通过该第一线程调用绘制纹理API,将该待显示三维对象绘制成纹理。
[0084]该纹理显示模块304用于响应于该第二显示指令,通过该第二线程调用纹理显示API,显示该绘制成的纹理。
[0085]本发明实施例提供的装置,通过使用纹理作为缓存,将三维对象显示在二维Π中,纹理绘制的速度比位图绘制的速度提升了 3至5倍,且由GPU为纹理分配资源,避免了占用内存资源。
[0086]需要说明的是:上述实施例提供的三维对象显示的装置在三维对象显示时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的三维对象显示的装置与三维对象显示的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0087]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0088]以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种三维对象显示方法,应用于电子设备中,所述电子设备包括第一处理单元、第二处理单元图形处理器和显示单元,所述显示单元能够显示三维对象和二维对象,所述方法包括: 通过所述第一处理单元运行第一线程和第二线程,所述第一线程用于将待显示三维对象绘制成纹理,所述第二线程用于基于二维用户界面瓜对所述纹理进行显示; 在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于所述第二处理单元中,所述第一显示指令用于对三维对象进行显示; 在所述第一线程的绘制过程中,通过所述第一线程向所述第二线程发送第二显示指令,所述第二显示指令携带所述绘制成的纹理; 响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当检测到对当前显示的纹理的操作时,触发所述第一线程根据所述操作的移动轨迹以及三维模型的旋转特性,将执行所述操作后的三维对象绘制为纹理。
3.根据权利要求1所述的方法,其特征在于,在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理之前,所述方法还包括: 调用用于上下文共享的应用程序编程接口仙I,使得所述第一线程和所述第二线程共享上下文信息。
4.根据权利要求1所述的方法,其特征在于,在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,包括: 在接收到所述第一显示指令时,响应于所述第一显示指令,通过所述第一线程调用绘制纹理仙I,将所述待显示三维对象绘制成纹理。
5.根据权利要求1所述的方法,其特征在于,响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理,包括: 响应于所述第二显示指令,通过所述第二线程调用纹理显示仙I,显示所述绘制成的纹理。
6.一种三维对象显示装置,其特征在于,所述装置包括: 处理模块,用于运行第一线程和第二线程,所述第一线程用于将待显示三维对象绘制成纹理,所述第二线程用于基于二维用户界面瓜对所述纹理进行显示; 纹理绘制模块,用于在接收到第一显示指令时,响应于所述第一显示指令,通过所述第一线程将待显示三维对象绘制成纹理,并将绘制成的纹理保存于所述第二处理单元⑶口中,所述第一显示指令用于对三维对象进行显示; 指令发送模块,用于在所述第一线程的绘制过程中,通过所述第一线程向所述第二线程发送第二显示指令,所述第二显示指令携带所述绘制成的纹理; 纹理显示模块,用于响应于所述第二显示指令,通过所述第二线程显示所述绘制成的纹理。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括: 操作绘制模块,用于当检测到对当前显示的纹理的操作时,触发所述第一线程根据所述操作的移动轨迹以及三维模型的旋转特性,将执行所述操作后的三维对象绘制为纹理。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括: 上下文共享模块,用于调用用于上下文共享的应用程序编程接口仙I,使得所述第一线程和所述第二线程共享上下文信息。
9.根据权利要求6所述的装置,其特征在于,所述纹理绘制模块用于在接收到所述第一显示指令时,响应于所述第一显示指令,通过所述第一线程调用绘制纹理仙I,将所述待显示三维对象绘制成纹理。
10.根据权利要求6所述的装置,其特征在于,所述纹理显示模块用于响应于所述第二显示指令,通过所述第二线程调用纹理显示仙I,显示所述绘制成的纹理。
【文档编号】G06T17/00GK104424661SQ201310373784
【公开日】2015年3月18日 申请日期:2013年8月23日 优先权日:2013年8月23日
【发明者】任飞 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1