基于原语的合成的制作方法_4

文档序号:9439015阅读:来源:国知局
)和内容的实体,所述内容例如是颜色、规则表面、虚拟表面等。由此,原语可以通过各种各样的方式进行配置。例如,纯色原语是规定了颜色的基本原语,并且是不可变的。
[0077]动态颜色原语被配置为包括对于颜色对象的指针。该原语的颜色可以经由设置颜色方法来动态更新和设置。这可以用于支持各种各样的功能性,诸如以更新颜色属性以支持彩色动画。原语的其他成员也可以被动态更新。
[0078]表面原语包括对于表面和变换的指针。表面原语正在指向的该表面可以是逻辑的或虚拟的。附加地,所述变换可以经由规定了表面坐标空间的矩阵来限定。采用这两个参数,应用可以为合成引擎116提供用于限定相对于表面原语的表面位置的对于表面和变换的指针(例如位移/偏移的矩阵表示)。
[0079]各种各样不同的参数可以被用作原语的部分,所述参数可以应用于纯色、动态颜色、表面原语等。诸如变换、插值模式等的原语参数可以用于确定将作为原语组的部分被添加的内容。对于视觉件,视觉件属性可以被应用于原语的集合,并被随时更新。由此,合成引擎可以关于在屏幕上最终示出什么来提供大量自由度。例如,文本可以经由原语参数来创建,并且然后经由视觉件属性被动画化或高亮显示。
[0080]参数的示例包括矩形、颜色、不透明度、原语变换、已变换的不透明蒙版以及边框(border)模式。矩形参数可以使用浮点数来限定可用于计算宽度和高度的矩形坐标,但是还设想了可以用于最小化存储器占用和带宽的除矩形之外的其他形状,诸如三角形、凸多边形、九宫格等。对于颜色参数,取决于原语的类型(即,纯色与动态颜色),该参数可以接受针对纯色原语的值或针对动态颜色原语的对于颜色对象的指针。
[0081]针对不透明度的参数可以被设置为从零到一,其可以用于示出对于整个原语矩形或其他所限定形状的透明度。原语变换参数可以被规定为用于限定原语内容的缩放、旋转、斜移、位移或其他变换的矩阵。对于已变换的不透明蒙版,该参数可以被配置为对不透明表面(例如逻辑表面)和变换的指针。所述变换用于确定不透明纹理坐标空间。不透明表面可以通过位图来限定,其中,仅考虑阿尔法值。不透明蒙版使框架能够使原语的部分透明,诸如用于创建梯度等。
[0082]原语还可以包括用于限定经由原语限定的形状(例如是如上面所描述的矩形)的边框的边框模式的参数。边框模式可以针对形状的边来规定,诸如锯齿(aliased)、抗锯齿(ant1-aliased)、锯齿和拉伸(例如在屏幕空间中拉伸0.5个像素)、锯齿和精简(例如在屏幕空间中精简0.5个像素)等。这可以用于支持各种各样的功能性,诸如用于确保落在亚像素位置的形状的边与实际像素边界一致。
[0083]原语集合形成原语组,所述原语组可以被形成为具有再现指令的原语链表,所述再现指令限定了将关联于视觉件的内容。原语组可以包含大量原语、变换以及诸如位图和颜色资源之类的资源。全局合成系统114可以被配置为支持相互共享格式的原语组的命令缓冲器,以便避免不必要的存储器复制,外加当原语组数据从应用进程210传递到对象数据库模块204并且最终传递到合成引擎116时的冗余解析。
[0084]例如,原语组可以通过允许应用添加和移除原语以及拆分和合并原语组来更新。递增更新在避免每次更新发生时都重建整个链表方面是有益的,其仅影响列表的相对少数量的原语。
[0085]合成引擎116可以被配置为维护脏原语组的链表,并且可以被配置为在“提交”命令期间调用每一个来重新构建其缓冲器。一旦已构建,则该原语组被标记为干净的,并且可以从设备的脏列表中移除。
[0086]原语组可以包含指向由合成引擎116的再现管线读取的不同位图或不透明表面的原语。在再现过程期间,每次遇到新的表面时,当前再现被合成引擎清除,并且该新表面被设置为输入表面。然而,在不同输入纹理之间切换是昂贵的操作。因此,为了避免昂贵的纹理切换,合成引擎116可以将原语重新排序并且将原语分组到不同的批中。每批可以包含原语的列表,所述原语的每个都指向相同的颜色和不透明表面。
[0087]附加地,全局合成系统114可以被配置为支持使用共享存储器来将资源负荷从应用移动到合成引擎116以及自己实现信道传输。存储器扇区可以在内核216中创建,并且随后与合成引擎116共享用户模式218进程上下文。结果,当应用生成命令数据时,应用可以写到可被合成引擎116直接读取的存储器,由此消除在被合成引擎116处理之前发生的冗余存储器复制的绝大部分。由此,全局合成系统114可以被配置为支持基于原语的全局合成。
[0088]全局合成系统114可以暴露构建块(building block)(例如原语、原语组及对应参数、表面工厂(surface factory)、视觉件及其属性)以便于开发者构建基于富原语的和已全局优化的框架。进一步地,该框架可以在不受约束于特定再现技术的情况下来构建。可以支持各种各样不同的功能性,其示例在下面的讨论中描述并且在对应的附图中示出。
[0089]图5描述了原语组的一个示例实现方式500。原语组502包括原语链表504,该原语链表504包括纯色矩形、纹理矩形和纯色矩形。由此,这是样本的基于原语组的视觉件的示例,其包括不同的原语类型,所述不同原语类型包括纯色矩形、纹理矩形和另一纯色矩形。
[0090]图6描绘了原语组的一个示例实现方式600。原语组602包括原语链表604,该原语链表604包括原语。在该示例中,矩形尺寸被规定为(0,O, 100, 100),以及不透明度被设置为“I”。对于原语链表604中的第一原语,已设置了颜色以及等价于九十度旋转的矩阵变换。不存在任何已变换的不透明蒙版,并且边缘模式是抗锯齿。对于第二原语,已通过了阿尔法蒙版,以便留下如所示的属于笑脸的圆形形状。对于第三原语,也设置了颜色以及等价于在“X”轴和“y”轴这两者上都缩放“1.2”的矩阵变换。
[0091]此外,还规定了矩阵用于对原语链表604中的原语的每个进行位移。对于第一原语,如上面描述的,使用用于执行旋转的矩阵以及等价于“20,20”位移的“X”矩阵变换。对于第二原语,规定等价于“25,20”的矩阵变换。进一步地,对于第三原语,使用来自之前示例的等价于缩放“1.2”的矩阵变换以及“30,20”的“X”位移。合成引擎116然后可以使用图形处理器对原语链表604的这些原语进行再现,以用于在计算设备102的显示设备112上进行显示,如之前描述的。
[0092]图7描绘了通过使用合成引擎116用于再现具有被混合到单层的传输控件的视频播放器的技术比较示例700。某些常规技术玩这样的小把戏:创建透明表面或纹理,以便对用于视频和诸如聊天场景之类的其他情况的用户界面元素进行分层。其结果产生附加的双重的被缓存表面,以用于作为将被分层在表面上的元素宿主。
[0093]例如,可以规定采用具有传输控件的表面的视频,而不是使用具有透明交换链的视频来作为控件宿主来示出背景视频,所述背景视频在透明交换链上已被cookie剪切(cookie-cut)。由此,小表面可以用于作为控件宿主,并且合成引擎116可以用于将视频和控件混合到单层中,而不是进行再现全屏幕的透明交换链(两个视频存储器纹理/缓冲器)。进一步地,对单个合成引擎的使用通过相同的API可以支持对跨各种应用的内容和动画再现的同步。这样,可以使由一个应用再现的内容与从另一应用被再现内容同步。
[0094]图8描绘了使用合成引擎116的内容同步技术的示例800。一个与航天相关的问题是同步。例如,两个不同的不相关表面可以用于向终端用户合成看起来像单个表面的东西。然而,可以出现表面不能够作为用户界面中的单个元素被同步和操作的问题。
[0095]例如,变换或平移操作可以导致这些元素中的一个元素的再现相对于另一个元素滞后,从而导致如示例800中所图示的视觉件问题。因此,通过使用单个合成引擎116,这些问题可以被减少甚至消除。还设想了其他示例。
[0096]示例过程
下面的讨论描述了可以利用之前描述的系统和设备来实现的基于原语的合成技术。所述过程的每个的方面可以用硬件、固件或软件或其组合来实现。所述过程被示为规定了由一个或多个设备执行的操作的一组方框,并且不必限于所示的由相应方框执行操作的次序。在下面的讨论的部分中,将对图1-8做出参考。
[0097]图9描绘了一个示例实现方式中的过程900,在该示例实现方式中,生成具有原语的图以促使由计算设备对元素进行再现。生成图,其使用一个或多个原语描述已被规定由多个应用进行再现的元素(方框902)。例如,图400可以包括原语以及其他非基于原语的元素。
[0098]传送该图以便由单个合成引擎接收,以促使元素通过处理一个或多个原语的再现指令而被再现(方框904)。所述元素由一个或多个计算设备通过执行在所述一个或多个计算设备上的单个合成引擎来进行再现(方框906)。再现指令例如可以用于指引图形处理单元生成用于由计算设备的显示设备进行显示的元素。
[0099]示例系统和设备
图10图示了包括如参考图1描述的计算设备102的示例系统1000。示例系统1000当在个人计算机(PC)、电视设备和/或移动设备上运行应用时实现用于无缝用户体验的普适环境。服务和应用当在利用应用、播放视频游戏、观看视频等等的同时从一个设备转换到下一个设备时,对于普通用户体验在全部三种环境中基本相似地运行。
[0100]在示例系统1000中,多个设备通过中央计算设备互连。中央计算设备可以位于所述多个设备的本地,或者可以远离所述多个设备定位。在一个实施例中,中央计算设备可以是通过网络
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1