CN106062705B - 跨平台渲染引擎 - Google Patents

跨平台渲染引擎 Download PDF

Info

Publication number
CN106062705B
CN106062705B CN201580010299.1A CN201580010299A CN106062705B CN 106062705 B CN106062705 B CN 106062705B CN 201580010299 A CN201580010299 A CN 201580010299A CN 106062705 B CN106062705 B CN 106062705B
Authority
CN
China
Prior art keywords
content
application
description
content description
platform
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201580010299.1A
Other languages
English (en)
Other versions
CN106062705A (zh
Inventor
B·威特曼
D·麦克唐纳
M·Y·乔
F·乌哈克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN106062705A publication Critical patent/CN106062705A/zh
Application granted granted Critical
Publication of CN106062705B publication Critical patent/CN106062705B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

一种跨平台渲染引擎。跨平台渲染引擎充当应用与操作系统之间的中介,以用于将应用内容显示在屏幕上,从而允许软件开发者编写与平台无关的应用代码。应用以描述待显示的内容的资源高效的内容描述的形式将内容发送至跨平台渲染引擎。进而,跨平台渲染引擎存储内容描述,并且根据需要将根据内容描述所生成的光栅化的图像提供至合成器。在对应于合成器所需要的纹理的内容描述不可用的情况下,跨平台渲染引擎从应用中拉取出内容描述。通过代表应用从用户界面线程产生经光栅化的图像而不是等待应用线程,跨平台渲染引擎改进应用的整体响应性,并且带来更好的用户体验。

Description

跨平台渲染引擎
背景技术
在多个平台上可用的软件产品(即,跨平台产品)比单平台产品提供更大的用户基数。软件开发者通常想要提供跨那些平台的一致的用户体验(即,外观和感觉),以使得熟悉一个平台上的软件产品的用户将立即对另一个平台上的相同的软件产品感到舒服。
用于在屏幕上显示内容的机制在运行不同操作系统的平台间大不相同。例如,一些桌面操作系统不包括用于将来自不同的应用的内容在桌面上进行合成(即,组合)的功能。相反,每个应用都负责创建并更新屏幕图像,并且使图像被显示。尽管一些操作系统提供了合成内容以供显示的方式,但每个操作系统都具有其自身独特的方式来完成该任务。该不一致性要求软件开发者学习如何与软件产品所移植至的每个不同的操作系统进行接合。
除了简单地需要软件开发者学习图形功能的特定于平台的实现,实现差异还可以需要大体上重写代码,目的是复制不同平台上的用户体验。每次重写都产生引入新的错误的可能性,并且需要额外的质量保证测试。当操作系统不提供所需要的功能或者与所期望的不同地执行功能时,在该平台上提供一致的用户体验可能是不切实际的(如果不是不可能的)。
即使当功能被复制时,应用可能在效率和响应性方面而在各种平台之间不同。这可以是以下因素所造成的,例如:软件开发者对每个操作系统的熟悉度和经验的水平的不同、在各种操作系统上可用的组成功能的优势和劣势的不同、以及硬件定时约束的不同。
历史上,在一些应用中,用户界面线程一直负责应用的所有功能,包括:对应用逻辑和规则进行应用、处理对应用的输入、以及向用户呈现应用内容。应用的响应性至少部分地基于用户界面线程多快速地处理输入并渲染对应用内容的改变。当由用户界面线程来处理光栅化时,如果当需要内容更新时用户界面线程繁忙,则应用将出现未响应,这是因为直到用户界面线程完成其当前的任务为止才能进行光栅化。为了处理与触摸屏相关联的增加的处理要求,已经创建了专用应用线程来将应用响应性与驱动用户界面的代码进行去耦合。
对应用内容进行渲染以供显示仍然是由应用线程来控制的,并且不受益于该分离。如果当需要渲染时应用线程忙于对应用内容执行操作,则将渲染将会被延迟直至操作完成为止。如果应用的部分移动到还没有被实现(即,渲染或更新)的屏幕的部分中,则应用可能被视为未响应。当应用线程没有在初始触摸输入的几帧内对应用内容进行光栅化时,可能发生这种情况。例如,在一个操作系统中,应当注意的是,如果应用线程没有在通过滑动一个人的手指而发起拖动(pan)的大约四帧内对应用内容进行光栅化,则应用开始出现未响应。始终保证来自应用线程的该水平的响应性是困难的。
随着更新和补丁的开发,这些问题在软件产品的整个使用寿命期间继续。关于这些和其它考虑而进行了本发明。尽管已经讨论了相对具体的问题,但应当理解的是,在本文中所公开的实施例不应该限于解决在背景技术中所标识的具体问题。
发明内容
提供了该发明内容以用简化的形式介绍在下文的具体实施方式部分中所进一步描述的概念的选择。该发明内容不旨在标识所要求保护的主题的关键特征或本质特征,也不旨在作为帮助用来确定所要求保护的主题的范围。
实施例提供了渲染并显示用户界面和内容项目的计算机生成的显示组件的系统。该系统包括能够经由屏幕以图形向用户显示应用内容的计算设备。跨平台渲染引擎充当在生成内容的应用与在屏幕上显示内容的合成器之间的中介。跨平台渲染引擎允许应用功能跨各种平台的一致的实现,这进而得到一致的用户体验。
除了在由合成器所维持和显示的表面上直接绘制内容,应用还可以向跨平台渲染引擎绘制内容描述。内容描述是原始的应用内容与在屏幕上显示的经光栅化的纹理之间的中间表示。每个内容描述都描述如何绘制应用内容的不同的片段(例如,矩形)以及那些不同的片段之间的关系。跨平台渲染引擎的实施例将这些描述转换成特定于平台的显示组件以供在屏幕上呈现。跨平台渲染引擎的实施例可以代表应用来控制和操纵对中间表示的渲染,以提供额外的功能并创建更积极响应的应用。
当应用提供内容描述而不是应用内容的经光栅化的图像本身时,跨平台渲染引擎可以提供更大的价值。这是因为内容描述在资源使用方面比对应的经光栅化的图像便宜得多,跨平台渲染引擎能够与纹理所保存的相比存储更多的应用内容的表示,这允许跨平台渲染引擎在许多实例中对用户交互进行响应,而不是调用回到应用。这提供了显著的机会来在对应用内容进行渲染时增加性能,并且改进应用的响应性。
为了以及时的方式显示内容以使得应用保持对用户响应并且最小化在接收到用户输入与对屏幕进行更新之间的用户可感知的延迟的量,跨平台渲染引擎包括在不同的处理线程上运行的组件,所述在不同的处理线程上运行的组件包括在应用线程上运行的前端以及在用户界面线程上运行的后端。应用线程是负责应用的主要功能的处理线程。应用与跨平台引擎之间的交互在应用线程上进行。用户界面线程是对来自合成器的请求进行响应并且创建包含应用内容的显示层的处理线程,其中,显示图像(例如,位图)被加入所述显示层中。跨平台渲染引擎所提供的效率和响应性是通过使用所存储的内容描述并且使用拉取模型来从应用中获取内容而达成的。当区域需要视觉更新时,后端从应用中拉取出更新,而不是使应用向合成器推送更新。
附图说明
通过参考以下附图,本公开的进一步的特征、方面、和优点将变得更好地被理解,其中,元素不成比例以便更清楚地示出细节,并且其中,几个视图通篇中相同的附图标记指代相同的元素。
图1是用于渲染并显示用户界面和内容项目的计算机生成的显示组件的系统的一个实施例的框图。
图2是示出了适用于实现跨平台渲染引擎的系统的一个实施例的高级系统架构图。
图3是示出了跨平台渲染引擎与应用之间的交互的一个实施例的流程图。
图4A-D示出了针对包含三个内容描述的内容描述合成的内容描述协调的示例。
图5A示出了在给定具有多个虚拟纹理的文档中的经选择的预取边界的情况下,可用于进行缓存的虚拟纹理内容描述的示例。
图5B示出了在给定具有由多个瓦片组成的单个虚拟纹理的文档中的经选择的预取边界的情况下,可用于进行缓存的虚拟纹理内容描述的示例。
图6A示出了使用常规混合模式而根据内容描述来渲染的应用内容的示例。
图6B示出了在没有常规混合模式支持的情况下所得出的虚拟纹理。
图7A示出了使用下逆混合模式而根据内容描述来渲染的应用内容的示例。
图7B示出了在没有下逆模式支持的情况下所得出的虚拟纹理。
图8A示出了使用逆混合模式而根据内容描述来渲染的应用内容的示例。
图8B示出了在没有逆模式支持的情况下所得出的虚拟纹理。
图9是跨平台渲染引擎方法的一个实施例的高级流程图。
图10是示出了可以利用其实践本发明的计算设备的物理组件的一个实施例的框图。
图11A和11B是可以利用其实践本发明的实施例的移动计算设备的简化的框图。
具体实施方式
参考形成了本文的一部分并且示出了具体的示例性实施例的附图以在下文中更加充分地描述了各种实施例。然而,实施例可以以不同的形式来实现,并且不应该被理解为限于在本文中所阐述的实施例;相反,提供了这些实施例以使得该公开将是彻底的和完整的,并且将会向本领域技术人员完全传达实施例的范围。实施例可以被实践为方法、系统、或设备。从而,实施例可以采取硬件实现、完全软件实现、或组合了软件和硬件方面的实现的形式。因此,以下的详细描述将不被理解为限制意义。
在本文中描述并在附图中示出了跨平台渲染引擎的各种实施例。跨平台渲染引擎充当应用与操作系统之间的中介,以用于存储描述应用内容的指令,从而允许软件开发者编写与平台无关的应用代码。应用将内容以内容描述的形式发送至跨平台渲染引擎,其中,所述内容描述可以用于对应用内容的经光栅化的图像进行渲染以供显示。在与合成器所需要的纹理相对应的内容描述不可用的情况下,跨平台渲染引擎从应用中拉取出内容描述。跨平台渲染引擎可以代表应用根据用户界面线程上的内容描述来对图像进行光栅化,而不是等待应用线程,这改进了应用的整体响应性并带来更好的用户体验。跨平台渲染引擎的实施例可以通过在将经光栅化的图像渲染至合成器之前代表应用对所存储的内容描述进行操纵,来改变应用内容的外观。
图1是用于渲染并显示用户界面和内容项目的计算机生成的显示组件的系统的一个实施例的框图。系统100包括能够经由屏幕104以图形向用户显示应用内容的计算设备102。合适的计算设备的示例包括但不限于,台式计算机、膝上型计算机、平板或平面计算机、智能电话、以及智能家电。在各种实施例中,屏幕还可以包括用于从用户处经由触笔(例如,用户的手指或数字笔)而接收触摸输入的数字转换器。
在显示表面104上显示示例软件应用用户界面和示例相关联的用户内容。用户界面106(即,应用)示出了多种软件应用所支持的用户界面和相关联的用户内容,所述多种软件应用包括但不限于,文字处理应用、电子表格应用、幻灯片演示应用、电子邮件应用、笔记本应用、以及日历应用。即,用户界面106示出了可以被显示到计算机支持的显示表面104上以用于根据相关联的软件应用功能进行查看和使用的图形显示组件中的任何一个组件。用户界面106示出了具有多个控件108、服务窗格110、以及用户内容显示区域112的文字处理应用用户界面。应当理解的是,所示出的用户界面106仅仅是出于示例的目的,而不是对可以根据在本文中所描述的发明的实施例而显示和管理的大量和多种类型的图形显示元件的限制。
跨平台渲染引擎120示出了将特定于平台的请求和响应映射至与平台无关的请求和响应的软件应用。这些请求和响应用于在计算机支持的显示表面104上呈现软件应用用户界面(UI)的显示组件(例如,按钮、控件、搜索功能、帮助功能、菜单、或者工具条)以及用户内容(例如,文本、文档、照片、图片、或表格)。为了方便起见,软件应用用户界面的显示组件和由应用所消耗的用户内容单独地或共同被称为应用内容。
跨平台渲染引擎充当生成内容的应用与在屏幕上显示内容的合成器之间的中介。跨平台渲染引擎120支持对应用内容的描述(如内容描述122)的创建,其中可以使用特定于平台的命令来根据所述内容描述来创建显示图像(例如,表示各种显示组件的位图)。这允许在不同的平台上重新使用用于绘制应用内容的应用代码而不对其进行修改,或者在一些情况下,进行与编写特定于平台的应用代码相比有限的修改。另外,跨平台渲染引擎120可以可操作以代表应用来操纵显示层并且重新渲染应用内容。跨平台渲染引擎允许跨各种平台的应用功能的一致的实现,这进而产生一致的用户体验。
内容描述是原始的应用内容与在屏幕上所显示的纹理(即,光栅图像)之间的中间表示。除了在由合成器所维持和显示的表面上直接绘制内容,应用还可以以内容描述的形式向跨平台渲染引擎进行绘制。每个内容描述都描述如何绘制应用内容的不同的片段(例如,矩形)以及那些不同的片段之间的关系。跨平台渲染引擎将这些描述转换成特定于平台的显示组件以供在屏幕上呈现。在各种实施例中,内容描述可以是特定于平台的或与平台无关的。例如,可以将内容描述编写为特定于平台的图形库命令的序列(例如,Direct2D或Direct3D命令列表)、与平台无关的向量图形描述(例如,路径)、或者特定于平台或与平台无关的内容描述语言、对象、或结构。
因为内容描述是可以根据其来渲染应用内容的对应用内容的描述,而不是应用内容的经光栅化的图像本身,因此所述内容描述在资源使用方面是便宜的。在大多数实例中,内容描述比它们表示的对应的纹理内容消耗显著较少的资源。对于例如但不限于文字处理应用、电子表格应用、演示应用、电子邮件客户端、日历应用、任务管理应用、以及网络浏览器应用的应用而言,给定的文档中的大多数内容都足够简单,以使得内容描述在存储器使用方面比对应的纹理内容高效大约50倍到大约100倍之间。利用内容描述所高效处理的简单内容的示例通常包括但不限于文本运行、路径(即,向量图形)、以及小图标/图(例如,低分辨率和/或颜色深度光栅图像)。由于内容描述是资源高效的,因此跨平台渲染引擎能够与纹理所保存的相比存储更多的应用内容的表示,这允许跨平台渲染引擎在许多实例中代表应用对用户交互做出响应,而不是调用回到应用。这提供了显著的机会来在对应用内容进行渲染时增加性能,并且改进应用的响应性。
额外地,将内容描述存储在主存储器中而不是视频存储器中,由于在大多数计算设备中,视频存储器的存储容量与主存储器相比是有限的,因此这是重要的。作为结果,跨平台渲染引擎可以与能够由合成器所存储的相比保存更多数量的中间表示。尽管内容描述可以保存复杂的内容(例如,3D图形),但由于复杂的内容必须在内容描述中被引用之前进行光栅化,并且内容描述将简单地引用包含光栅图像的位图或表面,因此效率提升幅度降低。可以将内容描述以可视展示标记语言(例如,可扩展应用标记语言(XAML))实现为控件。
为了以及时的方式显示内容以使得应用保持对用户响应并且最小化在接收到用户输入与对屏幕进行更新之间的用户可感知的延迟的量,跨平台渲染引擎包括在不同的处理线程上运行的组件,所述不同的处理线程包括应用线程124和用户界面线程126。尽管是以单数来描述的,但是可以使用在本文中所描述的线程中的任何线程中的多于一个线程。
应用线程124是负责包括应用内容的原始生成的应用的主要功能的处理线程。应用与跨平台渲染引擎之间的交互是在应用线程上进行的。用户界面线程126是对来自合成器的请求进行响应并且创建包含应用内容的显示层的处理线程,其中,显示图像(例如,位图)被加入所述显示层中。另外,用户界面线程126可以假设用于处理添加至层的动画行为(例如,移动对象、对其它对象的移动做出反应、调整对象的大小、拖动或缩放观察点)和/或用于改变层属性的职责。例如,在文字处理应用中,用户界面线程126可以负责在显示层上绘制文档、将光标置于文档上、并且接着在光标上设置属性以允许光标在文档周围移动。
合成器线程128是负责从用户界面线程中接收显示层和属性改变的处理线程。根据一个实施例,跨平台渲染引擎将显示层发送至合成器130,这一起带来了来自不同的源的视觉显示组件(即,纹理),以便在虚拟纹理中创建组合的图像。例如,考虑每个控件都可以是独立的层。用户界面线程创建所有这些独立的层并且将所有控件(即,显示组件)置于层上。用户界面线程接着将层发送至合成器130,并且合成器将所有层一起组合成表示工具条和相关联的按钮/控件的虚拟纹理。
与处理大多数应用功能的应用线程相比,在用户界面线程上进行较少的处理,这允许更快地从合成器中拉取出请求。换句话说,由于职责的划分,用户界面线程具有更高保障的可用性,并且能够根据需要快速地将显示组件绘制到屏幕104上。例如,在典型的计算设备上运行的一个代表性的操作系统中,用户界面线程的标称响应时间小于大约50ms。相反,相同的系统上的应用线程的标称响应时间是大约200ms。
在各种实施例中,包括操纵和渲染在内的复杂的工作和特定于应用的逻辑可以在用户界面线程之外进行,以保持用户界面线程具有高响应性。从而,跨平台渲染引擎的实施例可以包括用于回放内容描述来帮助维持用户界面线程的响应性的渲染线程132。将内容描述回放移动至渲染线程阻止任何昂贵的渲染对用户界面线程产生影响。换句话说,用户界面线程将不会忙于向屏幕104绘制显示组件,并且将更加空闲以对输入进行响应并且管理来自合成器的绘制请求。
图2是示出了适用于实现跨平台渲染引擎的系统的一个实施例的高级系统架构图。系统包括实时层级202、用户界面层级204、以及模型层级206。每个层级通常与其它层级在不同的处理空间中运行。实时层级负责在硬件级的交互,例如,接收用户输入以及向屏幕呈现应用内容以供显示。用户界面层级包括这样的组件,其允许数据输入(例如,用户生成的内容的输入)和对应用的功能的用户访问(例如,与应用控件进行交互),并且向用户呈现数据(例如,显示应用内容)。用户界面线程126,合成器线程128、以及渲染线程132与用户界面层级相关联。
模型层级包括应用模型208,所述应用模型208显露应用的功能、提供应用逻辑和业务规则(例如,如何编页和用连字符连接)、存储应用内容、并且渲染应用内容以供显示。应用线程124与模型层级相关联。跨平台渲染引擎包括在模型层级中运行的前端210以及在用户界面层级中运行的后端212。同步模型214提供非同步的通信以及共享的数据,这允许应用代码在跨不同线程的同步中保持。工作者线程提供针对应用模型的处理。
图3是示出了跨平台渲染引擎与应用之间的交互的一个实施例的流程图。前端提供由应用所使用的接口以生成应用内容的中间表示以供最终显示。后端将该接口提供至合成器。即后端从合成器接收用于显示应用内容的请求,并且通过生成应用内容的光栅图像(例如,虚拟纹理)并且将虚拟纹理转移至可以在显示屏上呈现的显示表面来进行响应。
应用必须从不是用户界面线程的线程中调用关于后端的命令。即使后端存在于(live on)用户界面线程上,在用户界面线程上运行的应用代码302b也不可以直接访问后端。对后端的所有调用都必须通过跨平台渲染引擎信道架构304来进行。跨平台渲染引擎信道架构是前端与后端之间的专用且直接的通信信道。例如,将由在应用线程上运行的应用代码302a绘制到前端的内容描述经由跨平台渲染引擎信道架构转移至后端。
后端在专用用户界面线程上运行,并且具有允许对来自合成器的绘制请求快速响应的高响应性。跨平台渲染引擎所提供的效率和响应性是通过使用所存储的内容描述并且使用拉取模型来从应用中获得内容而达成的。当区域需要视觉更新时,后端从应用中拉取出更新,而不是使应用向合成器推送更新。当对绘制请求进行响应所需的内容描述可用时,跨平台渲染引擎根据内容描述来渲染内容而不涉及应用线程。如果必要的内容描述不可用,则跨平台渲染引擎向应用发送绘制请求。当应用通过创建内容描述而进行响应时,后端立即针对合成器而对内容进行渲染,并且对内容描述进行存储以供之后使用。
后端维持跨平台渲染引擎的权威线程状态。跨平台渲染引擎信道架构允许前端设置属性,并且对后端上的层树进行改变,但不提供对后端状态数据的访问。后端维持其自身版本的层树和纹理指针。作为结果,前端状态和后端状态在任何特定的时间点上都可以不是同步的。由于跨平台渲染引擎所采用的拉取模型,因此前端状态和后端状态将不同步的该可能性是不重要的,。
在各种实施例中,应用与跨平台渲染引擎之间的通信在模型层级中进行。后端将请求传递至前端,而前端将请求发送至应用线程。在其它实施例中,后端可以将请求直接发送至应用。作为响应,应用线程将响应内容描述绘制到前端。用户界面线程上的应用与后端之间的交互是不允许的。由于应用不能将改变发送至前端与后端两者,因此改变、前端状态、以及后端状态将最终稳定,并且后端状态与从已经前端所发送的状态相匹配。
应用可以使用各种设备上下文将内容描述绘制到前端。当将内容描述光栅化成相关联的虚拟纹理时,后端使用另一个设备上下文。通过在前端处和后端处使用不同的设备上下文,跨平台渲染引擎可以同时播放并记录内容描述。由于每个虚拟纹理被给予单个设备上下文,因此跨平台渲染引擎按顺序对与虚拟纹理相关联的内容描述进行光栅化(即,绘制是序列化的)。在各种实施例中,给定的虚拟纹理的设备上下文用于将内容描述与该虚拟纹理相关联。
在一些实施例中,合成器控制后端与前端之间的通信。合成器可以根据请求的类型来调节(throttle)对内容描述的请求。突出(outstanding)的绘制最多可以一次具有在传输中(in flight)的三个请求。如果观察口发生重大改变,则其它类型的请求可以一次完成一个以确保响应性。
跨平台渲染引擎通过对在用户界面线程中的内容描述中所表示的内容进行光栅化来维持或改进应用的响应性。跨平台渲染引擎将内容描述光栅化成提供至合成器的虚拟纹理(即,内容描述虚拟纹理)。每个内容描述都与经选择的虚拟纹理相关联,并且表示相关联的虚拟纹理内的具体的区域。经选择的区域可以是虚拟纹理的一部分或是整个虚拟纹理。跨平台渲染引擎按顺序播放相关联的内容描述,从而合成由虚拟纹理所保存的最终的光栅图像。跨平台渲染引擎的实施例可以可选地在应用线程上执行一些光栅化。
在一些实施例中,跨平台渲染引擎提供后端纹理类来保存虚拟纹理。后端纹理类包含用于序列化对合成器的访问的逻辑,这每次仅仅允许一个突出的绘制。例如,在对合成器的绘制在进行中时,序列化逻辑锁定对绘制命令的访问。在一个实施例中,用户界面线程尝试获得锁定。如果成功,则用户界面线程绘制内容。如果不成功,则用户界面线程调度在应用线程上的工作。由于应用线程的参与,这以有可能损失响应性为代价来确保以正确的顺序来绘制内容。在其它实施例中,应用线程上的任何渲染都使用中间表面池(pool)。接着,将中间表面编组至用户界面线程以用于转移至合成器。这确保只将用户界面线程绘制到合成器。
在无效和更新期间,跨平台渲染引擎可以对由在序列中之后出现的内容描述所重写的内容描述进行修正(trim)。在各种实施例中,跨平台渲染引擎从与该虚拟纹理相关联的内容描述的序列中移除重写的内容描述,但保留所述内容描述以供有可能将来使用(例如,在撤销操作期间)。在一些实施例中,丢弃重写的内容描述。跨平台渲染引擎可以可选地在命令级对内容描述进行修正以移除其内容已经被重写的具体的命令,而保留其内容还没有被重写的命令。
跨平台渲染引擎追踪每个虚拟纹理的当前状态(即,虚拟纹理状态)。虚拟纹理状态指示具有相关联的一个或多个内容描述的虚拟纹理的区域。应用可以请求当前的虚拟纹理状态,并且使用信息来更新应用内容。例如,应用可以标识不具有相关联的内容描述的虚拟纹理的区域,并且当应用线程不忙时提供针对那些区域的内容描述。在各种实施例中,不保证虚拟纹理状态完全是最新的;然而,即使在当前的虚拟纹理状态落后于实际的虚拟纹理状态,并且将随着后端内容描述的改变而更新时,虚拟纹理状态将仍然提供有用的信息。
跨平台渲染引擎可以将内容描述存储在包装器中,以允许内容描述被注释有辅助信息。在各种实施例中,包装器包含与单个虚拟纹理相关联的所有内容描述(即,内容描述的选集),并且包括关于虚拟纹理和/或所包括的内容描述的辅助信息。在其它实施例中,每个内容描述都具有其自身的包装器,并且所述包装器包括特定于该内容描述的辅助信息。
跨平台渲染引擎还可以将用于组成虚拟纹理的内容描述存储在选集(即,内容描述合成)中,所述选集处理可应用于内容描述的基础操作。内容描述合成的实施例提供内容描述协调。跨平台渲染引擎考虑到在合成虚拟纹理的同时由经选择的数量(三个或更多个)的内容描述重新绘制像素或多个像素时,内容描述合成是低效率的。随着重新绘制同一像素的内容描述的数量的增加,组合的效率也越来越低。从而,跨平台渲染引擎通过请求针对包含重新绘制像素的内容描述的边界矩形的新的内容描述来协调内容描述,以降低绘制成本。在一些实施例中,每次经选择的数量的内容描述绘制到同一的像素或多个像素时,跨平台渲染引擎就请求新的内容描述。在其它实施例中,仅仅在内容描述合成中的所有的内容描述已经被绘制之后,跨平台渲染引擎才执行内容描述协调。内容描述合成可以可选地用于对大型虚拟纹理进行平铺以改进性能。
图4A-D示出了针对包含三个内容描述的内容描述合成的内容描述协调的示例。图4A示出了在第一矩形402a中绘制了由来自内容描述合成的第一内容描述所描述的内容之后的虚拟纹理400。图4B示出了在渲染了产生与第一矩形部分重叠的第二矩形402b之后的虚拟纹理。图4C示出了在渲染了产生与第一矩形和第二矩形两者都部分重叠的第三矩形402c之后的虚拟纹理。通过意识到在公共的重叠区域404中的像素已经被重新绘制了三次,跨平台请求引擎请求新的内容描述,所述新的内容描述对限定被绘制到公共的像素区域的三个矩形的边界的方框406中的内容进行描述。图4D示出了在绘制了由替代原始的三个内容描述402a、402b和402c的新的内容描述408所描述的内容之后的虚拟纹理400。
前端在模型层级中将跨平台渲染引擎的功能(即,方法)显露给应用。跨平台渲染引擎在所有平台上显露相同的基础API。在各种实施例中,前端显露用于设置并取回虚拟纹理的属性、增加、移除、和更新虚拟纹理的方法中的一些或全部,所述方法包括但不限于:Invalidate、InvalidateRect、InvalidateRegion、UpdateRect、Update、GetFullUpdateRegion、GetNumberOfUpdateRects、GetUpdateRect、GetUpdateRects、SetDpi、BeginDrawGdi、BeginDrawDirect2d、EndDraw、EndPartialDraw、Copy、Copy、Resize、GetDpi、GetContentRect、SetPrefetchSize、以及SetDirect2DTransformIncludesTextureOffset。
API的实施例可以可选地在某些平台上提供额外的功能。额外的功能可以基于在某个平台上可用的独特的功能或者简单地由于在某个平台(例如,具有显著的市场份额的平台)上更多地投资的意愿。应当理解的是,跨平台渲染引擎不要求平台间的特征等同来增强容易地转换(port)应用并且提供一致的用户体验的能力。换句话说,跨平台渲染引擎不需要限于最小公共分母。就跨平台渲染引擎在某个平台上不提供一些功能这一点而言,编写特定于平台的代码的选项保持可用,并且针对基础API所编写的任何与平台无关的代码的益处仍然适用。
拉取模型允许跨平台渲染引擎请求应用内容以在需要内容描述之前提供内容描述。对内容进行预取允许跨平台渲染引擎具有可用于对某些操作进行响应的内容描述,并且即使在当用户调用操作时应用线程忙于其它任务(例如,重新计算电子表格、保存恢复文件、或者将文件同步至基于云的存储),仍然允许应用表现出响应性。跨平台渲染引擎将在水平方向上和/或竖直方向上(即,预取边界)预取经选择的量的应用内容。应用可以自定义跨平台渲染引擎应该在水平方向上和/或竖直方向上默认预取多少应用内容。预取边界确定由跨平台渲染引擎所缓存的应用内容的最小量;然而,如果充足的资源可用,则可以缓存更多应用内容。在一些实施例中,跨平台渲染引擎基于操作来调整所缓存的应用内容的量。例如,与如果用户按下键盘上的上或下箭头或者使用长触摸以滚动屏幕相比,如果用户执行轻弹手势或者与竖直滚动条进行交互,则可以缓存更大量的竖直偏置的应用内容。
滚动操作呈现了可以使用预取的场景的一个示例。在滚动期间,滚动层考虑具有虚拟纹理的所有子层。这在后端中在对通知进行滚动期间进行。对应该被缓存的应用内容的重新计算可以仅仅在已经滚动了一定距离之后进行。滚动层具有请求其想要预取的虚拟纹理并且对在预取边界之外的任何内容描述合成进行修正的功能。
图5A示出了在给定了具有多个虚拟纹理的文档中的经选择的预取边界的情况下,可用于进行缓存的虚拟纹理内容描述的示例。在滚动层502附近,布置了多个虚拟纹理504。围绕滚动层的预取边界506包含多个虚拟纹理504中的一些或全部。为了可用于缓存,虚拟纹理中的至少一些和预取边界的区域必须重叠。由阴影来指示可缓存的虚拟纹理。在位于预取边界之外的虚拟纹理的部分相对较小的实例中,跨平台渲染引擎可以缓存整个虚拟纹理。
图5B示出了在给定了具有由多个瓦片组成的单个虚拟纹理的文档中的经选择的预取边界的情况下,可用于进行缓存的虚拟纹理内容描述的示例。围绕滚动层的预取边界包含虚拟纹理中的多个瓦片508的一部分。由阴影来指示可用于缓存的虚拟纹理中的瓦片。在该实例中,瓦片的尺寸相对较小,因此对于由预取边界部分包含的任何瓦片,将整个瓦片进行缓存。
缩放动作是可以由后端执行而不需要应用参与的操纵的示例。当进行针对由所存储的一个或多个内容描述所覆盖的区域的缩放动作时,跨平台渲染引擎能够快速地在用户界面线程上进行响应,并且创建清晰的纹理。这是由于以下事实:内容描述中的描述包含需要绘制光栅图像所需要的关于应用内容的信息(例如,文本和路径),而不是从原始的上下文中分离出的光栅图像。例如,当针对经缩放的区域而渲染内容描述时,跨平台渲染引擎可以应用比例因子。尽管将存在跨平台渲染引擎不具有针对经缩放的区域可用的内容描述,并且绘制请求必须由应用发出的实例,但可以期望这样的实例是不频发的,这是因为资源效率允许跨平台渲染引擎保留大量的内容描述。
实际情况是,基于原本被渲染为纹理的应用内容的缩放动作不与由跨平台引擎所提供的效率相匹配。在不要求应用对纹理进行更新的情况下,基于纹理的缩放操作将使用有损的调整尺寸的算法来执行。由于纹理中的不足的信息,这通常会得出更加模糊的图像。额外地,调整尺寸算法将通常比应用比例因子更加计算密集。通过请求应用来绘制经缩放的应用内容,可以获得更加清晰的图像。每次改变缩放等级,都会要求应用重新绘制经缩放的区域。相反,跨平台渲染引擎能够使用不同的比例因子而再一次渲染相同的内容描述而不损失细节。
在应用内容是代表应用而基于所存储的内容描述来渲染的场景中,跨平台渲染引擎可以向应用提供通知。所述通知给应用提供机会来对应用内容进行改变。换句话说,应用可以在应用线程空闲的事实之后更新应用内容。同时,由跨平台渲染引擎所进行的响应以与用户的期望一致的方式,并且以给用户提供应用有响应的感觉的及时的方式来提供应用内容。
跨平台渲染引擎的各种实施例提供不同的混合操作以允许应用在内容描述中描述混合的类型,以供当针对重叠的纹理进行渲染时使用。这样的混合模式的示例包括常规混合、下逆混合、以及逆混合。特定的混合模式的可用性可以取决于可用于具体的平台的功能。
图6A示出了使用常规混合模型而根据内容描述来渲染的应用内容的示例。当回放内容描述时,常规混合模式提供标准的透明度(即,阿尔法通道)支持。考虑包含用于绘制两个重叠的圆的命令的内容描述的示例。所述圆不占据由内容描述所描述的全部矩形区域。为了完全渲染与内容描述相关联的区域,也必须渲染所述圆和区域中未被占据的部分(即,背景)。使用常规混合模型支持,跨平台渲染引擎渲染区域中未被占据的部分以使得当被合成为虚拟纹理时,背景被视为透明的(例如,设置阿尔法通道)。换句话说,之后渲染的内容描述的背景将不遮盖来自之前渲染的内容描述的内容。在各种实施例中,跨平台渲染引擎可以采用不同等级的透明度。图6B示出了在没有常规混合模式支持的情况下所得出的虚拟纹理,其中,背景是使用默认填充颜色来渲染的,该默认填充颜色遮盖了第二圆周围的区域。
图7A示出了使用下逆混合模式而根据内容描述来渲染的应用内容的示例。当回放内容描述时,下逆混合模式提供“变暗优先(darken only)”支持。考虑包含用于突出显示文本的命令的内容描述的示例。第一内容描述可以描述文本而第二内容描述可以描述所填充的路径,所述路径表示当合成时将与文本重叠的突出显示。在具有深色的印记的浅色(例如,白色)的纸上,突出显示符(highlighter)给浅色的纸上色,但是对深色的印记没有可感知的影响。使用下逆模式支持,跨平台渲染引擎指示合成器以将由不同的内容描述所绘制的相同的像素的颜色仅变暗的方式对纹理进行合成。在一些实施例中,当绘制到同一像素的两个颜色进行组合以产生与原始的两个颜色都不同的更深的颜色时,保留新的颜色,而当结果是更浅的颜色时,保留原始的两个颜色中较深的颜色。这允许跨平台渲染引擎产生真实的突出显示效果。图7B示出了在没有下逆模式支持的情况下所得出的虚拟纹理,其中,包含与路径重叠的文本的像素的部分变得更浅,这是由于对绘制到相同的像素的颜色进行平均或者将透明度应用至表示突出显示的路径和填充的结果。
图8A示出了使用逆混合模式而根据内容描述来渲染的应用内容的示例。当回放内容描述时,逆混合模式将背景颜色反转(reverse),以确保内容总是可见的。考虑包含用于显示插入记号以示出在深色背景上的输入文本的当前位置的命令的内容描述的示例。第一内容描述可以描述文本,而第二内容描述可以描述插入记号以及相关联的动画(例如,闪烁)。当一起被渲染和合成时,与插入记号重叠的文本的部分采用与插入记号相反的颜色(例如,白色变成黑色),因此文本看起来没有被剪掉。图8B示出了在没有逆模式支持的情况下所得出的虚拟纹理,其中,与插入记号重叠的文本的部分被插入标记遮盖,并且看起来已经被剪掉了。
图9是跨平台渲染引擎方法的一个实施例的高级流程图。当要求对与应用内容有关的显示表面进行更新的视图改变发生时,跨平台渲染引擎方法900开始。视图改变可以是与应用的用户交互(例如,数据输入或者与应用用户界面的交互)的结果。
在更新请求操作902中,接收来自合成器的用于更新显示表面的一部分的更新请求,并由跨平台渲染引擎对所述更新请求进行解译。作为对更新请求的响应,内容描述库操作904确定是否由后端来存储与显示表面的该部分相关联的内容描述。如果是,则跨平台渲染引擎根据扩展的渲染操作906根据可用的内容描述对在更新请求中所指定的纹理进行渲染。
操纵确定操作908确定由跨平台渲染引擎所接收的更新请求是否包含可以由后端执行的对现有的内容描述的操纵,而不需要待对应用进行绘制请求。例如,如果更新请求包含用于对已经由内容描述所描述应用的一部分进行缩放的请求,则跨平台渲染引擎可以对更新请求进行响应而不涉及应用。渲染经操纵的内容描述操作912操纵现有的内容描述并且生成与其上运行跨平台渲染引擎的平台兼容的显示组件。这可以通过在上文中的缩放操作的示例中应用合适的现有内容描述的比例因子来完成。应用通知操作914发送通知,其通知应用跨平台渲染引擎已经代表应用对更新请求进行了响应。通知给应用机会来改变已经渲染的内容。
如果操纵不是必须的,则标准渲染操作914根据现有的内容描述而生成与其上运行跨平台渲染引擎的平台兼容的显示组件。
可选的内容描述协调操作916发出协调请求,要求应用用新的内容描述来替代绘制到相同的像素的内容描述。协调请求指示应用针对包含重新绘制像素的内容描述的边界矩形来绘制新的内容描述。当被接收到时,跨平台渲染引擎用新的内容描述来替代重新绘制像素的内容描述。
可选的预取更新操作确定更新请求是否指示当前的视图已经被移动以使得经缓存的内容描述应该被更新,或者确定更新请求是否指示额外的内容描述应该被缓存以允许应用保持对用户响应。例如,如果用户快速滚动视图,则可以请求在滚动的方向上的额外的内容描述。如果是这样,则预取操作920向应用发送请求以针对接近于当前虚拟纹理的区域而提供内容描述。如果当前的视口移动至那些周围的区域,则存储这些所缓存的内容描述以供使用。
返回至内容描述库操作904,如果所需要的对内容描述的响应不可用,则内容描述拉取操作924向应用发送拉取请求,所述拉取请求指定跨平台渲染引擎所需要的应用内容对更新请求进行响应。在内容描述接收操作926期间,跨平台渲染引擎在前端处从应用接收内容描述。内容描述转移操作928将内容描述从前端经由跨平台渲染引擎信道架构发送至后端。前端可以保留内容描述操作的复本。这时,立即渲染操作930响应于内容描述拉取操作而根据内容描述来生成平台兼容的显示组件。在各种实施例中,立即渲染操作包括在扩展的渲染操作中所描述的操作中的一些或全部。内容描述存储操作932存储内容描述以供将来由后端使用。
在全部两个实例中,合成操作934将经渲染的纹理转移至合成器以用于包含在可以在计算设备的显示器上示出的显示表面中。在方法的结束处,在计算设备上的屏幕上示出显示表面。
该申请的主题可以在诸如系统、设备、和其它制品或方法之类的多种实施例中实践。实施例可以被实现为硬件、软件、计算机可读介质、或其组合。可以经由多种计算系统来运行在本文中所描述的实施例和功能,所述计算系统包括但不限于:台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板或平板类计算机、笔记本计算机、以及膝上型计算机)、手持设备、多处理器系统、基于微处理器的或可编程的消费型电子产品、微型计算机、以及大型计算机。
可以经由板载计算设备显示器或者经由与一个或多个计算设备相关联的远程显示器单元来显示用户界面和各种类型的信息。例如,可以在其上投影有用户界面和各种类型的信息的墙面上来显示用户界面和各种类型的信息,并与其进行交互。与利用其可以实践本发明的实施例的多种计算系统的交互包括:击键输入、触摸屏输入、语音或其他音频输入、手势输入(在相关联的计算设备装备有用于捕获和解译用于控制计算设备的功能的用户手势的检测(例如,相机)功能的情况下)等。
图10和图11A-B以及相关联的描述提供了对在其中可以实践本发明的实施例的多种操作环境的讨论。然而,示出并讨论的设备和系统是出于示例和说明的目的的,而不限制可以用于实践上文中所描述的本发明的实施例的大量的计算设备配置。
图10是示出了利用其可以实践本发明的计算设备1000的物理组件(即,硬件)的一个实施例的框图。在下文中所描述的计算设备组件可以适用于实施计算设备,包括但不限于:个人计算机、平板计算机、平面计算机、以及智能电话、或者在本文中所讨论的任何其它计算设备。在基本配置中,计算设备1000可以包括至少一个处理单元1002和系统存储器1004。取决于计算设备的配置和类型,系统存储器1004可以包括但不限于:易失性存储设备(例如,随机存取存储器)、非易失性存储设备(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。系统存储器1004可以包括操作系统1005以及一个或多个程序模块1006,其适用于运行诸如跨平台渲染引擎120之类的软件应用1020。例如,操作系统1005可以适用于控制计算设备1000的操作。此外,可以结合图形库、其它操作系统、或任意其它应用程序来实践本发明的实施例,并且所述实施例不限于任何特定的应用或系统。该基本配置是由虚线1008内的那些组件所示出的。计算设备1000可以具有额外的特征或功能。例如,计算设备1000还可以包括额外的数据存储设备(可移动的和/或不可移动的),例如,磁盘、光盘、或磁带。这样的额外的存储是由可移动存储设备1009和不可移动存储设备1010所示出的。
如上所述,可以将多个程序模块和数据文件存储在系统存储器1004中。当在处理单元1002上执行时,软件应用1020可以执行过程,包括但不限于跨平台渲染方法900中的一个或多个步骤。可以根据本发明的实施例来使用的其它程序模块可以包括电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘画应用等。
此外,可以在包括分立电子元件、包含逻辑门的封装的或集成的电子芯片、利用微处理器的电路、或包含电子元件或微处理器的单个芯片的电路中实践本发明的实施例。例如,可以经由片上系统(SOC)来实践本发明的实施例,其中,所示出的组件中的每个或多个可以集成到单个集成电路上。这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及全都作为单个集成电路集成(或“烧制”)到芯片衬底上的各种应用功能。当经由SOC操作时,在本文中关于软件应用1020所描述的功能可以经由与单个集成电路(芯片)上的计算设备1000的其它组件一起集成的专用逻辑来操作。还可以使用能够执行逻辑运算(例如,与、或、非)的其它技术来实践本发明的实施例,所述技术包括但不限于:机械、光学、流体、和量子技术。另外,可以在通用计算机中或者在任何其它电路或系统中实践本发明的实施例。
计算设备1000还可以具有一个或多个输入设备1012,例如,键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可以包括诸如显示器、扬声器、打印机等之类的输出设备1014。前述设备是示例并且可以使用其它设备。计算设备1000可以包括允许与其它计算设备1018进行通信的一个或多个通信连接1016。合适的通信连接1016的示例包括但不限于:RF发射机、接收机、和/或收发机电路;通用串行总线(USB)、并行、和/或串行端口。
如在本文中所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动的介质。系统存储器1004、可移动存储设备1009、和不可移动存储设备1010全都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可以包括:随机存取存储器(RAM)、只读存储器(ROM)、电可擦除只读存储器(EEPROM)、闪速存储器或其他存储器技术、压缩盘只读存储器(CD-ROM)、数字通用盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或者可以用于存储信息并且可以由计算设备1000所访问的任何其他制造物。任何这样的计算机存储介质都可以是计算设备1000的一部分。
图11A和11B示出了可以利用其实践本发明的实施例的移动计算设备1100。合适的移动计算设备的示例包括但不限于:移动电话、智能电话、平板计算机、以及膝上型计算机。在基本配置中,移动计算设备1100是既具有输入元件又具有输出元件的手持式计算机。移动计算设备1100通常包括显示器1105以及允许用户将信息输入到移动计算设备1100中的一个或多个输入按钮1110。移动计算设备1100的显示器1105也可以充当输入设备308(例如,触摸屏显示器)。如果被包括,则可选的侧输入元件1115允许进一步的用户输入。侧输入元件1115可以是旋转开关、按钮或任何其他类型的手动输入元件。在可替代的实施例中,移动计算设备1100可以包含更多或更少的输入元件。例如,在一些实施例中,显示器1105可以不是触摸屏。在另一个可替代的实施例中,移动计算设备1100是便携式电话系统,例如蜂窝电话。移动计算设备1100还可以包括可选的小键盘1135。可选的小键盘1135可以是物理小键盘或者在触摸屏显示器上生成的“软”小键盘。在各种实施例中,输出元件包括用于示出图形用户界面的显示器1105、视觉指示器1120(例如,发光二极管)、和/或音频换能器1125(例如,扬声器)。在一些实施例中,移动计算设备1100包含用于给用户提供触觉反馈的振动换能器。在另一个实施例中,移动计算设备1100包含用于向外部设备发送信号或从外部设备中接收信号的输入和/或输出端口,例如音频输入(例如,麦克风插孔)、音频输出(例如,耳机插孔)、和视频输出(例如,HDMI端口)。
图11B是示出了移动计算设备的一个实施例的架构的框图。即,移动计算设备1100可以包含用于实现一些实施例的系统(即,架构)1102。在一个实施例中,系统1102被实现为能够运行一个或多个应用(例如,浏览器、电子邮件客户端、记事本、联系人管理器、消息发送客户端、游戏、和媒体客户端/播放器)的智能电话。在一些实施例中,系统1102被集成为计算设备,例如集成的个人数字助理(PDA)和无线电话。
一个或多个应用程序1166可以被加载到存储器1162中,并且在操作系统1164上运行或者与操作系统1164相关联地运行。应用程序的示例包括:电话拨号程序、电子邮件程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息发送程序等。系统1102还包括存储器1162内的非易失性存储区域1168。非易失性存储区域1168可以用于存储在系统1102断电时不应丢失的永久信息。应用程序1166可以使用信息并将信息存储在非易失性存储区域1168中,例如电子邮件应用程序所使用的电子邮件或其他消息等。同步应用(未示出)也驻留在系统1102上,并且被编程为与驻留在主机计算机上的对应的同步应用进行交互,以将存储在非易失性存储区域1168中的信息与存储在主机计算机上的对应的信息保持同步。应当理解的是,包括在本文中所描述的软件应用1020的其他应用可以被加载到存储器1162中并且在移动计算设备1100上运行。
系统1102具有电源1170,其可以被实现为一个或多个电池。电源1170还可以包括外部电源,例如,AC适配器或者对电池供电或充电的加电对接托架。
系统1102还可以包括执行发送和接收射频通信的功能的无线电设备1172。无线电设备1172可以经由通信运营商或服务提供商来促成系统1102和外部世界之间的无线连通性。到无线电设备1172和来自无线电设备1172的传输是在操作系统1164的控制下进行的。换句话说,由无线电设备1172所接收到的通信可以经由操作系统1164散播至应用程序1166,反之亦然。
视觉指示器1120可以用于提供视觉通知,并且/或音频接口1174可以用于经由音频换能器1125来产生可听见的通知。在所示出的实施例中,视觉指示器1120是发光二极管(LED),而音频换能器1125是扬声器。这些设备可以直接耦合至电源1170,使得当被激活时,即使为了保存电池电量可以关闭处理器1160和其他组件,它们也在由通知机制所规定的期间内保持通电。LED可以被编程为保持无限期地通电以指示设备的通电状态,直到用户采取动作为止。音频接口1174用于向用户提供可听见的信号并从用户处接收可听见的信号。例如,除了耦合至音频换能器1125之外,音频接口1174还可以耦合至麦克风以接收可听见的输入,从而例如促成电话交谈。根据本发明的实施例,麦克风也可以充当音频传感器以促进对通知的控制,如将在下文中所描述的。系统1102还可以包括使能够操作板载相机1130来记录静止的图像、视频流等的视频接口1176。
实现系统1102的移动计算设备1100可以具有额外的特征或功能。例如,移动计算设备1100还可以包括额外的数据存储设备(可移动的和/或不可移动的),例如,磁盘、光盘、或磁带。由非易失性存储区域1168示出了这样额外的存储。
由移动计算设备1100所生成或捕获的、并且经由系统1102所存储的数据/信息可以本地地存储在移动计算设备1100上,如上所述,或者所述数据可以存储在可以由设备通过无线电设备1172或者经由移动计算设备1100和与移动计算设备1100相关联的分离的计算设备之间的有线连接来访问的任何数量的存储介质中,例如,分布式计算网络(例如,互联网)中的服务器计算机。应当理解的是,这样的数据/信息可以通过移动计算设备1100经由无线电设备1172或者经由分布式计算网络来访问。类似地,这样的数据/信息可以根据公知的数据/信息传输和存储单元(包括电子邮件和协作数据/信息共享系统)容易地在计算设备之间进行存储和使用。
在该申请中所提供的对一个或多个实施例的描述和说明旨在向本领域技术人员提供对主题的完整范围的完全彻底和完整的公开,而不旨在以任何方式限制或约束本发明的范围。在该申请中所提供的实施例、示例、和细节被认为足以表达所有权,并且使得本领域技术人员能够实践所要求保护的发明的最佳模式。被认为是本领域技术人员所公知的对结构、资源、操作、和动作的描述可以是简短的或者被省略,以避免使得该申请的主题的较少人知道的方面或独特的方面难以理解。除非在本文中明确地指出,否则,所要求保护的发明都不应该被解释为限于在该申请中所提供的任何实施例、示例、或细节。无论是组合还是单独地被示出和描述,各种特征(包括结构和方法)都旨在被选择性地包括或省略,以产生具有一组特定特征的实施例。此外,任何或所有示出或描述的功能和动作可以以任意顺序或同时执行。在已经提供了本申请的描述和说明之后,本领域技术人员可以设想变型、修改和替代实施例,其落入到在该申请中所实施的总体构思的更宽泛的方面内,而不脱离所要求保护的发明的更宽泛的范围。

Claims (10)

1.一种用于对与应用相关联的计算机生成的显示组件进行渲染,以用于在计算机支持的显示表面上显示的方法,所述方法包括以下操作:
从应用接收多个内容描述,所述多个内容描述包括关于如何绘制显示组件的命令;
将所述多个内容描述存储在存储器中;
从应用接收绘制请求来以图形显示应用内容;
确定要以图形显示的所述应用内容是否被存储为所述多个内容描述中的一个或多个;
当所述绘制请求被存储为所述多个内容描述中的一个或多个时,根据所存储的内容描述而渲染表示要以图形显示的所述应用内容的显示组件,并且显示所述显示组件;以及
当所述内容描述未被存储在存储器中时,针对表示要以图形显示的所述应用内容的经光栅化的图像而调用所述应用,并且显示所述经光栅化的图像。
2.根据权利要求1所述的方法还包括以下操作:
要求所述应用提供额外的内容描述,其中不存在针对所述额外的内容描述的相应的所存储的内容描述;
根据所述额外的内容描述而立即渲染一个或多个显示组件;以及
存储所述额外的内容描述以供后续使用。
3.根据权利要求1所述的方法,其中,所存储的多个内容描述是与平台无关的,并且根据一个或多个所存储的内容描述而渲染表示要以图形显示的所述应用内容的显示组件包括:根据一个或多个所存储的内容描述而渲染特定于平台的显示组件。
4.根据权利要求1所述的方法,还包括:将与表示应用内容的相同的虚拟纹理相关联的所述多个内容描述中的一个或多个加入到内容描述的选集。
5.根据权利要求4所述的方法,还包括以下的操作:
确定内容描述的所述选集中的至少三个内容描述已经渲染了相同的至少一个像素;
请求针对由边界框所包围的所述虚拟纹理的一部分的新的内容描述,所述边界框包含由来自所述应用的所述至少三个内容描述所绘制的所述虚拟纹理的部分;以及
用内容描述的所述选集中的所述新的内容描述来替代渲染了所述相同的至少一个像素的所述至少三个内容描述。
6.一种包含计算机可执行指令的计算机可读介质,其中,当由计算机执行时,所述计算机可执行指令执行一种用于在计算机支持的显示表面上显示应用内容的方法,所述方法包括以下操作:
从应用接收多个内容描述,所述多个内容描述包括关于如何绘制显示组件的命令;
将所述多个内容描述存储在存储器中;
从应用接收绘制请求来以图形显示应用内容;
确定要以图形显示的所述应用内容是否被存储为所述多个内容描述中的一个或多个;
当所述绘制请求被存储为所述多个内容描述中的一个或多个时,根据所存储的内容描述而渲染表示要以图形显示的所述应用内容的显示组件,并且显示所述显示组件;以及
当所述内容描述未被存储在存储器中时,针对表示要以图形显示的所述应用内容的经光栅化的图像而调用所述应用,并且显示所述经光栅化的图像。
7.根据权利要求6所述的计算机可读介质还包括以下操作:
要求所述应用提供额外的内容描述,其中不存在针对所述额外的内容描述的相应的所存储的内容描述;
根据所述额外的内容描述而立即渲染一个或多个显示组件;以及
存储所述额外的内容描述以供后续使用。
8.根据权利要求6所述的计算机可读介质,其中,所存储的多个内容描述是与平台无关的,并且根据一个或多个所存储的内容描述而渲染表示要以图形显示的所述应用内容的显示组件包括:根据一个或多个所存储的内容描述而渲染特定于平台的显示组件。
9.根据权利要求6所述的计算机可读介质,还包括:将与表示应用内容的相同的虚拟纹理相关联的所述多个内容描述中的一个或多个加入到内容描述的选集。
10.根据权利要求9所述的计算机可读介质,还包括以下操作:
确定内容描述的所述选集中的至少三个内容描述已经渲染了相同的至少一个像素;
请求针对由边界框所包围的所述虚拟纹理的一部分的新的内容描述,所述边界框包含由来自所述应用的所述至少三个内容描述所绘制的所述虚拟纹理的部分;以及
用内容描述的所述选集中的所述新的内容描述来替代渲染了所述相同的至少一个像素的所述至少三个内容描述。
CN201580010299.1A 2014-02-24 2015-02-20 跨平台渲染引擎 Active CN106062705B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/187,897 US10157593B2 (en) 2014-02-24 2014-02-24 Cross-platform rendering engine
US14/187,897 2014-02-24
PCT/US2015/016722 WO2015127149A1 (en) 2014-02-24 2015-02-20 Cross-platform rendering engine

Publications (2)

Publication Number Publication Date
CN106062705A CN106062705A (zh) 2016-10-26
CN106062705B true CN106062705B (zh) 2019-07-02

Family

ID=52633641

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580010299.1A Active CN106062705B (zh) 2014-02-24 2015-02-20 跨平台渲染引擎

Country Status (6)

Country Link
US (1) US10157593B2 (zh)
EP (1) EP3111318B1 (zh)
KR (1) KR102307163B1 (zh)
CN (1) CN106062705B (zh)
TW (1) TW201539294A (zh)
WO (1) WO2015127149A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9773073B1 (en) * 2014-05-02 2017-09-26 tronc, Inc. Online information system with continuous scrolling and position correction
US10802660B1 (en) * 2015-07-29 2020-10-13 Intuit Inc. Metadata-driven binding of platform-agnostic content to platform-specific user-interface elements
JP2017056687A (ja) * 2015-09-18 2017-03-23 株式会社ナンバースリー 着色された金属板、チューブ、及び金属板の着色方法
US10453240B2 (en) * 2015-11-05 2019-10-22 Adobe Inc. Method for displaying and animating sectioned content that retains fidelity across desktop and mobile devices
CN107315599B (zh) * 2016-04-27 2020-09-01 龙芯中科技术有限公司 图形库提取方法及装置
US20180293086A1 (en) * 2017-04-06 2018-10-11 Microsoft Technology Licensing, Llc Cross-application content injection
CN107315580B (zh) * 2017-04-17 2020-06-02 阿里巴巴集团控股有限公司 用户界面的组件处理方法、装置及设备、可读介质
CN109725956B (zh) * 2017-10-26 2022-02-01 腾讯科技(深圳)有限公司 一种场景渲染的方法以及相关装置
US11222449B2 (en) * 2018-10-24 2022-01-11 EMC IP Holding Company LLC Smart visualization transformation for intuitive presentations
CN111694625B (zh) * 2019-03-14 2023-05-19 阿里巴巴集团控股有限公司 一种车盒向车机投屏的方法和设备
US20200387286A1 (en) * 2019-06-07 2020-12-10 Facebook Technologies, Llc Arm gaze-driven user interface element gating for artificial reality systems
WO2020255084A1 (en) * 2019-06-19 2020-12-24 Calgary Scientific Inc. Software collaboration platform for advanced workflows and digital twins
CN110688601A (zh) * 2019-09-18 2020-01-14 郑州阿帕斯科技有限公司 一种数据处理方法及装置
CN111402263B (zh) * 2020-03-04 2023-08-29 南方电网科学研究院有限责任公司 高分大屏可视化优化方法
CN112070871B (zh) * 2020-09-02 2024-01-19 山东天兑信息科技有限公司 一种跨平台三维可视化引擎构建系统、方法、终端及储存介质
US11521358B2 (en) * 2021-01-07 2022-12-06 Google Llc Computing platform for facilitating augmented reality experiences with third party assets
CN112929682B (zh) * 2021-01-21 2023-03-24 广州虎牙科技有限公司 对图像背景进行透明处理的方法、装置、系统及电子设备
CN113181657B (zh) * 2021-04-30 2024-04-05 北京读我网络技术有限公司 一种跨平台渲染方法及装置
US20220368765A1 (en) * 2021-05-13 2022-11-17 Agora Lab, Inc. Universal Transport Framework For Heterogeneous Data Streams
CN114237795B (zh) * 2021-12-16 2024-01-30 海宁奕斯伟集成电路设计有限公司 终端界面显示方法、装置、电子设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1326165A2 (en) * 2002-01-04 2003-07-09 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
CN102929491A (zh) * 2011-11-14 2013-02-13 微软公司 跨窗口动画
CN102999332A (zh) * 2011-11-14 2013-03-27 微软公司 用户界面和内容项的计算机生成显示组件的动画

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864336A (en) 1992-02-25 1999-01-26 Citizen Watch Co., Ltd. Liquid crystal display device
US5977966A (en) 1993-04-28 1999-11-02 Microsoft Corporation System-provided window elements having adjustable dimensions
US5751283A (en) 1996-07-17 1998-05-12 Microsoft Corporation Resizing a window and an object on a display screen
US7168048B1 (en) 1999-03-24 2007-01-23 Microsoft Corporation Method and structure for implementing a layered object windows
GB2373887A (en) 2001-03-28 2002-10-02 Hewlett Packard Co Context dependent operation, including power management, of a mobile computer
CN1427373A (zh) 2001-12-19 2003-07-02 英业达股份有限公司 处理图形遮挡的方法
US20030197716A1 (en) 2002-04-23 2003-10-23 Krueger Richard C. Layered image compositing system for user interfaces
US7302648B1 (en) 2002-07-10 2007-11-27 Apple Inc. Method and apparatus for resizing buffered windows
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7034834B2 (en) 2003-10-24 2006-04-25 Microsoft Corporation Communication protocol for synchronizing animation systems
US8453065B2 (en) 2004-06-25 2013-05-28 Apple Inc. Preview and installation of user interface elements in a display environment
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US8134575B2 (en) 2004-09-30 2012-03-13 Microsoft Corporation Maintaining graphical presentations based on user customizations
US20060184894A1 (en) 2005-02-15 2006-08-17 International Business Machines Corporation Global window management for parent/child relationships
US20060274070A1 (en) 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
KR20060119085A (ko) 2005-05-18 2006-11-24 삼성전자주식회사 텍스쳐 캐쉬 메모리 장치 및 이를 이용한 삼차원 그래픽가속기 및 방법
US7477254B2 (en) 2005-07-13 2009-01-13 Microsoft Corporation Smooth transitions between animations
US8055444B2 (en) 2006-04-04 2011-11-08 Yahoo! Inc. Content display and navigation interface
US7872650B2 (en) 2006-04-27 2011-01-18 Microsoft Corporation Remotely viewing large tiled image datasets
US8130226B2 (en) 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
US8884990B2 (en) 2006-09-11 2014-11-11 Adobe Systems Incorporated Scaling vector objects having arbitrarily complex shapes
US20080100636A1 (en) 2006-10-31 2008-05-01 Jiin Lai Systems and Methods for Low-Power Computer Operation
US8806028B2 (en) 2007-04-26 2014-08-12 Novatel Wireless, Inc. System and method for accessing data and applications on a host when the host is in a dormant state
US20080303826A1 (en) 2007-06-11 2008-12-11 Adobe Systems Incorporated Methods and Systems for Animating Displayed Representations of Data Items
SE533322C2 (sv) 2007-12-21 2010-08-24 Tat The Astonishing Tribe Ab Förfarande, modul och anordning för att visa grafisk information
US8368705B2 (en) * 2008-07-16 2013-02-05 Google Inc. Web-based graphics rendering system
US8294723B2 (en) * 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8836706B2 (en) 2008-12-18 2014-09-16 Microsoft Corporation Triggering animation actions and media object actions
US9865233B2 (en) 2008-12-30 2018-01-09 Intel Corporation Hybrid graphics display power management
US8619083B2 (en) 2009-01-06 2013-12-31 Microsoft Corporation Multi-layer image composition with intermediate blending resolutions
US20100235769A1 (en) 2009-03-16 2010-09-16 Microsoft Corporation Smooth layout animation of continuous and non-continuous properties
CN101882321B (zh) 2009-05-08 2012-09-05 上海科泰世纪科技有限公司 动画用户界面渲染系统及方法
CN101893980B (zh) 2009-05-20 2012-04-25 龙旗科技(上海)有限公司 一种带滑动动画效果的多图像查看界面的显示方法
CN101714088B (zh) 2010-01-04 2013-09-18 中兴通讯股份有限公司 移动终端用户界面增强视效实现方法及其装置
US10007393B2 (en) 2010-01-19 2018-06-26 Apple Inc. 3D view of file structure
US20110199318A1 (en) 2010-02-12 2011-08-18 Microsoft Corporation Multi-layer user interface with flexible parallel movement
US9223589B2 (en) 2010-02-26 2015-12-29 Microsoft Technology Licensing, Llc Smooth layout animation of visuals
US10089711B2 (en) 2010-09-03 2018-10-02 Adobe Systems Incorporated Reconstructable digital image cache
US8988468B2 (en) 2011-01-21 2015-03-24 Wishabi Inc. Interactive flyer system
US8687840B2 (en) 2011-05-10 2014-04-01 Qualcomm Incorporated Smart backlights to minimize display power consumption based on desktop configurations and user eye gaze
US10534842B2 (en) * 2011-07-12 2020-01-14 Inkling Systems, Inc. Systems and methods for creating, editing and publishing cross-platform interactive electronic works
US20130063446A1 (en) 2011-09-10 2013-03-14 Microsoft Corporation Scenario Based Animation Library
US9672050B2 (en) 2011-10-18 2017-06-06 Blackberry Limited Method of distributed layout negotiation in a user interface framework
US8786620B2 (en) 2011-11-14 2014-07-22 Microsoft Corporation Discarding idle graphical display components from memory and processing
US9645978B2 (en) 2011-11-16 2017-05-09 Microsoft Technology Licensing, Llc Techniques for the automatic animation of changes to document content
US20130139072A1 (en) 2011-11-28 2013-05-30 Microsoft Corporation Executing a composited application
US9235317B2 (en) 2012-02-01 2016-01-12 Facebook, Inc. Summary and navigation of hierarchical levels
US9286054B2 (en) * 2012-05-15 2016-03-15 Pravaa Infosystems Private Limited Deployment of mobile enterprise application platform
US20150339841A1 (en) 2014-05-22 2015-11-26 Microsoft Corporation Layout animation panel

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1326165A2 (en) * 2002-01-04 2003-07-09 Microsoft Corporation Methods and system for managing computational resources of a coprocessor in a computing system
CN102929491A (zh) * 2011-11-14 2013-02-13 微软公司 跨窗口动画
CN102999332A (zh) * 2011-11-14 2013-03-27 微软公司 用户界面和内容项的计算机生成显示组件的动画

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Introduction to Multithreaded rendering and the usage of Deferred Contexts in DirectX 11";Rodrigo B等;《Brazilian Symposium on Computer Games and Digital Entertainment》;20111109;第1-5页

Also Published As

Publication number Publication date
TW201539294A (zh) 2015-10-16
KR102307163B1 (ko) 2021-10-01
EP3111318B1 (en) 2021-11-17
EP3111318A1 (en) 2017-01-04
KR20160120343A (ko) 2016-10-17
WO2015127149A1 (en) 2015-08-27
CN106062705A (zh) 2016-10-26
US10157593B2 (en) 2018-12-18
US20150243257A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
CN106062705B (zh) 跨平台渲染引擎
US11902377B2 (en) Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework
KR101086570B1 (ko) 동적 윈도우 구조
US9196075B2 (en) Animation of computer-generated display components of user interfaces and content items
CN103733170B (zh) 对象在应用之间的拖拽和放下
RU2360284C2 (ru) Компонующий администратор окон рабочего стола
CN111684495A (zh) 用于在混合现实系统中管理和显示虚拟内容的方法和系统
US9360956B2 (en) Wet ink texture engine for reduced lag digital inking
CN110096277A (zh) 一种动态页面展示方法、装置、电子设备及存储介质
CN107077752A (zh) 数据可视化可扩展架构
US8432396B2 (en) Reflections in a multidimensional user interface environment
KR20060052717A (ko) 가상 데스크 탑, 프로그램 예의 배열을 리콜링하는 방법, 애플리케이션 예를 관리하는 방법 및 애플리케이션을 관리하는 방법
US20200242726A1 (en) Task Execution on a Graphics Processor Using Indirect Argument Buffers
US10129335B2 (en) Method and system for dynamic group creation in a collaboration framework
US10304225B2 (en) Chart-type agnostic scene graph for defining a chart
CN110286971A (zh) 处理方法及系统、介质和计算设备
US11086498B2 (en) Server-side chart layout for interactive web application charts
WO2020231569A1 (en) Text editing system for 3d environment
WO2024016798A9 (zh) 图像显示方法和相关装置
WO2024065097A1 (zh) 板书内容展示方法、电子设备及存储介质
CN117372597A (zh) 动画渲染方法、装置、电子设备及可读存储介质
CN116459516A (zh) 分屏特效道具生成方法、装置、设备和介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant