一种虚拟现实设备中显示2d应用界面的方法和装置的制造方法

文档序号:9688353阅读:442来源:国知局
一种虚拟现实设备中显示2d应用界面的方法和装置的制造方法
【技术领域】
[0001]本发明涉及虚拟现实领域,特别涉及一种虚拟现实设备中显示2D应用界面的方法和装置。
【背景技术】
[0002]虚拟现实系统是一种可以创建和体验虚拟世界的计算机仿真系统,是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真,它利用计算机生成一种模拟环境,使用户沉浸到该环境中。例如,用户通过佩戴虚拟现实头盔等虚拟现实设备来完成与虚拟现实系统的交互。
[0003]近年来,安卓系统因其开源、生态环境完整的优点逐渐成为众多虚拟现实系统中操作系统的首选。但是,虚拟现实设备要求分别渲染出左眼画面和右眼画面来产生立体感,而现有的安卓应用并非为虚拟设备单独开发设计,通常都是2D应用界面,满足不了虚拟现实设备的需求,导致海量的安卓应用无法在虚拟现实系统中使用,从而出现了虚拟现实系统应用匮乏、生态环境不良的问题。

【发明内容】

[0004]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的虚拟现实设备中显示2D应用界面的方法和装置。
[0005]依据本发明的一个方面,提供了一种虚拟现实设备中显示2D应用界面的方法,包括:
[0006]获取一个或多个待显示的2D应用界面的纹理;
[0007]确定待显示的虚拟现实场景,并将所述虚拟现实场景使用OpenGL函数以左右分屏的方式写入安卓系统的帧缓存中;
[0008]将所述安卓系统的帧缓存中的内容分别绘制到虚拟现实设备的左右屏幕上,形成所述虚拟现实场景中的虚拟屏幕;
[0009]将获取的所述一个或多个待显示的2D应用界面的纹理分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上。
[0010]可选地,所述获取一个或多个待显示的2D应用界面纹理包括:
[0011]为所述一个或多个待显示的2D应用界面分别申请对应的图层;
[0012]调用安卓系统中负责显示合成的SurfaceFl inger模块,在SurfaceFl inger模块的setUpHWComposer()函数中将合成方式标记为GLES合成方式,使用GLES合成方式对各图层进行合成处理。
[0013]可选地,所述使用GLES合成方式对各图层进行合成处理包括:
[0014]确定各图层的显不关系;
[0015]通过OpenGL函数创建一个绑定到GL_TEXTURE_2D的纹理对象和一个绑定到GL_FRAMBUFFER的帧缓存对象,并将所述帧缓存对象与所述纹理对象进行关联处理;
[0016]按所述各图层的显示关系,将所述各图层中的待显示的2D应用界面绘制到所述纹理对象中。
[0017]可选地,所述将获取的所述一个或多个待显示的2D应用界面的纹理分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上包括:
[0018]从与所述纹理对象相关联的所述帧缓存对象中获取所述一个或多个待显示的2D应用界面的纹理,使用OpenGL函数分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上。
[0019]可选地,所述确定待显示的虚拟现实场景包括:通过所述虚拟现实设备的传感器得到用户头部状态数据,根据用户头部状态数据确定待显示的虚拟现实场景。
[0020]依据本发明的另一方面,提供了一种虚拟现实设备中显示2D应用界面的装置,包括:
[0021 ] 2D应用界面处理单元,用于获取一个或多个待显示的2D应用界面的纹理;
[0022]虚拟现实场景处理单元,用于确定待显示的虚拟现实场景,并将所述虚拟现实场景使用OpenGL函数以左右分屏的方式写入安卓系统的帧缓存中;
[0023]绘制单元,用于将所述安卓系统的帧缓存中的内容分别绘制到虚拟现实设备的左右屏幕上,形成所述虚拟现实场景中的虚拟屏幕;以及将获取的所述一个或多个待显示的2D应用界面的纹理分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上。
[0024]可选地,所述2D应用界面处理单元包括:
[0025]图层申请模块,用于为所述一个或多个待显示的2D应用界面分别申请对应的图层;
[0026]合成模块,用于调用安卓系统中负责显示合成的SurfaceFlinger模块,在SurfaceFl inger模块的setUpHWComposer O函数中将合成方式标记为GLES合成方式,使用GLES合成方式对各图层进行合成处理。
[0027]可选地,所述合成模块,具体用于确定各图层的显示关系;通过OpenGL函数创建一个绑定到GL_TEXTURE_2D的纹理对象和一个绑定到GL_FRAMBUFFER的帧缓存对象,并将所述帧缓存对象与所述纹理对象进行关联处理;按所述各图层的显示关系,将所述各图层中的待显示的2D应用界面绘制到所述纹理对象中。
[0028]可选地,所述绘制单元,具体用于从与所述纹理对象相关联的所述帧缓存对象中获取所述一个或多个待显示的2D应用界面的纹理,使用OpenGL函数分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上。
[0029]可选地,所述虚拟现实场景处理单元,具体用于通过所述虚拟现实设备的传感器得到用户头部状态数据,根据用户头部状态数据确定待显示的虚拟现实场景。
[0030]由上述可知,本发明的技术方案,针对现有的2D应用界面无法在虚拟现实系统中的虚拟现实设备上渲染的问题,采用了如下的技术手段:首先,获取一个或多个待显示的2D应用界面的纹理,并进一步确定待显示的虚拟现实场景,将其使用OpenGL函数以左右分屏的方式写入安卓系统的帧缓存中,并利用安卓系统读取系统帧缓存中的内容进行绘制的技术基础来实现虚拟现实场景在虚拟现实设备的左右屏幕上的显示,形成虚拟现实场景中的虚拟屏幕;最后,将获取的一个或多个待显示的2D应用界面的纹理分别绘制到左右屏幕的所述虚拟现实场景中的虚拟屏幕上,从而使得2D应用界面同时渲染出左右眼的画面,具有立体感,使得大量的现有安卓应用可以应用在虚拟现实系统中,成本低,方法简单,改善了虚拟现实系统的生态环境,适于实用。
[0031]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0032]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0033]图1示出了根据本发明一个实施例的一种虚拟现实设备中显示2D应用界面的方法的流程图;
[0034]图2示出了根据本发明一个实施例的一种虚拟现实设备中显示2D应用界面的装置的结构示意图。
【具体实施方式】
[0035]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0036]参见图1,不出了根据本发明实施例的一种虚拟现实设备中显不2D应用界面的方法的流程图,如图1所示,该方法包括:
[0037]步骤S110,获取一个或多个待显示的2D应用界面的纹理。
[0038]在安卓系统中,纹理即是加载到显卡显存中的,需要在显示设备的屏幕上显示的应用界面的具体内容,如pvr格式的图片。而以一种较复杂的情况为例,用户需要运行应用A,而在应用A启动时,还会运行附属的广告应用B,其中应用B只占用屏幕中心位置的部分进行显示。此时,还需要对多个待显示的2D应用界面进行合成处理,得到合成后的纹理。
[0039]步骤S120,确定待显示的虚拟现实场景,并将虚拟现实场景使用OpenGL函数以左右分屏的方式写入安卓系统的帧缓存中。
[0040]步骤SI30,将安卓系统的帧缓存中的内容分别绘制到虚拟现实设备的左右屏幕上,形成虚拟现实场景中的虚拟屏幕。
[0041]在安卓系统中,向安卓系统的帧缓存Framebuffer写入特定格式的数据,就意味着向屏幕输出显示内容,因此在步骤S120和步骤SI 30之间不对Framebuffer中的数据做任何处理,仅是将步骤S120中写入Framebuffer的数据内容显示在虚拟现实设备的左右屏幕上即可形成虚拟现实场景中的虚拟屏幕。具体地,可以为虚拟现实系统的左侧屏
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1