CN107003908A - 低延时墨渲染管线 - Google Patents
低延时墨渲染管线 Download PDFInfo
- Publication number
- CN107003908A CN107003908A CN201580052962.4A CN201580052962A CN107003908A CN 107003908 A CN107003908 A CN 107003908A CN 201580052962 A CN201580052962 A CN 201580052962A CN 107003908 A CN107003908 A CN 107003908A
- Authority
- CN
- China
- Prior art keywords
- thread
- black
- ink
- black content
- input
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/0416—Control or interface arrangements specially adapted for digitisers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0354—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
- G06F3/03545—Pens or stylus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- User Interface Of Digital Computer (AREA)
- Processing Or Creating Images (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
提供了系统和方法,其用于改进针对在墨内容利用触笔、鼠标、手指(或其它触摸输入)或者用于追踪针对墨内容在显示区域中的期望位置的其它绘图设备的用户创建期间的墨的显示的延时。为了减少或最小化用于由用户使用触笔/鼠标/触摸输入/其它设备创建的墨内容的显示的时间,可以使用分离的墨渲染过程线程,其在操作系统内操作并且与其它应用线程是并行的。当期望在应用内创建墨内容时,对应于墨内容的创建的用户交互可以由分离的墨渲染过程线程处置。这可以避免由于应用处置过程流中的其它事件所致的显示墨内容中的潜在延迟。
Description
背景技术
平板计算设备(或者类似类型的嵌入式设备)通常包含允许用户向设备录入数据的触摸屏。可以使用手指、鼠标、触笔(或笔)等来完成通过用户的数据录入。从笔(或手指)到设备的输入称为“墨”。
墨被数字化以允许其由计算设备处理和操纵并被显示。这典型地是通过将经数字化的墨发出到设备上的操作系统,让处理器处理墨,并且然后将经处理的墨发送至图形卡来执行的。图形卡然后在监视器或显示器上渲染墨(这是用户动作的效果)。
当前的墨渲染技术的一个缺陷是引入的延时。笔和手指往往是快速的并且实际上是瞬时的,而墨的渲染往往滞后。事实上,整个墨渲染过程可以引入可以在70至200毫秒之间的任何地方或者甚至更大的量级上的延时。墨渲染中的该延时可以导致缓慢且尴尬的用户体验。
特别地,该延时是不合期望的效果,因为其破坏直接地操纵对象的感知屏障。当然,这些多半是在存在协同定位体验的情形中被感知的。换言之,当输入和输出与彼此协同定位(例如用触笔在平板计算设备或触摸屏上进行书写),延时效应是最大的。
发明内容
提供了系统和方法,其用于改进针对墨内容利用触笔、鼠标、手指(或其它触摸输入)或者用于追踪针对墨内容在显示区域中的期望位置的其它绘图设备的用户创建期间的墨显示的延时。为了减少或最小化用于由用户使用触笔/鼠标/触摸输入/其它设备创建的墨内容的显示的时间,可以使用分离的墨渲染过程线程,该分离的墨渲染过程线程在操作系统内操作并且与其它应用线程是并行的。当期望在应用内创建墨内容时,对应于墨内容的创建的用户交互可以由该分离的墨渲染过程进程进行处置。这可以避免在显示墨内容中由于应用处置过程流中的其它事件所致的潜在延迟。由于该分离的墨渲染过程线程与应用进行通信,所以由该分离的墨渲染过程渲染的墨内容仍然可以使用应用的上下文来渲染。这可以允许以与在墨内容向对应应用的转移之后墨内容可以具有的外观基本上类似的外观来向用户显示墨内容。
提供本发明内容来以简化的形式引入以下在具体实施方式中进一步描述的概念的选择。本发明内容不意图标识所要求保护的主题的关键特征或必要特征,也不意图用于孤立地帮助确定所要求保护的主题的范围。
附图说明
以下参照附图各图来详细地描述本发明,其中:
图1示意性地示出针对用于渲染用户所生成的湿墨内容的组件之间的关系的流程图。
图2示意性地示出针对用于渲染各种类型的墨内容的组件之间的关系的流程图。
图3示意性地示出针对用于渲染墨内容的组件之间的关系的流程图。
图4-6示出用于各种类型的墨内容的渲染的过程流。
图7示出用于墨内容在过程线程之间的转移的过程通信流程图。
具体实施方式
综述
在各种方面中,提供了系统和方法,其用于改进针对在墨内容利用触笔、鼠标、手指(或其它触摸输入)或者用于追踪针对墨内容在显示区域中的期望位置的其它绘图设备的用户创建期间的墨显示的延时。为了减少或最小化用于由用户使用触笔/鼠标/触摸输入/其它设备创建的墨内容的显示的时间,可以使用分离的墨渲染过程线程,该分离的墨渲染过程线程在操作系统内操作并且与其它应用线程是并行的。当期望在应用内创建墨内容时,对应于墨内容的创建的用户交互可以由该分离的墨渲染过程线程进行处置。这可以避免在显示墨内容中由于应用处置过程流中的其它事件所致的潜在延迟。由于该分离的墨渲染过程线程与应用进行通信,所以由该分离的墨渲染过程渲染的墨内容仍然可以使用应用的上下文来渲染。这可以允许以与在墨内容向对应应用的转移之后墨内容可以具有的外观基本上类似的外观来向用户显示墨内容。
在各种方面中,本文描述的系统和方法还可以允许在过程线程之间的墨内容处置的转变期间连续地显示由用户创建的新墨内容。当新墨内容的给定部分的创建被视为完成时,可以将已完成的内容的渲染转移至用于对应应用的过程线程。由于墨内容的该特定部分的创建已完成,所以针对新墨内容的延时困难不再是关注点。作为结果,另外的渲染可以由对应应用的过程线程以针对已完成内容的显示中的延时的减少的或最小化的关注来执行。为了进一步改进用户体验,可以同步已完成内容的显示从墨渲染线程到对应的应用过程线程的转移。这可以允许以基本上连续的方式显示内容,而同时消除其中两个过程线程试图显示墨内容的时间段。本发明的各方面还可以防止其中没有过程正在试图显示墨内容的情形。换言之,在本发明的一方面中,一个或另一个过程可以正在显示墨内容,而不是两个过程同时显示墨内容。
关于渲染由用户创建的墨内容的困难之一在于足够快地显示墨内容使得用户的动作看起来导致墨内容的显示。之前已经确定,用户可以感知到在响应于用于创建墨内容的用户动作中的、如大约50毫秒或者更少那么小的延迟。当显示正在由用户创建的墨内容中的延迟可见时,该延迟可以破坏用户体验,因为内容创建可能不再具有使用物理笔在书写表面上创建墨的感觉。不幸地,试图使用针对其中墨内容被创建的应用的过程线程来显示墨内容可以造成不合期望的延时时段。这是由于以下事实所致:典型的应用不具有相对于由应用执行的其它动作而优先化应用过程线程内的涉及墨内容的动作的能力。
作为可替换方案,墨内容的渲染可以完全从操作系统分离开。这可以允许使用绕过操作系统的硬件和/或软件特征来显示用户所创建的新墨内容,并且替代性地直接地在显示区域中显示新墨。在新墨内容的创建之后,然后将新墨内容传递到操作系统,其中可以应用对显示特征的任何修改,使得墨内容被渲染在由对应应用所提供的上下文中。虽然该类型的方法可以减少显示新墨内容中的延时,但是新墨内容的初始显示可能与内容的最终渲染不同。
在一些方面中,本文描述的系统和方法的益处在于改进计算机的性能以便减少针对墨内容的显示的延时。这样的改进还可以导致在墨内容的创建期间的改进的用户体验。
在各种方面中,本文描述的系统和方法可以允许用户使用输入设备来创建墨输入,所述输入设备诸如是触笔、用于接收触摸输入的触摸接口、鼠标、或者可以控制光标在显示区域内的移动的另一设备。可以基于针对用户动作的上下文来确定或检测用户创建墨内容的期望。可以定义对应于用于创建墨内容的动作的动作上下文。然后,可以检测针对用户动作的输入上下文并且将其与动作上下文相比较,以确定输入动作是否为墨创建动作。
一种类型的上下文可以是输入设备自身的性质。这可以被称作模态上下文,其可以基于以下各项来检测:触笔与表面的交互;手指或另一形状与用于触摸输入的表面的交互;使用鼠标移动光标图标(或其它光标标识符);和/或任何其它的便利设备。
第二种类型的上下文可以是位置上下文。可选地,显示器的整个显示区域、触摸表面、输入垫、或者另一类型的用户接口可以准备好在任何时间接收墨内容。在该类型的选项中,可以基于仅模态上下文和/或基于与位置上下文不同的其它类型的上下文而将用户的动作检测为墨创建动作。可替换地,用户接口中的一个或多个区(例如在用户接口的显示区域中)可以被标识为其中可以接收墨内容的区。在该类型的选项中,基于模态上下文和位置上下文的组合而将用户动作检测为墨创建动作。用于潜在地接收墨内容的区可以由用于设备的操作系统预定义;由在设备上运行的应用预定义;或者由用户基于针对一个或多个区的定义而创建。
第三类型的上下文可以是墨创建上下文。一个选项可以是将具有所选模态上下文和/或位置上下文的任何用户动作解释为墨创建动作。可替换地,确定用户动作是墨创建动作可以取决于检测到具体类型的用户动作,诸如利用输入设备的单拍/击或者双拍/击以发起墨内容的创建。这样指定的动作可以对应于墨创建上下文。要指出的是,墨创建上下文可以取决于用户之前是否已经发起过墨创建而变化。例如,在已经发起墨创建之后并且直到检测到结束墨创建的动作(诸如将设备抬离输入表面),通过用户的附加动作(诸如输入设备或光标的移动)可以被解释为墨创建动作。
本发明的各方面不限于以上描述的三种上下文。其它的上下文是可能的。
基于模态上下文、位置上下文、动作上下文和/或用于确定用户动作是否为墨创建动作的任何其它类型的上下文,可以对照上下文来测试用户输入动作以确定用户动作是否为墨创建动作。如果输入动作是墨创建动作,可以将输入动作路由至分离的过程线程,诸如用于渲染由用户创建的墨内容的墨渲染线程。可以将不满足上下文条件的动作传递至用于在用于处置用户输入动作的常规过程线程中的处理的应用和/或操作系统。尽管输入动作的测试可以导致确定输入动作的性质的简短延迟,但是基于在用户创建墨内容时使用用于渲染墨内容的分离的过程线程可以实现延时方面的大幅减少(诸如数十毫秒)。这种类型的测试有时可以被称作“命中测试”。在本发明的一个方面中,命中测试不发生。替代性地,基于接触而生成墨并且在没有命中测试的情况下(并且没有结果得到的延迟)显示墨。如果输入证明是不满足上墨上下文的,则取消墨过程,并且去除所显示的湿墨。
关于在来自底层应用的分离的墨渲染过程线程中处置墨内容的一个潜在关注点在于新墨内容必须最终被转移到该底层应用(或与底层应用同步)。在各种方面中,提供系统和方法,其允许该转移在减少或最小化所显示的墨内容中的改变(包括显示的临时损失)和/或减少或最小化由两个过程线程对内容的双重显示的同时发生。这可以提供在设备的性能方面和在结果得到的用户体验方面二者的益处。
定义
在下面的讨论中,可以使用基于MicrosoftTM操作环境的操作环境来例示根据本发明的系统和方法的示例。此外,使用某些术语以便于描述各种方面中的引用。提供以下明确定义以帮助理解各种方面。
湿墨:在墨笔划正在进行中的同时(也就是说,在接触(例如,笔)尚未被抬离表面的同时)渲染的墨。在各种方面中,湿墨可以转换成半干墨或者干墨或者由其取代。在笔被抬离表面之后,转换过程可以继续一段时间。被渲染的墨保持湿墨,直到被半干墨或者干墨取代。在各种方面中,在分离的墨渲染线程上渲染湿墨。
干墨:在墨笔划完成之后被渲染或被再渲染的墨,或者从墨数据渲染的墨,所述墨数据从除了输入之外的源(持续的墨内容)加载。
半干墨:待同步到干墨层的中间层中的墨。在各种方面中,半干墨可以在分离的墨渲染过程线程上渲染。
湿/干同步:允许以下的机制:干墨被渲染并且使其在干墨线程上可见,并且湿墨以确保以下各项的方式在墨线程上被清除:a)当对应的干墨变得可见时湿墨不仍旧可见;b)在对应的干墨变得可见之前湿墨不消失;以及c)从不阻止墨线程处理输入和渲染另外的湿墨。
主机:用户在其内创建新墨内容的一部分的底层应用或框架。
主机线程:用于底层应用或者用户接口的过程线程。
墨渲染线程:在其上所选类型的输入被接收和处理以渲染湿墨的背景线程(优选地在操作系统内创建)。要指出的是,该线程由用于过程内的湿墨渲染的所有实例所共享。
干墨线程:在其上向渲染组件或线程递送墨数据的线程。在一个方面中,主机线程是渲染线程,但是其它的选项是可能的,包括专用墨渲染线程。
输入重定向:向输入堆栈登记以使得匹配指定特性的输入(例如用于创建湿墨的输入)被自动地路由至指定线程而不是默认的UI线程的机制。在各种方面中,指定特性可以对应于输入的模态,例如触笔的使用、手指(或其它触摸输入)的使用、或者适合于创建湿墨的其它输入设备的使用。在各种方面中,指定特性可以进一步指定这样的输入设备在已经被定义用于接收湿墨输入的用户接口的一部分内的使用。
InkManager:窗口运行时类。其提供管理输入、操纵以及一个或多个墨对象的处理(包括手写识别)的属性和方法。
D2D:Direct2D。提供用于2-D几何结构、位图和文本的高性能和高质量渲染的经硬件加速的、中间模式、2D图形API。其被设计成支持与诸如Direct3D之类的其它渲染技术的互操作。
D3D:Direct3D。用于以渲染管线绘制基元或者与计算着色器执行并行操作的低层级API。其将不同的GPU实现隐藏在连贯(coherent)抽象后面并且被设计成驱动图形特定处理器。
DComp:DirectComposition。使得能够实现与变换、效果以及动画的高性能位图合成的Windows组件。其可以组合来自各种源的位图并且利用桌面窗口管理器(DWM)以用于向屏幕渲染。
DXGI:微软DirectX图形基础设施。其管理可以独立于Direct3D图形运行时的低层级任务。其还提供用于Direct3D的若干版本的公共框架。
用于处置墨内容的过程流
图1示出用于使用分离的墨渲染过程线程的湿墨内容的渲染的过程流的示例。在图1中所示的过程流中,用户可以使用诸如鼠标、触笔、笔、或者触摸接口(用于接收触摸输入)之类的硬件组件来提供用于创建湿墨内容的输入动作。输入硬件102可以将该输入传递至硬件驱动器104并且最终传递至输入测试器110。输入测试器可以评估针对输入动作的上下文(包括硬件的性质和/或与输入动作相关联的显示器内的位置),以确定输入动作是否对应于用于创建湿墨内容的动作。
如果用户动作对应于创建湿墨内容,将输入动作转向湿墨过程线程120。如图1中所示,湿墨过程线程120仅处置有限数目的动作,这可以减少或最小化针对处置湿墨渲染动作中的延迟的潜在可能。这与由一般的用户接口和/或应用过程线程130处置的多种类型的动作形成对比。例如,仅就墨内容的处置而言,用户接口和/或应用过程线程130可以:提供用于墨内容的一般显示的应用程序接口132;提供用于墨内容的附加处理(诸如手写识别)的应用程序接口134;接收针对当已经添加墨笔划时的输入136,使得可以显示结果得到的墨内容;以及处置之前创建的干墨内容138(诸如序列化的墨内容)的显示。
在接收到湿墨输入之后,湿墨过程线程120可以渲染124湿墨内容并且将被渲染的内容传递回操作系统的图形处理元件,诸如合成器150。最终,将被渲染的湿墨传递至硬件图形显示元件160以用于向用户显示。
使用如图1中所示的过程流的系统可以提供各种优势。例如,这种类型的过程流可以提供独立于应用/UI线程的低延时湿墨渲染,即,输入直接流向高优先级背景线程(图1中所示的湿墨线程)并且将从未被UI/app线程活动所阻挡。可选地但是优选地,系统可以使用针对默认的笔类型良好地工作的湿贝塞尔算法,以及相对于常规系统以15ms或者更多地减少延时的预测。这样的系统还可以与用于更改墨特性的压力建模兼容。此外,部分地基于处于操作系统内的湿墨过程线程,湿墨过程线程可以渲染与墨绘制特质(颜色、形状、大小、类型等)相匹配的笔光标。
图2示出另一过程流,其包括用于湿墨(即,在通过用户的创建过程期间的墨)和干墨(即,由用户之前录入的和/或从数据源获得的墨内容)二者的显示的过程线程。在图1中的过程流中,由用户创建的墨内容可以在墨内容的创建完成之后由湿墨过程线程渲染。图1中的干墨内容渲染对应于之前定义的干墨内容(诸如从源文件检索到的内容)的渲染。在图2中,示出附加的流以允许由用户创建的墨内容从湿墨过程线程到用户接口/应用/用于干墨内容的渲染的其它线程的转移。
在图2中,湿墨线程120可以经由与两个线程通信的组件而与用户接口线程130(以及可选的分离的干墨渲染线程233)通信。这些组件可以包括同步湿墨从湿墨线程120到用户接口线程130的转移的InkSync组件242。组件还可以包括向组件提供转移已经完成的验证的提交管理器246。例如,提交管理器246可以在已经由湿墨线程120完成从湿墨到中间墨(或半湿墨)的转换时告知用户接口线程130。类似地,提交管理器246可以在用户接口线程130已经开始渲染经转移的干墨内容时告知湿墨线程120,使得湿墨120可以停止对应的中间墨内容的渲染。
组件关系
图3示出可以用于用户创建的墨内容(湿墨)的渲染以及湿墨从分离的墨渲染线程到与应用相关联的过程线程的转移的各种组件之间的关系。在图3中,主机应用310或者其它框架(潜在地包括操作系统)可以经由一个或多个应用编程接口320与总“DirectInk核”模块330通信。图3中示出的应用编程接口320包括输入接口和墨处置接口。当由主机310接收到被检测为湿墨输入(或者要被湿墨过程线程处置的另一类型的输入)的输入时,将该输入传递到模块330中。
DirectInkCore实现对象332是创建和协调模块330中所示的其它对象中的大多数对象的容器对象。Marshaller 342拥有墨线程并且实现用于线程之间的通知的机制,从而将通知机制与其它组件相隔离。输入上下文对象336是登记输入重定向并且接收墨线程上的输入的输入汇集对象。Ink Sync对象346是实现用于湿/干墨同步的机制的同步引擎。提交管理器352是执行DComp提交并且将其它组件与DComp提交完成通知的细节相隔离的共享对象。渲染管理器370追踪要用于湿、半干以及干层的渲染器实例并且将渲染请求路由至合适的渲染器实例。渲染管理器370还可以根据要求创建默认的渲染器实例,并且根据要求管理定制渲染器实例。渲染器372是高层级渲染器对象。渲染器实现374是在给定表面/上下文、墨数据和绘图特质的情况下执行实际渲染的低层级渲染器对象。墨建模器376从输入(可选地,利用预测)创建平滑的贝塞尔部段。
墨树数据对象340是创建和维护DComp视觉子树的数据对象,DComp视觉子树表示用于DirectInkCore实例的墨子树连同用于湿、半干和干层的相关联的墨数据。
图4示出用于处置对应于湿墨的输入的到达以及湿墨输入的渲染的数据流。在图4中,被标识为湿墨的输入由系统输入堆栈410递送至输入上下文组件420。输入可选地可以被传递至任何输入插件425。还将输入传递至InkSync组件430。InkSync 430可以向InkTreeData组件440传递正在创建新墨内容的信息。InkSync还可以命令渲染管理器450渲染湿墨。最后,当完成墨内容的录入时,InkSync 430可以通知提交管理器460。
图5示出用于在通过用户完成墨内容部分的录入之后对半干或中间墨进行渲染的数据流。在图5中,数据流在Ink Sync组件430通知InkTreeData 440已经完成墨内容部分的创建时开始,因此墨内容部分可以从湿墨状态移动至中间墨状态。渲染管理器450然后可以接收指令以使用中间或半干墨渲染器实例对墨内容的已完成部分进行渲染,从而允许湿墨渲染器实例准备好用于另一墨内容创建事件。在通知提交管理器460之后,marshaller 470可以被传递以下通知:墨对于转移到由主机或底层应用管理的干墨渲染过程线程是可用的。
图6示出用于墨从湿墨过程线程到干墨过程线程的(同步化)转移的过程流。在图6中,InkSync 430从Marshaller 470接收墨可用信号。InkSync 430然后告知InkTreeData440以将墨内容从半干状态拷贝到干状态。使用墨回调672将针对将墨渲染为干墨的笔划信息传递到墨处置器680。墨内容还被传递到渲染管理器450以用于利用干墨渲染器实例的渲染。在这完成之后,InkSync 430通知InkTreeData 440可以隐藏墨内容的半干版本,使得湿墨线程不再处置墨内容。
图7示出用于湿墨渲染线程(墨)和用于干墨渲染线程(主机)的DComp实例之间的通信流。图7中的通信流示出可以如何同步湿墨到干墨的转移以减少或最小化其中干墨线程和湿墨线程二者试图显示墨内容的时间,而同时避免墨内容的显示中的不连续性。
在图7中,墨线程703通过开始移动湿到半湿过程710而发起呼叫。DComp组件701利用提交呼叫712与墨线程进行确认。然后将墨可用呼叫714传递至主机线程706。主机线程706发起拷贝半干到干呼叫716,以在墨树内移动数据。在完成该拷贝之后,还做出隐藏半干数据的呼叫718。利用提交呼叫722与Dcomp主机线程708确认半干到干的转变。然后向墨线程703返回半干墨到干墨的转移完成的呼叫724。然后,清除726通过湿墨线程对半干墨的渲染,利用提交呼叫732来确认。然后将关于半干墨的清除的呼叫734传递到主机线程706。
附加示例
已经简要地描述了本发明的各种实施例的概述,现在描述适合用于执行本发明的示例性操作环境。本发明的实施例可以在计算机代码或者机器可使用的指令的一般上下文中描述,所述机器可使用的指令包括诸如程序模块之类的、由计算机或诸如个人数据助理或其它手持设备之类的其它机器执行的计算机可执行指令。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明可以以各种系统配置来实践,包括手持设备、消费电子产品、通用计算机、更加专用的计算设备等。本发明还可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
适当的计算设备可以包括直接或间接地耦合以下设备的总线:存储器、一个或多个处理器、一个或多个呈现组件、输入/输出(I/O)端口、I/O组件以及电源。总线表示可以是一个或多个总线(诸如地址总线、数据总线或其组合)的总线。尽管为了清楚起见,将各种组件描述为单独的组件,但是实际上,刻画各种组件不是如此清楚的,并且打比方来说,线将更准确地是灰色和模糊的。例如,人们可以将诸如显示设备之类的呈现组件视为I/O组件。此外,许多处理器具有存储器。在诸如“工作站”、“服务器”、“膝上型电脑”、“手持设备”、“平板电脑”等之类的类别之间不做区分,因为这所有都被设想到处于“计算设备”的范围内。
计算机存储介质包括实现在用于信息的存储的任何方法或技术中的易失性和非易失性、可移除和不可移除的介质,所述信息诸如是计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器或者其它存储器技术、CD-ROM、数字多用盘(DVD)或者其它全息存储器、磁盒、磁带、磁盘存储装置或者其它磁性存储设备、或者可以用于对期望的数据进行编码并且可以由计算设备100访问的任何其它介质。在实施例中,计算机存储介质可以选自于比如闪速存储器那样的有形计算机存储介质。这些存储器技术可以随时地、临时地或者永久地存储数据。计算机存储装置不包括并且排除通信介质。计算机存储介质是非暂时性的并且排除传播的数据信号。
另一方面,通信介质典型地体现计算机可读指令、数据结构、程序模块或者诸如载波或其它输运机制之类的经调制的数据信号中的其它数据,并且包括任何信息递送介质。术语“经调制的数据信号”意指以便于在信号中编码信息的这样的方式对其特性中的一个或多个进行设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接接线的连接之类的有线介质,以及诸如声学、RF、红外和其它无线介质之类的无线介质。
存储器可以包括以易失性和/或非易失性存储器的形式的计算机可读介质。存储器可以是可移除的、不可移除的或者其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等等。计算设备可以包括从诸如存储器或者I/O组件之类的各种实体读取数据的一个或多个处理器。(多个)呈现组件向用户或其它设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等等。
I/O端口可以允许计算设备逻辑地耦合到包括I/O组件的其它设备,一些I/O组件可以是内置的。说明性组件可以包括麦克风、操纵杆、游戏垫、圆盘式卫星、扫描仪、打印机、无线设备等。I/O组件可以包括从多个输入类型接收一个或多个输入类型的组件,所述输入类型诸如是触摸输入(例如,与基于与键盘或鼠标的交互的显示器上的间接移动相对,触摸或者接近显示接口)、手势输入、触觉输入、话音输入、接近输入、与诸如以上标识的输入设备之类的次级输入设备的交互、或者任何其它便利类型的输入。
计算设备可以包括无线电设备。无线电设备传输和接收无线电通信。计算设备可以是适配于通过各种无线网络而接收到的通信和媒体的无线终端。计算设备1100可以经由无线协议进行通信以与其它设备通信,所述无线协议诸如是诸如码分多址(“CDMA”)、全球移动系统(“GSM”)或者时分多址(“TDMA”)以及其它无线协议。无线电通信可以是短程连接、长程连接或者短程和长程无线电信连接二者的组合。当我们提到“短”和“长”类型的连接时,我们不意味着指代两个设备之间的空间关系。而是,我们一般将短程和长程指代为不同类别或类型的连接(即,主连接和次连接)。短程连接可以包括到设备(例如,移动热点)的连接,其提供对无线通信网络的访问,诸如使用802.11协议的WLAN连接。到另一计算设备的蓝牙连接是短程连接的第二示例。长程连接可以包括使用CDMA、GPRS、GSM、TDMA和802.16协议中的一个或多个的连接。
已经关于特定实施例描述了本发明的实施例,它们在所有方面中都意图是说明性的而不是限制性的。对于本发明所属领域的普通技术人员而言,在不脱离其范围的情况下,可替换的实施例将变得显而易见。
实施例1.一种用于在显示设备上渲染墨内容的方法,包括:定义用于接收墨输入动作的动作上下文,动作上下文至少包括模态上下文;通过应用接收输入动作,输入动作具有输入上下文;将所接收的输入动作检测为墨创建动作,所接收的输入动作基于输入上下文对应于所定义的动作上下文而被检测为墨创建动作,所检测到的墨创建动作对应于墨内容;将所检测到的墨创建动作引导至湿墨渲染过程线程,湿墨渲染线程不同于针对应用的应用处理线程;以小于延时阈值的延时通过湿墨渲染线程渲染墨内容;以及检测对应于墨创建的结束的输入动作。
实施例2.实施例1的方法,还包括:将墨内容从湿墨渲染线程转移至应用渲染线程,应用渲染线程不同于湿墨渲染线程并且可选地不同于应用处理线程;通过应用渲染线程渲染被转移的墨内容;以及移除通过湿墨渲染线程渲染的墨内容。
实施例3.实施例2的方法,其中将墨内容从湿墨渲染线程转移至应用渲染线程包括:在检测到对应于墨创建的结束的输入动作之后,将墨内容转换成中间墨内容;将中间墨内容转移至应用渲染线程;以及将通过应用渲染线程对被转移的中间墨内容的渲染与通过湿墨渲染线程渲染的墨内容的移除同步。
实施例4.以上实施例中任一个的方法,其中延时阈值大约为75毫秒或更少,或者大约60毫秒或更少,或者大约50毫秒或更少。
实施例5.以上实施例中任一个的方法,其中模态上下文包括以下输入模式:笔输入、触笔输入、触摸输入、鼠标输入或其组合。
实施例6.以上实施例中任一个的方法,其中所定义的动作上下文还包括位置上下文。
实施例7.实施例6的方法,其中位置上下文包括显示设备的显示区域的区,所述区所包括的少于显示区域的总面积。
实施例8.实施例6或7的方法,其中位置上下文包括显示设备的显示区域的多个区,或者其中位置上下文包括来自多个显示区域的多个区。
实施例9.以上实施例中的任一个的方法,其中输入上下文和动作上下文中的至少一个还包括针对通过湿墨渲染线程渲染的墨的一个或多个显示属性。
实施例10.权利要求9的方法,还包括:在通过湿墨渲染线程对墨内容进行渲染的期间,检测针对通过湿墨渲染线程渲染的墨的一个或更多显示属性中的改变;以及使用改变的一个或多个显示属性来渲染墨内容的至少部分。
实施例11.实施例10的方法,其中利用在检测到输入动作对应于墨创建的结束之前的改变的一个或多个显示属性来渲染在检测到所述一个或多个显示属性中的改变之前所渲染的墨内容的至少部分。
实施例12.以上实施例中的任一个的方法,其中动作上下文还包括墨创建上下文。
从上文将看到,本发明是良好地适配成达成以上所阐述的所有目标和目的连同显而易见的和结构所固有的其它优势的发明。
将理解到的是,某些特征和子组合具有实用性,并且可以在不参照其它特征和子组合的情况下利用。这由权利要求所设想到并且在权利要求的范围内。
Claims (15)
1.一种用于在显示设备上渲染墨内容的方法,包括:
定义用于接收墨输入动作的动作上下文,动作上下文至少包括模态上下文;
通过应用接收输入动作,输入动作具有输入上下文;
由于输入上下文满足由动作上下文指定的准则,因此将输入动作检测为墨创建动作,墨创建动作对应于墨内容;
将墨创建动作引导至湿墨渲染线程,湿墨渲染线程不同于针对应用的应用处理线程;
以小于延时阈值的延时而通过湿墨渲染线程来渲染墨内容;以及
检测对应于墨创建的结束的附加输入动作。
2.权利要求1所述的方法,还包括:
将墨内容从湿墨渲染线程转移至应用渲染线程,应用渲染线程可选地不同于应用处理线程;
通过应用渲染线程渲染墨内容;以及
移除通过湿墨渲染线程渲染的墨内容。
3.权利要求2所述的方法,其中将墨内容从湿墨渲染线程转移至应用渲染线程包括:
在检测到对应于墨创建的结束的附加输入动作之后,将墨内容转换成中间墨内容;
将中间墨内容转移至应用渲染线程;以及
将通过应用渲染线程对中间墨内容的渲染与通过湿墨渲染线程渲染的墨内容的移除同步。
4.权利要求1所述的方法,其中延时阈值大约为75毫秒或更少。
5.权利要求1所述的方法,其中模态上下文包括以下输入模式:笔输入、触笔输入、触摸输入、鼠标输入或其组合。
6.权利要求1所述的方法,其中动作上下文还包括位置上下文。
7.权利要求6所述的方法,其中位置上下文包括显示设备的显示区域的区,所述区所包括的少于显示区域的总面积。
8.权利要求6所述的方法,其中位置上下文包括显示设备的显示区域的多个区。
9.权利要求6所述的方法,其中位置上下文包括来自多个显示区域的多个区。
10.权利要求1所述的方法,其中输入上下文和动作上下文中的至少一个还包括针对通过湿墨渲染线程渲染的墨的一个或多个显示属性。
11.权利要求10所述的方法,还包括:
在通过湿墨渲染线程对墨内容的渲染期间,检测所述一个或多个显示属性已经被更新以形成针对通过湿墨渲染线程渲染的墨的改变的一个或多个显示属性;以及
使用改变的一个或多个显示属性来渲染墨内容的至少部分。
12.权利要求11所述的方法,其中利用在检测到对应于墨创建的结束的附加输入动作之前的改变的一个或多个显示属性来渲染在检测到所述一个或多个显示属性已经被更新之前所渲染的墨内容的至少部分。
13.权利要求1所述的方法,其中动作上下文还包括墨创建上下文。
14.一种计算系统,包括:
处理器;以及
具有存储在其上的计算机可执行指令的计算机存储存储器,当所述指令由处理器执行时实现用于在显示设备上渲染墨内容的方法,所述方法包括:
定义用于接收墨输入动作的动作上下文,动作上下文至少包括位置上下文和模态上下文;
通过应用接收输入动作,输入动作具有输入上下文;
由于输入上下文满足由动作上下文指定的准则,因此将输入动作检测为墨创建动作,墨创建动作对应于墨内容;
将墨创建动作引导至湿墨渲染线程,湿墨渲染线程不同于针对应用的应用处理线程;
以小于延时阈值的延时而通过湿墨渲染线程来渲染墨内容;
检测对应于墨创建的结束的附加输入动作;
将墨内容从湿墨渲染线程转移至应用渲染线程;
通过应用渲染线程渲染墨内容;以及
移除通过湿墨渲染线程渲染的墨内容。
15.权利要求14所述的计算机系统,其中输入上下文和动作上下文中的至少一个还包括针对通过湿墨渲染线程渲染的墨的一个或多个显示属性,
移除通过湿墨渲染线程渲染的墨内容。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/500997 | 2014-09-29 | ||
US14/500,997 US9633466B2 (en) | 2014-09-29 | 2014-09-29 | Low latency ink rendering pipeline |
PCT/US2015/052755 WO2016053916A1 (en) | 2014-09-29 | 2015-09-29 | Low latency ink rendering pipeline |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003908A true CN107003908A (zh) | 2017-08-01 |
CN107003908B CN107003908B (zh) | 2020-08-21 |
Family
ID=54291685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580052962.4A Active CN107003908B (zh) | 2014-09-29 | 2015-09-29 | 低延时墨渲染管线 |
Country Status (11)
Country | Link |
---|---|
US (1) | US9633466B2 (zh) |
EP (1) | EP3201750A1 (zh) |
JP (1) | JP6619798B2 (zh) |
KR (1) | KR102352536B1 (zh) |
CN (1) | CN107003908B (zh) |
AU (1) | AU2015324050B2 (zh) |
BR (1) | BR112017003820A2 (zh) |
CA (1) | CA2962793A1 (zh) |
MX (1) | MX2017004056A (zh) |
RU (1) | RU2705009C2 (zh) |
WO (1) | WO2016053916A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110235097A (zh) * | 2017-02-03 | 2019-09-13 | 微软技术许可有限责任公司 | 用于着墨应用用户界面的可反转数字墨水 |
WO2019237636A1 (zh) * | 2018-06-15 | 2019-12-19 | 广州视源电子科技股份有限公司 | 双系统设备及其书写方法、装置和交互智能平板 |
CN115220853A (zh) * | 2022-09-21 | 2022-10-21 | 广州市保伦电子有限公司 | 基于多线程的墨迹作图方法、装置、设备及存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10147159B2 (en) | 2017-04-07 | 2018-12-04 | Microsoft Technology Licensing, Llc | Ink render using high priority queues |
US10580111B2 (en) | 2018-03-20 | 2020-03-03 | Microsoft Technology Licensing, Llc | Display ink rendering during system sleep |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1795453A (zh) * | 2003-10-24 | 2006-06-28 | 微软公司 | 实时墨迹作图 |
CN102810199A (zh) * | 2012-06-15 | 2012-12-05 | 成都平行视野科技有限公司 | 一种基于gpu的图像处理方法 |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
CN103632337A (zh) * | 2012-05-07 | 2014-03-12 | 英特尔公司 | 实时的顺序无关透明渲染 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6707473B2 (en) | 2001-08-01 | 2004-03-16 | Microsoft Corporation | Dynamic rendering of ink strokes with transparency |
RU2326435C2 (ru) * | 2003-08-21 | 2008-06-10 | Майкрософт Корпорейшн | Обработка электронных чернил |
CN100414559C (zh) | 2003-08-21 | 2008-08-27 | 微软公司 | 电子墨水处理方法和系统 |
US7499058B2 (en) | 2005-04-22 | 2009-03-03 | Microsoft Corporation | Programmatical access to handwritten electronic ink in a tree-based rendering environment |
US8130226B2 (en) | 2006-08-04 | 2012-03-06 | Apple Inc. | Framework for graphics animation and compositing operations |
US8416197B2 (en) | 2007-06-15 | 2013-04-09 | Ricoh Co., Ltd | Pen tracking and low latency display updates on electronic paper displays |
US8203527B2 (en) | 2009-04-24 | 2012-06-19 | Seiko Epson Corporation | Minimizing pen stroke capture latency |
EP3629139A1 (en) | 2009-04-30 | 2020-04-01 | Wacom Co., Ltd. | Operating a touch screen control system according to a plurality of rule sets |
US9189147B2 (en) | 2010-06-22 | 2015-11-17 | Microsoft Technology Licensing, Llc | Ink lag compensation techniques |
US9612739B2 (en) | 2012-02-02 | 2017-04-04 | Microsoft Technology Licensing, Llc | Low-latency touch-input device |
EP2904484A4 (en) | 2012-10-05 | 2016-06-01 | Tactual Labs Co | HYBRID SYSTEMS AND METHODS FOR THE PROCESSING AND FEEDBACK OF LOW-LATENCY USER ENTRY |
US9389717B2 (en) | 2012-12-14 | 2016-07-12 | Microsoft Technology Licensing, Llc | Reducing latency in ink rendering |
US9632615B2 (en) * | 2013-07-12 | 2017-04-25 | Tactual Labs Co. | Reducing control response latency with defined cross-control behavior |
US10146409B2 (en) * | 2014-08-29 | 2018-12-04 | Microsoft Technology Licensing, Llc | Computerized dynamic splitting of interaction across multiple content |
US10338725B2 (en) * | 2014-09-29 | 2019-07-02 | Microsoft Technology Licensing, Llc | Wet ink predictor |
-
2014
- 2014-09-29 US US14/500,997 patent/US9633466B2/en active Active
-
2015
- 2015-09-29 RU RU2017110229A patent/RU2705009C2/ru active
- 2015-09-29 WO PCT/US2015/052755 patent/WO2016053916A1/en active Application Filing
- 2015-09-29 CN CN201580052962.4A patent/CN107003908B/zh active Active
- 2015-09-29 MX MX2017004056A patent/MX2017004056A/es active IP Right Grant
- 2015-09-29 KR KR1020177008417A patent/KR102352536B1/ko active IP Right Grant
- 2015-09-29 AU AU2015324050A patent/AU2015324050B2/en active Active
- 2015-09-29 EP EP15778520.5A patent/EP3201750A1/en not_active Withdrawn
- 2015-09-29 JP JP2017508035A patent/JP6619798B2/ja active Active
- 2015-09-29 CA CA2962793A patent/CA2962793A1/en not_active Abandoned
- 2015-09-29 BR BR112017003820A patent/BR112017003820A2/pt not_active Application Discontinuation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1795453A (zh) * | 2003-10-24 | 2006-06-28 | 微软公司 | 实时墨迹作图 |
CN103632337A (zh) * | 2012-05-07 | 2014-03-12 | 英特尔公司 | 实时的顺序无关透明渲染 |
CN102810199A (zh) * | 2012-06-15 | 2012-12-05 | 成都平行视野科技有限公司 | 一种基于gpu的图像处理方法 |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110235097A (zh) * | 2017-02-03 | 2019-09-13 | 微软技术许可有限责任公司 | 用于着墨应用用户界面的可反转数字墨水 |
CN110235097B (zh) * | 2017-02-03 | 2022-08-30 | 微软技术许可有限责任公司 | 用于着墨应用用户界面的可反转数字墨水 |
WO2019237636A1 (zh) * | 2018-06-15 | 2019-12-19 | 广州视源电子科技股份有限公司 | 双系统设备及其书写方法、装置和交互智能平板 |
CN110609653A (zh) * | 2018-06-15 | 2019-12-24 | 广州视源电子科技股份有限公司 | 双系统设备及其书写方法、装置和交互智能平板 |
US11614912B2 (en) | 2018-06-15 | 2023-03-28 | Guangzhou Shiyuan Electronics Co., Ltd. | Dual-system device and writing method and apparatus thereof, and interactive intelligent tablet |
CN115220853A (zh) * | 2022-09-21 | 2022-10-21 | 广州市保伦电子有限公司 | 基于多线程的墨迹作图方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR102352536B1 (ko) | 2022-01-17 |
BR112017003820A2 (pt) | 2017-12-05 |
MX2017004056A (es) | 2017-06-12 |
US20160093087A1 (en) | 2016-03-31 |
AU2015324050A1 (en) | 2017-03-16 |
EP3201750A1 (en) | 2017-08-09 |
WO2016053916A1 (en) | 2016-04-07 |
RU2017110229A3 (zh) | 2019-04-16 |
RU2705009C2 (ru) | 2019-11-01 |
AU2015324050B2 (en) | 2020-06-25 |
CN107003908B (zh) | 2020-08-21 |
RU2017110229A (ru) | 2018-10-01 |
US9633466B2 (en) | 2017-04-25 |
JP6619798B2 (ja) | 2019-12-11 |
JP2017532634A (ja) | 2017-11-02 |
CA2962793A1 (en) | 2016-04-07 |
KR20170061134A (ko) | 2017-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107003908A (zh) | 低延时墨渲染管线 | |
US10157593B2 (en) | Cross-platform rendering engine | |
US9672795B2 (en) | Wet ink texture engine for reduced lag digital inking | |
CN107003993A (zh) | 湿墨预测器 | |
EP2932362B1 (en) | Reducing latency in ink rendering | |
US20140143305A1 (en) | Apparatus and system for providing software service using software virtualization and method thereof | |
US9654603B1 (en) | Client-side rendering for virtual mobile infrastructure | |
EP3198409B1 (en) | Partitioned application presentation across devices | |
EP2756481B1 (en) | System and method for layering using tile-based renderers | |
US9300720B1 (en) | Systems and methods for providing user inputs to remote mobile operating systems | |
CN110785741B (zh) | 生成用户界面容器 | |
EP3210101B1 (en) | Hit-test to determine enablement of direct manipulations in response to user actions | |
US20240143350A1 (en) | Rules Based User Interface Generation | |
Chen et al. | MSA: A Novel App Development Framework for Transparent Multi-Screen Support on Android Apps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |