JP6619798B2 - 低レイテンシのインクレンダリングパイプライン - Google Patents

低レイテンシのインクレンダリングパイプライン Download PDF

Info

Publication number
JP6619798B2
JP6619798B2 JP2017508035A JP2017508035A JP6619798B2 JP 6619798 B2 JP6619798 B2 JP 6619798B2 JP 2017508035 A JP2017508035 A JP 2017508035A JP 2017508035 A JP2017508035 A JP 2017508035A JP 6619798 B2 JP6619798 B2 JP 6619798B2
Authority
JP
Japan
Prior art keywords
ink
action
input
rendering
content
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
JP2017508035A
Other languages
English (en)
Other versions
JP2017532634A5 (ja
JP2017532634A (ja
Inventor
チュ,ジャオ
メノン,クリシュナン
ション,フェイ
ホン,ソン
ウォーカー デューホン,デイビッド
ウォーカー デューホン,デイビッド
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 Corp
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Publication of JP2017532634A publication Critical patent/JP2017532634A/ja
Publication of JP2017532634A5 publication Critical patent/JP2017532634A5/ja
Application granted granted Critical
Publication of JP6619798B2 publication Critical patent/JP6619798B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing 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/03545Pens or stylus
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/39Control of the bit-mapped memory
    • G09G5/395Arrangements 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)

Description

[0001] タブレットコンピューティングデバイス(又は同様のタイプの組み込み型デバイス)は、しばしば、ユーザがデータをデバイスに入力できるようにするタッチスクリーンを含む。ユーザによるデータ入力は、指、マウス、スタイラス(又はペン)などを使用して実行することができる。ペン(又は指)からデバイスへの入力は「インク」と呼ばれる。
[0002] インクは、コンピューティングデバイスによって処理及び操作できるようにデジタル化され、表示される。これは、典型的にはデジタル化されたインクをデバイス上のオペレーティングシステムに送信し、プロセッサにインクを処理させた後、処理されたインクをグラフィクスカードに送信することによって実行される。次いでグラフィクスカードは、(ユーザのアクションの効果である)インクをモニタ又はディスプレイ上にレンダリングする。
[0003] 現在のインクレンダリング技法の1つの欠陥は、導入されるレイテンシである。インクのレンダリングは遅れる傾向がある一方で、ペン及び指は高速で事実上瞬間的な傾向がある。実際、インクレンダリングプロセス全体で、約70から200ミリ秒或いはそれよりも長い可能性のあるレイテンシを導入する可能性がある。インクレンダリングにおけるこのレイテンシが、低速で厄介なユーザ体験を生み出す可能性がある。
[0004] 特にこのレイテンシは、オブジェクトを直接操作する知覚的バリアを破るという点で、望ましくない影響である。もちろんこれらは、コロケート体験が存在する状況ではほとんどが知覚される。言い換えれば、入力及び出力が互いにコロケートしている場合(タブレットコンピューティングデバイス又はタッチスクリーン上でのスタイラスによる書き込みなど)、レイテンシの影響は最大である。
[0005] ユーザがスタイラス、マウス、指(又は他のタッチ入力)、或いは、表示域内でインクコンテンツにとって望ましい位置をトレースするための他の描画デバイスを用いてインクコンテンツを作成する間、インクの表示に関するレイテンシを向上させるためのシステム及び方法が提供される。ユーザがスタイラス/マウス/タッチ入力/他のデバイスを使用することによって作成されるインクコンテンツの表示のための時間を削減又は最小化するために、オペレーティングシステム内で他のアプリケーションスレッドと並行して動作する、個別のインクレンダリングプロセススレッドを使用することができる。アプリケーション内でインクコンテンツを作成することが望ましい場合、インクコンテンツの作成に対応するユーザ対話は、個別のインクレンダリングプロセススレッドによって扱うことができる。これにより、プロセスフロー内で他のイベントを扱うアプリケーションに起因する、インクコンテンツを表示する際の潜在的な遅延を回避することができる。個別のインクレンダリングプロセススレッドがアプリケーションと通信するため、個別のインクレンダリングプロセスによってレンダリングされるインクコンテンツは、依然としてアプリケーションのコンテキストを使用してレンダリングすることができる。これにより、インクコンテンツを対応するアプリケーションに転送した後に、インクコンテンツが有し得る外観とほぼ同様の外観で、インクコンテンツをユーザに表示することが可能となる。
[0006] 本概要は、以下の発明を実施するための形態でより詳細に説明する概念の選択を、簡略化された形で紹介するために提供される。本概要は、請求される課題の主要な特徴又は不可欠な特徴を識別することは意図されておらず、請求される課題の範囲を決定する際に、単独で、補助として使用することも意図されていない。
[0007] 本発明は、添付の図面を参照しながら以下で詳細に説明する。
[0008]ユーザによって生成されるウェットインクコンテンツをレンダリングするための、コンポーネント間の関係についてのフロー図を概略的に示す図である。 [0009]様々なタイプのインクコンテンツをレンダリングするための、コンポーネント間の関係についてのフロー図を概略的に示す図である。 [0010]インクコンテンツをレンダリングするための、コンポーネント間の関係についてのフロー図を概略的に示す図である。 [0011]様々なタイプのインクコンテンツのレンダリングに関するプロセスフローを示す図である。 [0011]様々なタイプのインクコンテンツのレンダリングに関するプロセスフローを示す図である。 [0011]様々なタイプのインクコンテンツのレンダリングに関するプロセスフローを示す図である。 [0012]プロセススレッド間でのインクコンテンツの転送に関するプロセス通信フローを示す図である。
[0013] 様々な態様において、ユーザがスタイラス、マウス、指(又は他のタッチ入力)、或いは、表示域内でインクコンテンツにとって望ましい位置をトレースするための他の描画デバイスを用いてインクコンテンツを作成する間、インクの表示に関するレイテンシを向上させるためのシステム及び方法が提供される。ユーザがスタイラス/マウス/タッチ入力/他のデバイスを使用することによって作成されるインクコンテンツの表示のための時間を削減又は最小化するために、オペレーティングシステム内で他のアプリケーションスレッドと並行して動作する、個別のインクレンダリングプロセススレッドを使用することができる。アプリケーション内でインクコンテンツを作成することが望ましい場合、インクコンテンツの作成に対応するユーザ対話は、個別のインクレンダリングプロセススレッドによって扱うことができる。これにより、プロセスフロー内で他のイベントを扱うアプリケーションに起因する、インクコンテンツを表示する際の潜在的な遅延を回避することができる。個別のインクレンダリングプロセススレッドがアプリケーションと通信するため、個別のインクレンダリングプロセスによってレンダリングされるインクコンテンツは、依然としてアプリケーションのコンテキストを使用してレンダリングすることができる。これにより、インクコンテンツを対応するアプリケーションに転送した後に、インクコンテンツが有し得る外観とほぼ同様の外観で、インクコンテンツをユーザに表示することが可能となる。
[0014] 様々な態様において、本明細書で説明するシステム及び方法は、プロセススレッド間でのインクコンテンツの取り扱いの遷移中、ユーザによって作成される新しいインクコンテンツを連続的に表示することができる。新しいインクコンテンツの所与の部分の作成が完了したものと見なされる場合、完了したコンテンツのレンダリングを、対応するアプリケーションについてのプロセススレッドに転送することができる。インクコンテンツの特定の部分の作成が完了しているため、新しいインクコンテンツに関するレイテンシの難点はもはや問題ではない。結果として、完了したコンテンツの表示におけるレイテンシについての問題が低減又は最小化された対応するアプリケーションのプロセススレッドによって、更なるレンダリングを実行することができる。ユーザ体験を更に向上させるために、インクレンダリングスレッドから対応するアプリケーションプロセススレッドへの、完了したコンテンツの表示の転送を、同期化することができる。これにより、両方のプロセススレッドがインクコンテンツの表示を試行する期間をなくす一方で、コンテンツをほぼ連続して表示できるようになる。本発明の態様は、いずれのプロセスもインクコンテンツの表示を試行していない状況を防止することもできる。言い換えれば、本発明の態様において、一方又は他方のプロセスはインクコンテンツを表示することができるが、両方が同時に表示することはない。
[0015] ユーザによって作成されたインクコンテンツをレンダリングする際の難点の1つは、ユーザのアクションが結果としてインクコンテンツを表示させているように見えるように、インクコンテンツを十分迅速に表示することである。ユーザは、約50ミリ秒又はそれ以下のように短いインクコンテンツの作成のためのユーザアクションに応答して、遅延を知覚できることが予め決定されている。ユーザによって作成されるインクコンテンツの表示における遅延が目に見える場合、コンテンツ作成はもはや、書き込み面上で物理的なペンを使用してインクを作成する感覚を有さない可能性があるため、遅延はユーザ体験を混乱させる可能性がある。残念なことに、インクコンテンツが作成されるアプリケーションに関して、プロセススレッドを使用してインクコンテンツの表示を試行することは、望ましくないレイテンシ期間につながる可能性がある。これは、典型的なアプリケーションが、アプリケーションによって実行される他のアクションに関するアプリケーションプロセススレッド内で、インクコンテンツに関するアクションを優先順位付けする機能を有さないという事実に起因する。
[0016] 代替として、インクコンテンツのレンダリングは、オペレーティングシステムから完全に分離させることができる。これにより、オペレーティングシステムをバイパスし、代わりに新しいインクを表示域内に直接表示する、ハードウェア及び/又はソフトウェアの機能を使用して、ユーザによって作成される新しいインクコンテンツを表示することが可能になる。新しいインクコンテンツを作成した後、新しいインクコンテンツはオペレーティングシステムに渡され、ここでは、対応するアプリケーションによって提供されるコンテキスト内にインクコンテンツがレンダリングされるように、表示機能に対して任意の修正を適用することができる。このタイプの方法は、新しいインクコンテンツの表示におけるレイテンシを低減させることができるが、新しいインクコンテンツの初期の表示は、コンテンツの最終レンダリングと異なる場合がある。
[0017] いくつかの態様において、本明細書で説明するシステム及び方法の利点は、インクコンテンツの表示に関するレイテンシを低減させるために、コンピュータの性能を向上させることである。こうした向上は、インクコンテンツ作成中のユーザ体験を向上させることにもつながり得る。
[0018] 様々な態様において、本明細書で説明するシステム及び方法は、スタイラス、タッチ入力を受信するためのタッチインターフェース、マウス、又は、表示域内のカーソルの動きを制御可能な別のデバイスなどの、入力デバイスを使用して、ユーザがインク入力を作成できるようにすることが可能である。インクコンテンツを作成したいというユーザの望みは、ユーザのアクションに関するコンテキストに基づいて決定又は検出可能である。インクコンテンツの作成のためのアクションに対応するアクションコンテキストが定義可能である。次いで、ユーザアクションに関する入力コンテキストを検出し、入力アクションがインク作成アクションであるかどうかを判別するために、アクションコンテキストと比較することが可能である。
[0019] 1つのタイプのコンテキストは、入力デバイスの性質自体とすることができる。これはモードコンテキストと呼ぶことが可能であり、スタイラスと表面との対話、指又は別の形状とタッチ入力のための表面との対話、マウスを使用したカーソルアイコン(又は他のカーソル識別子)の移動、及び/又は、任意の他の便利なデバイスに基づいて、検出可能である。
[0020] 第2のタイプのコンテキストは、位置コンテキストとすることができる。任意選択で、ディスプレイの表示域全体、タッチ表面、入力パッド、又は別のタイプのユーザインターフェースは、いつでもインクコンテンツを受信できる準備が整っている。このタイプのオプションでは、ユーザのアクションは、モードコンテキストのみに基づいて、及び/又は、位置コンテキストとは異なる他のタイプのコンテキストに基づいて、インク作成アクションとして検出可能である。代替として、ユーザインターフェース内(ユーザインターフェースの表示域内など)の1つ以上の領域を、インクコンテンツが受信可能な領域として識別可能である。このタイプのオプションでは、ユーザアクションは、モードコンテキストと位置コンテキストとの組み合わせに基づいて、インク作成アクションとして検出される。潜在的にインクコンテンツを受信するための領域は、デバイス用のオペレーティングシステムによって事前定義すること、デバイス上で実行中のアプリケーションによって事前定義すること、又は、ユーザにより1つ以上の領域に関する定義に基づいて作成することが可能である。
[0021] 第3のタイプのコンテキストは、インク作成コンテキストとすることができる。1つのオプションは、選択されたモードコンテキスト及び/又は位置コンテキストを有する任意のユーザアクションを、インク作成アクションとして解釈することであり得る。代替として、ユーザアクションがインク作成アクションである旨を決定することは、インクコンテンツの作成を開始するための入力デバイスを用いるシングルタップ/クリック又はダブルタップ/クリックなどの、特定タイプのユーザアクションを検出することに依存可能である。こうした指定されたアクションは、インク作成コンテキストに対応可能である。インク作成コンテキストは、ユーザが事前にインク作成を開始したかどうかに応じて変化し得ることに留意されたい。例えば、ユーザによる入力デバイス又はカーソルの移動などの追加のアクションは、インク作成が開始された後、及び、デバイスを入力表面から離して持ち上げるなどのインク作成を終わらせるアクションが検出されるまで、インク作成アクションと解釈することができる。
[0022] 本発明の態様は、前述の3つのコンテキストに限定されない。他のコンテキストが可能である。
[0023] モードコンテキスト、位置コンテキスト、アクションコンテキスト、及び/又はユーザアクションがインク作成アクションであるかどうかの判別に使用される任意の他のタイプのコンテキストに基づいて、ユーザ入力アクションがインク作成アクションであるかどうかを判別するために、ユーザ入力アクションをコンテキストに照らしてテストすることができる。入力アクションがインク作成アクションである場合、ユーザによって作成されているインクコンテンツをレンダリングするために、入力アクションを、インクレンダリングスレッドなどの個別のプロセススレッドにルーティングすることができる。コンテキスト条件を満たしていないアクションは、ユーザ入力アクションを扱うための従来のプロセススレッドでの処理のために、アプリケーション及び/又はオペレーティングシステムに渡すことができる。入力アクションのテストは、入力アクションの性質を決定するために短い遅延を発生させる可能性があるが、インクコンテンツがユーザによって作成された場合にこれをレンダリングするために個別のプロセススレッドを使用することに基づいて、レイテンシの大幅な(数十ミリ秒などの)低減を達成することができる。このタイプのテストは、「ヒットテスト」と呼ばれることがある。本発明の一態様において、ヒットテストは発生しない。代わりに、接触に基づいてインクが生成され、ヒットテストなしで(及び結果として生じる遅延なしで)表示される。入力がインクコンテキストを満たさないように変化した場合、インクプロセスは取り消され、表示されたウェットインクは除去される。
[0024] 基礎を成すアプリケーションとは別のインクレンダリングプロセススレッドにおいてインクコンテンツを扱うことに伴う潜在的な問題の1つは、新しいインクコンテンツが最終的に基礎を成すアプリケーションに転送(又は、基礎を成すアプリケーションと同期)されなければならないことである。様々な態様において、表示されるインクコンテンツにおける変化(表示の一時的喪失を含む)を低減又は最小化しながら、及び/又は、両方のプロセススレッドによるコンテンツの2重表示を低減又は最小化しながら、この転送を実行させることが可能なシステム及び方法が提供される。これにより、デバイスの性能及び結果として生じるユーザ体験の両方において、利益をもたらすことができる。
定義
[0025] 以下の考察において、本発明に従ったシステム及び方法の例は、Microsoft(商標)の動作環境に基づく動作環境を用いて例示することができる。加えて、ある用語は、様々な態様を説明する際に言及し易いように用いられる。以下の明示的定義は、様々な態様の理解を助けるために与えられる。
[0026] ウェットインク:インクストロークが進行中の間に、すなわち、接触(例えば、ペン)が表面からまだ持ち上げられていない間にレンダリングされるインク。様々な態様において、ウェットインクはセミドライインク又はドライインクに変換されるか、或いは置き換えられることが可能である。変換プロセスは、ペンが表面から持ち上げられた後、しばらく続行可能である。レンダリングされたインクは、セミドライインク又はドライインクに置き換えられるまでウェットインクのままである。様々な態様において、ウェットインクは個別のインクレンダリングスレッド上にレンダリングされる。
[0027] ドライインク:インクストロークが完了した後にレンダリンク又は再レンダリングされるインク、或いは、入力以外のソース(残留インクコンテンツ)からロードされたインクデータからレンダリングされるインク。
[0028] セミドライインク:ドライインク層への同期を保留している中間層内のインク。様々な態様において、セミドライインクは、個別のインクレンダリングプロセススレッド上にレンダリング可能である。
[0029] ウェット/ドライ同期化:ドライインクをレンダリングし、ドライインクスレッド上で可視化することが可能であり、並びに、a)対応するドライインクが可視化された時に、ウェットインクが依然として可視化されないこと、b)対応するドライインクが可視化される前に、ウェットインクが消失しないこと、及びc)インクスレッドが、入力の処理及び更なるウェットインクのレンダリングから決してブロックされないことを、保証できるように、ウェットインクをインクスレッド上でクリアすることが可能な、メカニズム。
[0030] ホスト:内部で新しいインクコンテンツの一部がユーザによって作成される、基礎を成すアプリケーション又はフレームワーク。
[0031] ホストスレッド:基礎を成すアプリケーション又はユーザインターフェースのためのプロセススレッド。
[0032] インクレンダリングスレッド:選択されたタイプの入力が受信され、ウェットインクをレンダリングするために処理される、背景スレッド(好ましくはオペレーティングシステム内に作成される)。このスレッドは、プロセス内でウェットインクをレンダリングするためのすべてのインスタンスによって共有される。
[0033] ドライインクスレッド:その上でインクデータがレンダリングコンポーネント又はスレッドに送達される、スレッド。一態様において、ホストスレッドはレンダリングスレッドであるが、専用インクレンダリングスレッドを含む他のオプションが可能である。
[0034] 入力リダイレクション:デフォルトではUIスレッドの代わりに指定されたスレッドに自動的にルーティングされる入力合致指定特徴(ウェットインクの作成のための入力など)を有するように、入力スタックに登録するためのメカニズム。様々な態様において、指定特徴は、スタイラス、指(又は他のタッチ入力)、又はウェットインクの作成に好適な他の入力デバイスの使用などの、入力のモダリティに対応可能である。様々な態様において、指定特徴は、ウェットインク入力を受信するために画定されたユーザインターフェースの一部分におけるこうした入力デバイスの使用を、更に指定することができる。
[0035] InkManager:Windowsランタイムクラス。1つ以上のインクオブジェクトの入力、操作、及び処理(手書き文字認識を含む)を管理するためのプロパティ及び方法を提供する。
[0036] D2D:Direct2D。2次元ジオメトリ、ビットマップ、及びテキストに対して高性能及び高品質のレンダリングを提供する、ハードウェア加速、即時モードの2次元グラフィクスAPI。Direct3Dなどの他のレンダリング技術との相互運用をサポートするように設計される。
[0037] D3D:Direct3D。レンダリングパイプラインを用いてプリミティブを描画するため、又は、コンピュートシェーダを用いて並列操作を実行するための、低水準API。異なるGPU実装をコヒーレント抽象化の背後に隠し、グラフィクス特有のプロセッサを駆動するように設計される。
[0038] DComp:DirectComposition。変形、効果、及びアニメーションを用いて高性能ビットマップコンポジションを実行可能にする、Windowsコンポーネント。様々なソースからのビットマップを組み合わせ、スクリーンにレンダリングするためにデスクトップウィンドウマネージャ(DWM)を活用することができる。
[0039] DXGI:Microsoft DirectXグラフィクスインフラストラクチャ。Direct3Dグラフィクスランタイムから独立可能な低水準タスクを管理する。いくつかのバージョンのDirect3Dに対する共通フレームワークも提供する。
インクコンテンツを扱うためのプロセスフロー
[0040] 図1は、個別のインクレンダリングプロセススレッドを使用してウェットインクコンテンツをレンダリングするためのプロセスフローの例を示す。図1に示されるプロセスフローにおいて、ユーザは、マウス、スタイラス、ペン、又はタッチインターフェース(タッチ入力を受信するため)などのハードウェアコンポーネントを使用して、ウェットインクコンテンツを作成するための入力アクションを提供することができる。入力ハードウェア102はこの入力をハードウェアドライバ104に渡し、最終的に入力テスタ110に渡すことができる。入力テスタは、入力アクションがウェットインクコンテンツを作成するためのアクションに対応するかどうかを判別するために、ハードウェアの性質及び/又は入力アクションに関連付けられたディスプレイ内の位置を含む、入力アクションについてのコンテキストを評価することができる。
[0041] ユーザアクションがウェットインクコンテンツの作成に対応する場合、入力アクションはウェットインクプロセススレッド120へと迂回される。図1に示されるように、ウェットインクプロセススレッド120は限定数のアクションのみを扱い、これによって、ウェットインクレンダリングアクションの取り扱いにおける遅延の潜在性を低減又は最小化することができる。これは、汎用ユーザインターフェース及び/又はアプリケーションプロセススレッド130によって扱われる複数タイプのアクションとは対照的である。例えば、インクコンテンツの取り扱いのみに関して、ユーザインターフェース及び/又はアプリケーションプロセススレッド130は、インクコンテンツの一般的な表示のためのアプリケーションプログラムインターフェース132を提供すること、手書き文字認識などのインクコンテンツの追加処理のためのアプリケーションプログラムインターフェース134を提供すること、結果として生じるインクコンテンツを表示できるように、インクストロークが追加された場合に関する入力136を受信すること、及び、シリアル化されたインクコンテンツなどの事前に作成されたドライインクコンテンツ138の表示を扱うことが、可能である。
[0042] ウェットインク入力を受信した後、ウェットインクプロセススレッド120はウェットインクコンテンツをレンダリング124し、レンダリングされたコンテンツを、コンポジタ150などのオペレーティングシステムのグラフィクス処理要素に戻すことができる。最終的に、レンダリングされたウェットインクは、ユーザに表示するためにハードウェアグラフィクスディスプレイ要素160に渡される。
[0043] 図1に示されるようなプロセスフローを使用するシステムは、様々な利点を提供することができる。例えば、このタイプのプロセスフローは、アプリケーション/UIスレッドから独立している、すなわち、入力が高優先度の背景スレッド(図1に示されるウェットインクスレッド)に直接流れ、UI/appスレッドアクティビティによって決してブロックされない、低レイテンシのウェットインクレンダリングを提供することができる。任意選択であるが好ましいことに、システムは、デフォルトのペンタイプで良好に働くウェットベジェアルゴリズム、並びに、従来システムに対して15ms又はそれ以上レイテンシを低減させるための予測を、使用することができる。こうしたシステムは、インク特徴を変更するための圧力モデリングにも適合可能である。加えて、オペレーティングシステム内にあるウェットインクプロセススレッドに部分的に基づき、ウェットインクプロセススレッドは、インク描画属性(色、形状、サイズ、タイプなど)に合致するペンカーソルをレンダリングすることができる。
[0044] 図2は、ウェットインク(すなわち、ユーザによる作成プロセス中のインク)及びドライインク(すなわち、ユーザによって予め入力された、及び/又はデータソースから取得された、インクコンテンツ)の両方を表示するためのプロセススレッドを含む、別のプロセスフローを示す。図1のプロセスフローにおいて、ユーザによって作成されたインクコンテンツは、インクコンテンツの作成が完了した後、ウェットインクプロセススレッドによってレンダリング可能である。図1におけるドライインクコンテンツのレンダリングは、ソースファイルから取り出されるコンテンツなどの、予め定義されたドライインクコンテンツのレンダリングに対応する。図2において、ユーザによって作成されたインクコンテンツを、ウェットインクプロセススレッドから、ドライインクコンテンツのレンダリングのためにユーザインターフェース/アプリケーション/他のスレッドへ転送できるようにするための、追加のフローが示される。
[0045] 図2において、ウェットインクスレッド120は、両方のスレッドと通信するコンポーネントを介して、ユーザインターフェーススレッド130(及び、オプションの個別ドライインクレンダリングスレッド233)と通信することができる。これらのコンポーネントは、ウェットインクスレッド120からユーザインターフェーススレッド130へのウェットインクの転送を同期化する、InkSyncコンポーネント242を含むことができる。コンポーネントは、転送が完了したコンポーネントに対して検証を与えるコミットマネージャ246も含むことができる。例えばコミットマネージャ246は、ウェットインクスレッド120によるウェットインクから中間インク(又は、セミウェットインク)への変換が完了した時点を、ユーザインターフェーススレッド130に通知することができる。同様に、コミットマネージャ246は、ユーザインターフェーススレッド130が転送されたドライインクコンテンツのレンダリングを開始した時点を、ウェットインクスレッド120に通知することが可能であるため、ウェットインクスレッド120は対応する中間インクコンテンツのレンダリングを停止することができる。
コンポーネント関係
[0046] 図3は、ユーザ作成のインクコンテンツ(ウェットインク)のレンダリング、並びに、個別のインクレンダリングスレッドからアプリケーションに関連付けられたプロセススレッドへのウェットインクの転送に使用可能な、様々なコンポーネント間の関係を示す。図3において、ホストアプリケーション310又は他のフレームワーク(潜在的にオペレーティングシステムを含む)は、1つ以上のアプリケーションプログラミングインターフェース320を介して、「DirectInk Core」モジュール330全体と通信することができる。図3に示されるアプリケーションプログラミングインターフェース320は、入力インターフェース及びインク取り扱いインターフェースを含む。ウェットインク入力(又は、ウェットインクプロセススレッドによって扱われることになる別のタイプの入力)として検出された入力がホスト310によって受信された場合、入力はモジュール330に渡される。
[0047] DirectInk Core実装オブジェクト332は、モジュール330内に示される他のオブジェクトのほとんどを作成及び調整する、コンテナオブジェクトである。マーシャラ342は、インクスレッドを所有し、スレッド間での通知のためのメカニズムを実装し、通知メカニズムを他のコンポーネントから隔離する。入力コンテキストオブジェクト336は、入力リダイレクションを登録し、インクスレッド上の入力を受信する、入力シンクオブジェクトである。InkSyncオブジェクト346は、ウェット/ドライインク同期化のためのメカニズムを実装する、同期化エンジンである。コミットマネージャ352は、DCompコミットを実行し、他のコンポーネントをDCompコミット完了通知の詳細から隔離する、共有オブジェクトである。レンダリングマネージャ370は、ウェット、セミドライ及びドライレイヤに使用されるレンダラインスタンスを追跡し、レンダリング要求を適切なレンダラインスタンスにルーティングする。レンダマネージャ370は、必要に応じてデフォルトのレンダラインスタンスを作成することも可能であり、必要に応じてカスタムレンダラを管理する。レンダラ372は、高水準レンダラオブジェクトである。レンダラ実装374は、表面/コンテキスト、インクデータ、及び描画属性が与えられた場合、実際のレンダリングを実行する低水準レンダラオブジェクトである。インクモデラ376は、任意選択で予測を用いて、入力から平滑なベジェセグメントを作成する。
[0048] インクツリーデータオブジェクト340は、ウェット、セミドライ、及びドライの層について関連付けられたインクデータと共に、DirectInk Coreインスタンスについてのインクサブツリーを表すDComp視覚サブツリーを作成及び維持する、データオブジェクトである。
[0049] 図4は、ウェットインクに対応する入力の到達、及びウェットインク入力のレンダリングを扱うための、データフローを示す。図4において、ウェットインクであると識別される入力が、システム入力スタック410によって入力コンテキストコンポーネント420へと送達される。入力は、任意選択で、任意の入力プラグイン425に渡すことができる。入力はInkSyncコンポーネント430にも渡される。InkSync430は、新しいウェットインクコンテンツが作成されている旨の情報を、インクツリーデータコンポーネント440に渡すことができる。InkSyncは、ウェットインクをレンダリングするよう、レンダマネージャ450に命じることもできる。最後に、インクコンテンツの入力が完了した時点で、InkSync430はコミットマネージャ460に通知することができる。
[0050] 図5は、ユーザによるインクコンテンツ部分の入力が完了した後の、セミドライ又は中間インクのレンダリングに関するデータフローを示す。図5において、データフローは、インクコンテンツ部分の作成が完了したため、インクコンテンツ部分をウェットインク状態から中間インク状態へと移動できる旨を、InkSyncコンポーネント430がインクツリーデータ440に通知した時点で開始される。次いで、レンダマネージャ450は、中間又はセミドライのインクレンダラインスタンスを使用して、インクコンテンツの完了部分をレンダリングするための命令を受信可能であり、ウェットインクレンダラインスタンスは、別のインクコンテンツ作成イベントの準備を整えることができる。コミットマネージャ460に通知した後、ホスト又は基礎を成すアプリケーションによって管理されるドライインクレンダプロセススレッドに転送するために、インクが使用可能である旨の通知を、マーシャラ470に渡すことができる。
[0051] 図6は、ウェットインクプロセススレッドからドライインクプロセススレッドへのインクの(同期化された)転送に関するプロセスフローを示す。図6において、InkSync430は、マーシャラ470からインク利用可能信号を受信する。次いで、InkSync430は、セミドライ状態からドライ状態へインクコンテンツをコピーするよう、インクツリーデータ440に通知する。インクをドライインクとしてレンダリングするためのストローク情報は、インクコールバック672を使用してインクハンドラ680に渡される。インクコンテンツは、ドライインクレンダラインスタンスを用いてレンダリングするために、レンダマネージャ450にも渡される。これが完了した後、InkSync430は、セミドライバージョンのインクコンテンツを非表示にすることが可能である旨をインクツリーデータ440に通知するため、ウェットインクスレッドはそれ以上インクコンテンツを扱わないことになる。
[0052] 図7は、ウェットインクレンダリングスレッド(インク)とドライインクレンダリングスレッド(ホスト)とについてのDCompインスタンス間での通信フローを示す。図7における通信フローは、インクコンテンツの表示の不連続性を回避しながら、ドライインクスレッド及びウェットインクスレッドの両方がインクコンテンツの表示を試行する時間を低減又は最小化するために、ウェットインクのドライインクへの転送を如何にして同期化させるかを示す。
[0053] 図7において、インクスレッド703は、ウェットからセミウェットへの移動プロセス710を開始することによって、呼を始動する。DCompコンポーネント701は、コミット呼712を用いてインクスレッドに確認する。次いで、インク使用可能呼714がホストスレッド706に渡される。ホストスレッド706は、インクツリー内でデータを移動させるために、セミドライからドライへのコピー呼716を始動する。このコピーが完了した後、セミドライデータを非表示にするための呼718も実行される。セミドライからドライへの遷移は、コミット呼722を用いてDCompホストスレッド708に確認される。次いで、セミドライインクからドライインクへの転送が完了した旨の呼724が、インクスレッド703に戻される。次いで、確認するためのコミット呼732を用いて、ウェットインクスレッドによるセミドライインクのレンダリングがクリアされる726。次いで、セミドライインクのクリアに関する呼734がホストスレッド706に渡される。
追加例
[0054] 本発明の様々な実施形態の概要を簡単に説明してきたが、次に、本発明を実行するために好適な例示的動作環境を説明する。本発明の実施形態は、コンピュータ、或いは携帯情報端末又は他のハンドヘルドデバイスなどの他の機械によって実行される、プログラムモジュールなどのコンピュータ実行可能命令を含む、コンピュータコード又は機械使用可能命令の一般的なコンテキストで説明可能である。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールは、特定のタスクを実行するか又は特定の抽象データ型を実装するコードを指す。本発明は、ハンドヘルドデバイス、家庭用電子機器、汎用コンピュータ、より専門的なコンピューティングデバイスなどを含む、様々なシステム構成内で実施可能である。本発明は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散型コンピューティング環境内でも実施可能である。
[0055] 好適なコンピューティングデバイスは、以下のデバイス、すなわちメモリ、1つ以上のプロセッサ、1つ以上の提示コンポーネント、入力/出力(I/O)ポート、I/Oコンポーネント、及び電源を、直接的又は間接的に結合するバスを含むことができる。バスは、何が1つ以上のバス(アドレスバス、データバス、又はそれらの組み合わせ)であり得るかを表す。明快にするために様々なコンポーネントが個々のコンポーネントとして記載しているが、実際には、様々なコンポーネントを図で表現することはそれほど明快ではなく、隠喩的には、線はより正確にはグレイかつファジーとなる。例えばディスプレイデバイスなどの提示コンポーネントは、I/Oコンポーネントであると見なすことができる。加えて、多くのプロセッサはメモリを有する。こうしたカテゴリ間で、「ワークステーション」、「サーバ」、「ラップトップ」、「ハンドヘルドデバイス」、「タブレット」などは、すべてが「コンピューティングデバイス」の範囲内で企図されるため、区別されない。
[0056] コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶するための任意の方法又は技術で実装される、揮発性及び不揮発性、取り外し可能及び取り外し不可の媒体を含む。コンピュータ記憶媒体は、限定されないが、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、フラッシュメモリ又は他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)又は他のホログラムメモリ、磁気カセット、磁気テープ、磁気ディスク記憶又は他の磁気記憶デバイス、或いは、所望のデータをエンコードするために使用可能であり、コンピューティングデバイス100によってアクセス可能な、任意の他の媒体を含む。実施形態において、コンピュータ記憶媒体は、フラッシュメモリのような有形のコンピュータ記憶媒体から選択可能である。これらのメモリ技術は、データを瞬間的、一時的、又は永続的に記憶することができる。コンピュータ記憶は通信媒体を含まず、除外する。コンピュータ記憶媒体は、非一時的であり、伝播型データ信号を除外する。
[0057] 他方で、通信媒体は典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを、搬送波などの変調データ信号又は他の移送メカニズム内で具体化し、任意の情報送達媒体を含む。「変調データ信号」という用語は、その特徴のうちの1つ以上が信号内の情報をエンコードするような方法で設定又は変更された信号を意味する。例を挙げると、限定ではないが、通信媒体は、ワイヤードネットワーク又はダイレクトワイヤード接続などのワイヤード媒体と、音波、RF、赤外線、及び他のワイヤレス媒体などのワイヤレス媒体とを含む。
[0058] メモリは、揮発性及び/又は不揮発性メモリの形のコンピュータ可読媒体を含むことができる。メモリは、取り外し可能、取り外し不可、又はそれらの組み合わせとすることができる。例示的ハードウェアデバイスは、ソリッドステートメモリ、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイスは、メモリ又はI/Oコンポーネントなどの様々なエンティティからデータを読み取る、1つ以上のプロセッサを含むことができる。提示コンポーネントは、ユーザ又は他のデバイスに対してデータ指示を提示する。例示的提示コンポーネントは、ディスプレイデバイス、スピーカ、印刷コンポーネント、振動コンポーネント、などを含む。
[0059] I/Oポートは、コンピューティングデバイスを、そのうちのいくつかが組み込み可能なI/Oコンポーネントを含む他のデバイスに論理的に結合できるようにするものである。実例となるコンポーネントは、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナ、プリンタ、ワイヤレスデバイスなどを含むことができる。I/Oコンポーネントは、タッチ入力(例えば、キーボード又はマウスとの対話に基づくディスプレイ上の間接的な移動とは対照的に、ディスプレイインターフェースにタッチするか又は接近する)、ジェスチャ入力、触覚入力、音声入力、近接入力、上記で識別された入力デバイスなどの2次入力デバイスとの対話、又は、任意の他の便利なタイプの入力などの、複数の入力タイプから1つ以上の入力タイプを受信する、コンポーネントを含むことができる。
[0060] コンピューティングデバイスは無線を含むことができる。無線は無線通信を送信及び受信する。コンピューティングデバイスは、様々なワイヤレスネットワークを介して受信される通信及び媒体に適合されたワイヤレス端末とすることができる。コンピューティングデバイス1100は、符号分割多元アクセス(「CDMA」)、グローバルシステムフォーモバイル(「GSM」)、又は時分割多元アクセス(「TDMA」)、並びにその他などの、他のデバイスと通信するためのワイヤレスプロトコルを介して、通信可能である。無線通信は、短距離接続、長距離接続、又は、短距離及び長距離の両方のワイヤレス通信接続の組み合わせとすることができる。「短」及び「長」タイプの接続に言及する場合、2つのデバイス間の空間的関係を指すことは意味していない。代わりに通常は、異なるカテゴリ又はタイプの接続(すなわち、1次接続及び2次接続)として、短距離及び長距離に言及する。短距離接続は、802.11プロトコルを使用するWLAN接続などの、ワイヤレス通信ネットワークへのアクセスを提供するデバイス(例えばモバイルホットスポット)へのWi−Fi(登録商標)を含むことができる。別のコンピューティングデバイスへのBluetooth接続が、短距離接続の第2の例である。長距離接続は、CDMA、GPRS、GSM、TDMA、及び802.16プロトコルのうちの1つ以上を使用する接続を含むことができる。
[0061] 本発明の実施形態を、すべての点で制限的ではなく例示的であることが意図される特定の実施形態に関して説明してきた。当業者であれば、本発明がその範囲を逸脱することなく関連する代替の実施形態が明らかとなろう。
[0062] 実施形態1。ディスプレイデバイス上にインクコンテンツをレンダリングするための方法であって、インク入力アクションを受信するためのアクションコンテキストを定義することであって、アクションコンテキストは少なくともモードコンテキストを含む、定義すること、アプリケーションによって入力アクションを受信することであって、入力アクションは入力コンテキストを有する、受信すること、インク作成アクションとして受信される入力アクションを検出することであって、受信される入力アクションは、定義されたアクションコンテキストに対応する入力コンテキストに基づいてインク作成アクションとして検出され、検出されたインク作成アクションはインクコンテンツに対応する、検出すること、検出されたインク作成アクションをウェットインクレンダリングプロセススレッドに導くことであって、ウェットインクレンダリングスレッドはアプリケーション用のアプリケーション処理スレッドとは異なる、導くこと、ウェットインクレンダリングスレッドによって、レイテンシ閾値未満のレイテンシを伴うインクコンテンツをレンダリングすること、及び、インク作成の終わりに対応する入力アクションを検出することを含む、方法。
[0063] 実施形態2。実施形態1の方法であって、インクコンテンツを、ウェットインクレンダリングスレッドからアプリケーションレンダリングスレッドへ転送することであって、アプリケーションレンダリングスレッドは、ウェットインクレンダリングスレッドとは異なり、任意選択でアプリケーション処理スレッドとは異なる、転送すること、アプリケーションレンダリングスレッドによって転送されたインクコンテンツをレンダリングすること、及び、ウェットインクレンダリングスレッドによってレンダリングされたインクコンテンツを除去することを、更に含む。
[0064] 実施形態3。実施形態2の方法であって、インクコンテンツをウェットインクレンダリングスレッドからアプリケーションレンダリングスレッドへ転送することは、インク作成の終わりに対応する入力アクションを検出した後、インクコンテンツを中間インクコンテンツに変換すること、中間インクコンテンツをアプリケーションレンダリングスレッドに転送すること、及び、アプリケーションレンダリングによって転送された中間インクコンテンツのレンダリングと、ウェットインクレンダリングスレッドによってレンダリングされたインクコンテンツの除去と、を同期化することを含む。
[0065] 実施形態4。上記実施形態のうちのいずれかの方法であって、レイテンシ閾値は、約75ミリ秒又はそれ以下、或いは約60ミリ秒又はそれ以下、或いは約50ミリ秒又はそれ以下である。
[0066] 実施形態5。上記実施形態のうちのいずれかの方法であって、モードコンテキストは、ペン入力、スタイラス入力、タッチ入力、マウス入力、又はそれらの組み合わせの、入力モードを含む。
[0067] 実施形態6。上記実施形態のうちのいずれかの方法であって、定義されたアクションコンテキストは、位置コンテキストを更に含む。
[0068] 実施形態7。実施形態6の方法であって、位置コンテキストはディスプレイデバイスの表示域の或る領域を含み、領域は表示域の全域よりも小さい。
[0069] 実施形態8。実施形態6又は7の方法であって、位置コンテキストはディスプレイデバイスの表示域の複数の領域を含むか、又は位置コンテキストは複数の表示域からの複数の領域を含む。
[0070] 実施形態9。上記実施形態のうちのいずれかの方法であって、入力コンテキスト及びアクションコンテキストのうちの少なくとも1つは、ウェットインクレンダリングスレッドによってレンダリングされるインクに関する1つ以上の表示プロパティを更に含む。
[0071] 実施形態10。請求項9の方法であって、ウェットインクレンダリングスレッドによるインクコンテンツのレンダリングの間、ウェットインクレンダリングスレッドによってレンダリングされるインクに関する1つ以上の表示プロパティにおける変更を検出すること、及び、変更された1つ以上の表示プロパティを使用して、インクコンテンツの少なくとも一部をレンダリングすることを、更に含む。
[0072] 実施形態11。実施形態10の方法であって、1つ以上の表示プロパティにおける変更の検出に先立ってレンダリングされたインクコンテンツの少なくとも一部は、インク作成の終わりに対応する入力アクションの検出に先立って変更された1つ以上の表示プロパティを用いてレンダリングされる。
[0073] 実施形態12。上記実施形態のうちのいずれかの方法であって、アクションコンテキストはインク作成コンテキストを更に含む。
[0074] 上記から、本発明は、明白であり構造に固有である他の利点と共に、上記に記載されたすべてのエンド及びオブジェクトを達成するように、適切に適合されていることがわかるであろう。
[0075] ある機能及びそれらの下位組み合わせは実用的であり、他の機能及び下位組み合わせに関係なく採用可能であることを理解されよう。これは特許請求の範囲によって企図され、その範囲内にある。

Claims (12)

  1. ディスプレイデバイス上にインクコンテンツをレンダリングするための方法であって、
    インク入力アクションを受信するためのアクションコンテキストを定義すること、
    アプリケーションによって入力アクションを受信することであって、前記入力アクションは入力コンテキストを有すること、
    前記入力コンテキストは前記アクションコンテキストによって指定された基準を満たすため、前記入力アクションをインク作成アクションとして検出すること、
    前記インク作成アクションをウェットインクレンダリングスレッドに導くことであって、前記ウェットインクレンダリングスレッドは、前記アプリケーション用のアプリケーション処理スレッドとは異なること、
    前記ウェットインクレンダリングスレッドによって、前記インク作成アクションコンテンツをレンダリングしてウェットインクコンテンツを生成すること、
    ディスプレイに前記ウェットインクコンテンツを出力すること、
    インク作成の終わりに対応する追加の入力アクションを検出すること
    記インク作成の終わりに対応する前記追加の入力アクションを検出した後、前記ウェットインクコンテンツを中間インクコンテンツに変換すること、
    前記中間インクコンテンツを前記アプリケーションレンダリングスレッドに転送すること、
    前記アプリケーションレンダリングスレッドによる前記中間インクコンテンツの前記レンダリングと、前記ウェットインクレンダリングスレッドによってレンダリングされた前記ウェットインクコンテンツの前記除去と、を同期化すること、
    前記インク作成アクションをアプリケーション処理スレッドに転送すること、
    前記アプリケーション処理スレッドによって、前記インク作成アクションをレンダリングして、ドライインクコンテンツを生成すること、及び、
    前記ウェットインクレンダリングスレッドによってレンダリングされた前記中間インクコンテンツを除去するとともに、前記ドライインクコンテンツをディスプレイに出力すること、
    を含む、方法。
  2. 前記アクションコンテキストは、モードコンテキストを含み、
    前記モードコンテキストは、ペン入力、スタイラス入力、タッチ入力、マウス入力、又はそれらの組み合わせの、入力モードを含む、請求項1に記載の方法。
  3. 前記アクションコンテキストは、位置コンテキストを更に含む、請求項1に記載の方法。
  4. 前記位置コンテキストは、前記ディスプレイデバイスの表示域の或る領域を含み、前記領域は前記表示域の全域よりも小さい、請求項に記載の方法。
  5. 前記位置コンテキストは、前記ディスプレイデバイスの表示域の複数の領域を含む、請求項に記載の方法。
  6. 前記位置コンテキストは、複数の表示域からの複数の領域を含む、請求項に記載の方法。
  7. 前記入力コンテキスト及び前記アクションコンテキストのうちの少なくとも1つは、前記ウェットインクレンダリングスレッドによってレンダリングされる前記ウェットインクコンテンツに関する1つ以上の表示プロパティを更に含む、請求項1に記載の方法。
  8. 前記ウェットインクレンダリングスレッドによる前記インク作成アクションの前記レンダリングの間、前記ウェットインクレンダリングスレッドによってレンダリングされる前記ウェットインクコンテンツに関する変更された1つ以上の表示プロパティを形成するために、前記1つ以上の表示プロパティが更新されたことを検出すること、及び、
    前記変更された1つ以上の表示プロパティを使用して、前記インク作成アクションの少なくとも一部をレンダリングすること、
    を更に含む、請求項に記載の方法。
  9. 前記1つ以上の表示プロパティが更新されたことの検出に先立ってレンダリングされた前記ウェットインクコンテンツの少なくとも一部は、前記インク作成の終わりに対応する前記追加の入力アクションの検出に先立って前記変更された1つ以上の表示プロパティを用いてレンダリングされる、請求項に記載の方法。
  10. 前記アクションコンテキストは、インク作成コンテキストを更に含む、請求項1に記載の方法。
  11. プロセッサと、コンピュータ記憶メモリと、を備えるコンピューティングシステムであって、
    前記コンピュータ記憶メモリは、前記プロセッサによって実行された時に、ディスプレイデバイス上でインクコンテンツをレンダリングするための方法を実装する、コンピュータ実行可能命令をその上に記憶しており、
    前記方法は、
    インク入力アクションを受信するためのアクションコンテキストを定義すること、
    アプリケーションによって入力アクションを受信することであって、前記入力アクションは入力コンテキストを有すること、
    前記入力コンテキストは前記アクションコンテキストによって指定された基準を満たすため、前記入力アクションをインク作成アクションとして検出すること、
    前記インク作成アクションをウェットインクレンダリングスレッドに導くことであって、前記ウェットインクレンダリングスレッドは前記アプリケーション用のアプリケーション処理スレッドとは異なること、
    前記ウェットインクレンダリングスレッドによって、前記インク作成アクションレンダリングしてウェットインクコンテンツを生成すること、
    ディスプレイに前記ウェットインクコンテンツを出力すること、
    インク作成の終わりに対応する追加の入力アクションを検出すること
    記インク作成の終わりに対応する前記追加の入力アクションを検出した後、前記ウェットインクコンテンツを中間インクコンテンツに変換すること、
    前記中間インクコンテンツを前記アプリケーションレンダリングスレッドに転送すること、
    前記アプリケーションレンダリングスレッドによる前記中間インクコンテンツの前記レンダリングと、前記ウェットインクレンダリングスレッドによってレンダリングされた前記ウェットインクコンテンツの前記除去と、を同期化すること、
    前記インク作成アクションをアプリケーション処理スレッドに転送すること、
    前記アプリケーション処理スレッドによって、前記インク作成アクションをレンダリングして、ドライインクコンテンツを生成すること、及び、
    前記ウェットインクレンダリングスレッドによってレンダリングされた前記中間インクコンテンツを除去するとともに、前記ドライインクコンテンツをディスプレイに出力すること、を含む、
    コンピューティングシステム。
  12. 前記入力コンテキスト及び前記アクションコンテキストのうちの少なくとも1つは、前記ウェットインクレンダリングスレッドによってレンダリングされる前記ウェットインクコンテンツに関する1つ以上の表示プロパティを更に含む、請求項11に記載のコンピューティングシステム。
JP2017508035A 2014-09-29 2015-09-29 低レイテンシのインクレンダリングパイプライン Active JP6619798B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/500,997 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 (3)

Publication Number Publication Date
JP2017532634A JP2017532634A (ja) 2017-11-02
JP2017532634A5 JP2017532634A5 (ja) 2018-10-11
JP6619798B2 true JP6619798B2 (ja) 2019-12-11

Family

ID=54291685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017508035A Active JP6619798B2 (ja) 2014-09-29 2015-09-29 低レイテンシのインクレンダリングパイプライン

Country Status (11)

Country Link
US (1) US9633466B2 (ja)
EP (1) EP3201750A1 (ja)
JP (1) JP6619798B2 (ja)
KR (1) KR102352536B1 (ja)
CN (1) CN107003908B (ja)
AU (1) AU2015324050B2 (ja)
BR (1) BR112017003820A2 (ja)
CA (1) CA2962793A1 (ja)
MX (1) MX2017004056A (ja)
RU (1) RU2705009C2 (ja)
WO (1) WO2016053916A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162518B2 (en) * 2017-02-03 2018-12-25 Microsoft Technology Licensing, Llc Reversible digital ink for inking application user interfaces
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
CN110609653B (zh) * 2018-06-15 2020-10-13 广州视源电子科技股份有限公司 双系统设备及其书写方法、装置和交互智能平板
CN115480658A (zh) * 2021-05-28 2022-12-16 华为技术有限公司 一种手写笔输入方法、电子设备及系统
CN115220853A (zh) * 2022-09-21 2022-10-21 广州市保伦电子有限公司 基于多线程的墨迹作图方法、装置、设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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 Майкрософт Корпорейшн Обработка электронных чернил
US7533338B2 (en) 2003-08-21 2009-05-12 Microsoft Corporation Electronic ink processing
US7436535B2 (en) 2003-10-24 2008-10-14 Microsoft Corporation Real-time inking
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
WO2010127175A2 (en) 2009-04-30 2010-11-04 Synaptics Incorporated Control circuitry and method
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
US9153201B2 (en) * 2012-05-07 2015-10-06 Intel Corporation Real-time order-independent transparent rendering
CN102810199B (zh) * 2012-06-15 2015-03-04 成都平行视野科技有限公司 一种基于gpu的图像处理方法
KR101867494B1 (ko) 2012-10-05 2018-07-17 텍추얼 랩스 컴퍼니 저지연 유저 입력 프로세싱과 피드백용 하이브리드 시스템 및 방법
US9389717B2 (en) 2012-12-14 2016-07-12 Microsoft Technology Licensing, Llc Reducing latency in ink rendering
MX347289B (es) * 2013-07-12 2017-04-17 Tactual Labs Co Reducción de latencia de respuesta de control con comportamiento control cruzado definido.
CN103617031B (zh) * 2013-11-20 2017-01-18 广东威创视讯科技股份有限公司 图像渲染的方法和装置
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

Also Published As

Publication number Publication date
CN107003908A (zh) 2017-08-01
RU2017110229A (ru) 2018-10-01
BR112017003820A2 (pt) 2017-12-05
MX2017004056A (es) 2017-06-12
CN107003908B (zh) 2020-08-21
AU2015324050B2 (en) 2020-06-25
AU2015324050A1 (en) 2017-03-16
WO2016053916A1 (en) 2016-04-07
US20160093087A1 (en) 2016-03-31
CA2962793A1 (en) 2016-04-07
RU2705009C2 (ru) 2019-11-01
US9633466B2 (en) 2017-04-25
KR20170061134A (ko) 2017-06-02
KR102352536B1 (ko) 2022-01-17
EP3201750A1 (en) 2017-08-09
JP2017532634A (ja) 2017-11-02
RU2017110229A3 (ja) 2019-04-16

Similar Documents

Publication Publication Date Title
JP6619798B2 (ja) 低レイテンシのインクレンダリングパイプライン
EP3111318B1 (en) Cross-platform rendering engine
EP2932362B1 (en) Reducing latency in ink rendering
JP6364893B2 (ja) 端末装置、電子ホワイトボードシステム、電子ホワイトボードの入力支援方法、及びプログラム
US8890808B2 (en) Repositioning gestures for chromeless regions
US11029836B2 (en) Cross-platform interactivity architecture
EP2756481B1 (en) System and method for layering using tile-based renderers
US20140372939A1 (en) Systems and methods for assisting in selection and placement of graphical objects in a graphical user interface
JP5969145B1 (ja) コマンド命令管理
CN105723314B (zh) 两步内容选择
US10675538B2 (en) Program, electronic device, system, and method for determining resource allocation for executing rendering while predicting player's intent
US9965134B2 (en) Method and apparatus for providing a user interface for a file system
US9927892B2 (en) Multiple touch selection control
US9400584B2 (en) Alias selection in multiple-aliased animations
US20150130723A1 (en) Two step content selection with trajectory copy
KR20150107392A (ko) 전자문서 병합 관리 방법 및 장치

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20170405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180829

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180829

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191115

R150 Certificate of patent or registration of utility model

Ref document number: 6619798

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250