JP2003228721A - イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造 - Google Patents

イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造

Info

Publication number
JP2003228721A
JP2003228721A JP2002304898A JP2002304898A JP2003228721A JP 2003228721 A JP2003228721 A JP 2003228721A JP 2002304898 A JP2002304898 A JP 2002304898A JP 2002304898 A JP2002304898 A JP 2002304898A JP 2003228721 A JP2003228721 A JP 2003228721A
Authority
JP
Japan
Prior art keywords
data
computer
container
readable medium
receiving
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
Application number
JP2002304898A
Other languages
English (en)
Other versions
JP4371351B2 (ja
Inventor
Joseph S Beda
エス.ベーダ ジョーゼフ
Adam M Smith
エム.スミス アダム
Gerhard A Schneider
エー.シュナイダー ゲルハルト
Kevin T Gallo
ティー.ギャロ ケビン
Ashraf A Michail
エー.マイケル アシュラフ
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 JP2003228721A publication Critical patent/JP2003228721A/ja
Application granted granted Critical
Publication of JP4371351B2 publication Critical patent/JP4371351B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/32Image data format

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 イミーディエイトモードグラフィックスのた
めのインテリジェントキャッシングデータ構造を提供す
ること。 【解決手段】 グラフィックス情報を表すオブジェクト
およびデータを介してビジュアル情報を格納するための
インテリジェントキャッシングデータ構造およびメカニ
ズム。データ構造は、一般に、その中のビジュアル情報
の分布および使用方法をインテリジェントな方式で制御
するメカニズムに関連する。キャッシュデータ構造は、
直接レンダリング用にトラバースすることができ、また
はビジュアル情報を前処理するため別のエンティティの
ための命令ストリーム内にトラバースすることができ
る。多くのデータは、一般に、それに対する外部参照を
有さず、したがってデータ構造内に格納されている、よ
り多くの情報を、リソースを節約するように処理するこ
とができる。

Description

【発明の詳細な説明】
【0001】本発明は、特許仮出願第60/330,244号(200
1年10月18日出願)への優先権を請求する。本発明は、本
出願の譲受人に譲受され、本明細書とともに同時出願さ
れ、参照によりそれら全体が組み入れてある米国特許出
願「Generic Parameterization for a Scene Graph」
(弁護士整理番号第3130号)および米国特許出願「Multip
le-Level Graphics Processing System and Method」
(弁護士整理番号第3140号)に関する。
【0002】
【発明の属する技術分野】本発明は、一般にコンピュー
タシステムに関し、より詳細には、コンピュータシステ
ムのディスプレイについてのグラフィカル情報およびそ
の他のビデオ情報の処理に関する。
【0003】
【従来の技術】現代の計算機システムにおいて、グラフ
ィックスおよびビデオハードウェアの性能が急速に向上
している。事実、現代の計算機システムに使用されるグ
ラフィックスシステムは、ある程度、単なるグラフィッ
クスサブシステムと言うより、コプロセッサと考えられ
ている。同時に、消費者は、たとえば、モニタ、テレ
ビ、携帯電話のディスプレイのいずれを見ようと、表示
される画像の品質に、より高い期待を寄せるようになっ
てきている。しかし、メモリやバスの速度が、メインプ
ロセッサおよび/またはグラフィックスプロセッサの進
歩に追いついてきていない。
【0004】その結果、コンピュータシステムのグラフ
ィックスにアクセスする従来のイミーディエイトモード
モデルの持つ限界に達してしまっている。同時に、開発
者および消費者は、従来のグラフィカルウィンドウィン
グアーキテクチャでは満たすことのできないような、新
規の機能や特別な効果を要求してきている。
【0005】特定のゲームプログラムが、グラフィック
スハードウェアの利点を生かした設計を行い、このよう
なゲームプログラムは、デスクトップアプリケーション
プログラム等とは異なる条件で動作する。これは主に、
ゲームでは、その他のプログラムを同時に実行しなけれ
ばならないというようなことを考える必要がないからで
ある。このようなゲームプログラムとは異なり、アプリ
ケーションでは、他のアプリケーションと、グラフィッ
クスおよびその他のシステムリソースを共有しなければ
ならない。しかし、一般に、グラフィックス処理につい
ては、協調型の、マシン全体を共用するモデルで書かれ
てはいない。
【0006】たとえば、デスクトップアプリケーション
でアニメーションを実行すると、専用のコードが必要と
なるか、または別のアプリケーションを使用しなければ
ならない。そして、たとえそうしたとしても、マルチウ
ィンドウ環境でスムーズなアニメーションを得ること
は、不可能ではないにしても、困難ではある。一般的に
言って、これは、スムーズで高速度なアニメーションを
得るには、アニメーションパラメータを更新し、高いフ
レーム速度で、理想的には、グラフィックス装置のハー
ドウェアリフレッシュ速度で、シーンを再描画(これに
は、データ構造をトラバースし描画する必要がある)し
なければならないからである。しかし、アニメーション
パラメータを更新し、シーンを定義するデータ構造をト
ラバースし描画することは、一般に、コンピュータを多
用することとなる。シーンのアニメーションを大きくし
たり回数を多くすると、多くの計算が必要となり、スム
ーズなアニメーションを得ようとすれば、シーンの複雑
さが制限される。
【0007】問題が複雑となっている、その原因は、グ
ラフィックスのハードウェアがディスプレイリフレッシ
ュを実行する場合、アニメーションの各フレームを計算
し、描画して、プレゼンテーションのための準備作業を
する必要があることである。ハードウェアの必要とする
フレームの準備ができていなかった場合は、フレームが
落ちてしまったり、遅れてしまったりすることとなる。
一定数のフレームが落ちると、アニメーションを表示し
ているディスプレイに、かなりのスタッタが現れる。ま
た、フレームの準備作業がリフレッシュ速度と同期がと
れていない場合は、切れ(tearing)として周知の、望ま
しくない影響が発生する場合がある。実際、現代のマル
チタスキングオペレーティングシステムは、システム上
の、多くのタスクの間で計算用のリソースを分割してい
る。しかし、オペレーティングシステムタスクスケジュ
ーラによるフレーム処理のための時間が、グラフィック
スハードウェアのフレーム速度に合うことはめったにな
い。したがって、たとえ計算用のリソースが十分にあっ
たとしても、アニメーションシステムは、スケジューリ
ングの問題によって、やはりフレームを落としてしまい
がちになる。たとえば、アニメーションタスクの走行が
遅すぎるようにスケジューリングされているか、または
フレームが完了する前に強制排除されてしまい、時間通
りに再スケジューリングしてスクリーンの次のハードウ
ェアリフレッシュのため次のフレームを供給することが
できなくなってしまう場合がある。このような問題は、
アニメーション化したグラフィックスをビデオまたはそ
の他の非同期式に生成されるフレームのソースと合成す
る必要がある場合に、一層複雑となる。
【0008】一般的に言って、フレームを準備するため
に現在使われている(たとえば、WM_PAINT)モデルは、余
りに多くのデータ処理を必要とし、複雑なグラフィック
ス効果(複雑なアニメーションなど)が望ましい場合に
は、リフレッシュ速度に追いつくことができない。その
結果、複雑なグラフィックス効果を従来のモデルを使っ
て試みると、次のフレームの変化を終了させて次のフレ
ームのためのビジュアル効果がやがて知覚されるのでは
なく、変化が異なるフレームに追加されて、そのため、
ビジュアル的に望ましくない目立った結果が現れる。シ
ーングラフ内のすべてのオブジェクトにオブジェクトハ
ンドルを与えることにより、選択的に変化を組み込むこ
とができるようにした計算モデルがある。しかし、この
ようなモデルは、かなりの数のオブジェクトを追跡する
ためのアプリケーションを必要とし、また、アプリケー
ションがオブジェクトを変更させようとしない場合でさ
えも、オブジェクトハンドルが存在するために、余りに
も多くのリソースを消費する。
【0009】
【発明が解決しようとする課題】要するに、コンピュー
タシステムのグラフィックスにアクセスするための既存
のモデルは、現行ディスプレイハードウェアと一緒に機
能するには不充分であり、消費者の期待を満足させるこ
とができなくなっている。グラフィックスとビデオを処
理するための新しいモデルが、必要とされている。
【0010】
【課題を解決するための手段】一言で述べると、本発明
は、ビジュアル情報を格納するためのインテリジェント
キャッシングデータ構造およびメカニズムを提供する。
インテリジェントキャッシングデータ構造は、グラフィ
ックス情報を表すオブジェクトとデータで満たされてお
り、また一般に、その中のビジュアル情報を分布させ使
用する方法をインテリジェントな方式で制御(たとえ
ば、最適化)するメカニズムに関連する。
【0011】キャッシュデータ構造は、直接レンダリン
グのためにトラバースすることができ、(たとえば、そ
れをビットマップにレンダリングして、ネットワークを
介してウェブブラウザに送る、または、それをメモリ面
にレンダリングして、レガシプログラム、システム、装
置とやり取りする)、または、その中のビジュアル情報
を前処理するために、より速く合成やアニメーションを
実行する、より低レベルのシステムに送ることのできる
命令ストリームなどにトラバースすることができる。デ
ータ構造も、ネットワークを介してリモート端末に送っ
たり、プリンタに送ったりするなど、別の方式で前処理
することができる。
【0012】データ構造は、アプリケーションプログラ
ムなどによって提供されたデータおよびその他の構造を
有し、そのデータの多くは、一般に、それに対する外部
参照を持たない。制限された識別を介する、構造に対す
る、このような限定「書込み専用」アクセスにより、デ
ータ構造内に格納された情報が、より多く最適化され、
またはリソースを節約するなどの処理がなされる。たと
えば、特にアプリケーションによる要求がなければ、デ
ータにハンドルを提供せずに、キャッシュデータ構造内
のデータを、よりコンパクトなフォーマットや、たとえ
ばビットマップやその他の後処理の結果などの、その後
の繰り返し処理の必要性を減らしたりなくしたりするフ
ォーマットなど、リソースを節約する、異なるフォーマ
ットに変更/処理できる。
【0013】また、データ構造を更新するための、トラ
ンザクション/バッチング的なモデルが、キャッシュを
介して提供される。これにより、データ構造からの読出
しを中断することなく、データ構造に対する外部修正が
できるようになる。またトランザクション/バッチング
的なモデルにより、複数の変更をスクリーンに一度に表
すこともできる。複数のコンテナに対する変更をバッチ
ングすることにより、データ構造の異なる部分にある複
数の変更が、スクリーンに一度に現れる。一代替形態で
は、トランザクション/バッチングモデルは、レンダリ
ングスレッドと同期する。別の代替形態では、コンテナ
に受取られた変更が、そのコンテナ、場合によっては他
のコンテナが閉じた後に、アトミックな方式で待ち行列
に入れられる。
【0014】必要に応じて、データ構造の一部を作成ま
たは再作成するため、アプリケーション(またはその他
のより高レベルの)プログラムコードをコールバックす
る方法およびメカニズムを提供する。このような無効化
の方法により、リソースを節約および/または矯正する
ことができる。たとえば、将来必要となる可能性のある
リソースに、必要でなければ、また実際に必要となるま
で割り当てる必要がないように、無効マークを付けてお
くことができる。同様に、現在、データ構造の不要部分
用に取っておいたリソース(たとえば、メモリ)を、対応
する1つまたは複数のコンテナに無効マークを付けるこ
とによって、また後に必要となる時用に満たしておいた
無効化方法およびメカニズムを介して、矯正できる。
【0015】本発明は、ビジュアル情報を維持するキャ
ッシュと、より高レベルのプログラムコードによる要求
に応じた、ビジュアル情報に対する変更を維持するため
の待ち行列と、それを介して、ビジュアル情報がプログ
ラムコードによってアクセスされるキャッシュに対する
インターフェースであって、プログラムコードが、キャ
ッシュ内のコンテナへのアクセス要求を含み、インター
フェースを介してビジュアル情報にアクセスするインタ
ーフェースと、さらにコンテナを開けて、そこを介して
プログラムコードがコンテナ内のデータに対する変更を
要求する面を提供する描画コンテキストと、少なくとも
コンテナが閉じるまで、待ち行列に対する変更の書き込
みを据え置いて、コンテナに対する変更がアトミックオ
ペレーションとして発生するようにするバッチングメカ
ニズムとを備えるシステムおよびコンピュータ実行可能
構成要素を介して提供することができる。
【0016】コンピュータ実行可能命令を有する方法お
よびコンピュータ読取り可能媒体は、シーングラフを維
持することと、第1の要求を受取ってシーングラフの構
造内に第1の変更を実施することと、第2の要求を受取っ
て構造内に第2の変更を実施することと、変更の実施を
要求する命令を受取った時にのみ変更することにより、
第1および第2のデータに対する変更をアトミックな方式
で実施することとを含むことができる。コンピュータ実
行可能命令を有する別の方法およびコンピュータ読取り
可能媒体は、シーングラフに対応するデータを受取るこ
とであって、データが、データに対する外部参照なしに
第1の組のデータを含むことと、第1の組のデータの少な
くとも一部を異なるフォーマットの変更データに変更す
ることと、変更データをシーングラフ内に維持すること
とを含むことができる。コンピュータ実行可能命令を有
する別の方法およびコンピュータ読取り可能媒体は、シ
ーングラフに対応するデータを受取ることと、データが
それに対する外部参照を要求しないと判断することと、
それに対する外部参照なしにシーングラフ内にデータを
維持することとを含むことができる。
【0017】システムおよびコンピュータ実行可能構成
要素は、受取りエンティティから独立したフォーマット
のデータおよびコンテナを含むビジュアル情報を維持す
るメモリ内のキャッシュと、キャッシュをトラバースし
て、処理されたデータを提供するレンダリングメカニズ
ムとを備えることができ、処理されたデータが受取りエ
ンティティが理解できるフォーマットに対応し、受取り
エンティティが命令ストリームを受取り、そこから可視
出力を作り出す。コンピュータ実行可能命令を有する方
法およびコンピュータ読取り可能媒体は、コンテナおよ
びデータを含むキャッシュデータ構造内にビジュアル情
報を維持することと、レンダリング時に少なくとも1つ
のコンテナもそれに対応するビジュアル情報を提供する
ためには必要としない時を判断することと、コンテナに
無効のマークを付けることと、コンテナを維持すること
に関連した少なくともいくつかのリソースを矯正するこ
ととを含むことができる。コンピュータ実行可能命令を
有する別の方法およびコンピュータ読取り可能媒体は、
コンテナおよびデータを含むキャッシュデータ構造内に
ビジュアル情報を維持することと、グラフィックス情報
のために割り当てた空間を有さずに、グラフィックス情
報を格納するため無効コンテナを確保しておくことと、
データ構造を別のエンティティによって受取られるため
のデータ内にレンダリングすることであって、無効コン
テナのグラフィックス情報が必要かどうかを判断し、必
要と判断した場合は、グラフィックス情報のためにリソ
ースを割り当てることと、より高レベルのプログラムコ
ードにコールバックして、グラフィックス情報を提供す
ることと、グラフィックス情報を受取ることと、受取っ
たグラフィックス情報に対応する情報を含む別のエンテ
ィティによって受取られるためデータを出力することと
を含むこととを含むことができる。
【0018】その他の利益および利点は、以下に記述す
る詳細な説明を、図面と合わせて読めば、より明らかと
なるであろう。
【0019】
【発明の実施の形態】オペレーティング環境の例 図1は、本発明を実施する適切な計算機システム環境100
の例を示す図である。計算機システム環境100は、適切
な計算環境の一例にすぎず、本発明の使用法または機能
の範囲を限定するものではない。また計算環境100は、
例示したオペレーティング環境100に示した構成要素の
いずれか1つまたは組み合わせに依存したり、その条件
が必要であると解釈されないものとする。
【0020】本発明は、その他多くの汎用または専用計
算機システム環境または機器構成とともに動作できるも
のである。本発明とともに使用するのに適切な周知の計
算機システム、環境、および/または機器構成の例とし
て、パーソナルコンピュータ、サーバコンピュータ、ハ
ンドヘルドまたはラップトップ装置、タブレット装置、
マルチプロセッサシステム、マイクロプロセッサベース
のシステム、セットトップボックス、プログラム可能な
家電機器、ネットワークPC、ミニコンピュータ、メイン
フレームコンピュータ、上述のシステムまたは装置のい
ずれかを含む分散型計算環境などがあるが、これらに限
定されるものではない。
【0021】本発明は、コンピュータによって実行され
るプログラムモジュールなどの、コンピュータ実行可能
命令の一般的な状況において説明する。一般に、プログ
ラムモジュールには、特定のタスクを実行する、または
特定の抽象データ種類を実施する、ルーチン、プログラ
ム、オブジェクト、構成要素、データ構造などが含まれ
る。本発明はまた、通信ネットワークを介してリンクさ
れているリモート処理装置によってタスクが実行される
分散型計算環境で使用される。分散型計算環境では、プ
ログラムモジュールが、メモリ記憶装置を含む、局所お
よびリモートコンピュータ記憶媒体内に置かれる。
【0022】図1を参照すると、本発明を実施するため
のシステムの例が、コンピュータ110の形態で汎用計算
装置を含む。コンピュータ110の構成要素は、プロセッ
シングユニット120と、システムメモリ130と、システム
メモリを含むさまざまなシステム構成要素をプロセッシ
ングユニット120に結合するシステムバス121とを含む
が、これらに限定されるものではない。システムバス12
1は、メモリバスまたはメモリコントローラ、周辺バ
ス、およびさまざまなバスアーキテクチャのいずれかを
使用するローカルバスを含む、数種類のバス構造のいず
れかである。このようなアーキテクチャが、業界標準ア
ーキテクチャ(Industry Standard Architecture)(ISA)
バス、マイクロチャネルアーキテクチャ(Micro Channel
Architecture)(MCA)バス、エンハンストISA(EISA)バ
ス、ビデオ電子機器標準協会(Video Eletronics Standa
rds Association)(VESA)ローカルバス、加速グラフィッ
クスポート(Accelerated Graphics Port(AGP)バス、メ
ザニンバス(Mezzanine bus)としても周知の、周辺構成
要素相互接続(Peripheral Component Interconnect)(PC
I)を含むが、これらは例示のためであって、これらに限
定されるものではない。
【0023】コンピュータ110は、一般に、さまざまな
コンピュータ読取り可能媒体を備える。コンピュータ読
取り可能媒体は、コンピュータ110によってアクセス可
能な媒体であり、揮発性および不揮発性媒体、取り外し
可能および取り外し不能媒体の両方を含む。コンピュー
タ読取り可能媒体が、コンピュータ記憶媒体と通信媒体
を備えることができるが、これらは例示のためであっ
て、これらに限定されるものではない。コンピュータ記
憶媒体は、コンピュータ読取り可能命令、データ構造、
プログラムモジュールまたはその他のデータなどの情報
を格納するための方法または技術で実施される、揮発性
および不揮発性、取り外し可能および取り外し不能媒体
の両方を備える。コンピュータ記憶媒体が、RAM、ROM、
EEPROM、フラッシュメモリまたはその他のメモリ技術、
CD-ROM、ディジタル多目的ディスク(DVD)またはその他
の光学ディスク記憶装置、磁気カセット、磁気テープ、
磁気ディスク記憶装置またはその他の磁気記憶装置、ま
たはその他の、所望の情報を格納するために使用されコ
ンピュータ110によってアクセス可能な媒体を備える
が、これらに限定されるものではない。通信媒体は、一
般に、コンピュータ読取り可能命令、データ構造、プロ
グラムモジュールまたはその他の、搬送波またはその他
の移送メカニズムなどの変調データ信号内のデータを包
含し、任意の情報配信媒体を含む。「変調データ信号」
という用語は、1つまたは複数の特性を有し、または信
号内の情報を符号化する方式で変更された信号を意味す
る。通信媒体は、ワイヤードネットワークまたは直接ワ
イヤード接続などのワイヤード媒体、および音響、RF、
赤外線およびその他のワイヤレス媒体などのワイヤレス
媒体を備えるが、これらは例示のためであって、これら
に限定されるものではない。上述のもののいずれの組み
合わせも、コンピュータ読取り可能媒体に含まれる。
【0024】システムメモリ130は、リードオンリーメ
モリ(ROM)131やランダムアクセスメモリ(RAN)132などの
揮発性および/または不揮発性メモリの形のコンピュー
タ記憶媒体を含む。基本入力/出力システム133(BIOS)
は、スタートアップ中などに、コンピュータ110内の要
素間で情報の転送の一端を担う基本ルーチンを含み、一
般にROM131内に格納される。RAM132は、一般に、ただち
にアクセス可能および/または現在プロセッシングユニ
ット120によって動作中の、データおよび/またはプログ
ラムモジュールを含む。図1は、オペレーティングシス
テム134、アプリケーションプログラム135、その他のプ
ログラムモジュール136およびプログラムデータ137を示
すが、これらは例示のためであって、これらに限定され
るものではない。
【0025】コンピュータ110はまた、その他の取り外
し可能/取り外し不能、揮発性/不揮発性コンピュータ記
憶媒体を含む。例示のためだけに、図1は、取り外し不
能の不揮発性磁気媒体から読出し、そこに書き込むハー
ドディスクドライブ141と、取り外し可能の不揮発性磁
気ディスク152から読出し、そこに書き込む磁気ディス
クドライブ151と、CD ROMまたはその他の光学媒体など
の、取り外し可能の不揮発性光学ディスク156から読出
し、そこに書き込む光学ディスクドライブ155とを示
す。オペレーティング環境の例で使用することのでき
る、その他の取り外し可能/取り外し不能、揮発性/不揮
発性コンピュータ記憶媒体は、磁気テープカセット、フ
ラッシュメモリカード、ディジタル多目的ディスク、デ
ィジタルビデオテープ、ソリッドステートRAM、ソリッ
ドステートROMなどを備えるが、これらに限定されるも
のではない。ハードディスクドライブ141は、一般に、
インターフェース140などの取り外し不能メモリインタ
ーフェースを介してシステムバス121に接続し、磁気デ
ィスクドライブ151および光学ディスクドライブ155は、
一般に、インターフェース150などの取り外し可能メモ
リインターフェースによってシステムバス121に接続す
る。
【0026】上記で説明し、図1に示した、ドライブお
よびそれらの関連コンピュータ記憶媒体は、コンピュー
タ110のための、コンピュータ読取り可能命令の記憶装
置、データ構造、プログラムモジュールおよびその他の
データを供給する。図1では、たとえば、ハードディス
クドライブ141が、オペレーティングシステム144、アプ
リケーションプログラム145、その他のプログラムモジ
ュール146およびプログラムデータ147を格納するものと
して示してある。これらの構成要素は、オペレーティン
グシステム134、アプリケーションプログラム135、その
他のプログラムモジュール136、およびプログラムデー
タ137と同じまたは異なるもののどちらかであり得るこ
とに留意されたい。オペレーティングシステム144、ア
プリケーションプログラム145、その他のプログラムモ
ジュール146、およびプログラムデータ147は、本明細書
では、これらが最小限の異なるコピーであることを示す
ため、異なる番号である。ユーザが、コマンドおよび情
報を、タブレット(電子ディジタイザ)164、マイクロホ
ン163、キーボード162および通常マウス、トラックボー
ルまたはタッチパッドと呼ばれるポインティングデバイ
ス161などの入力装置を介して、コンピュータ20に入力
する。その他の入力装置(図示せず)は、ジョイスティッ
ク、ゲームパッド、衛星放送用パラボラアンテナ、スキ
ャナなどを含むことができる。これらおよびその他の入
力装置は、システムバスに結合するユーザ入力インター
フェース160を介してプロセッシングユニット120に接続
することが多いが、パラレルポート、ゲームポートまた
はUSB(universal serial bus)など、その他のインター
フェースおよびバス構造によって接続することもある。
モニタ191またはその他の種類のディスプレイ装置も、
ビデオインターフェース190などのインターフェースを
介してシステムバス121に接続する。モニタ191も、タッ
チスクリーンインターフェース192などのインターフェ
ースを介してコンピュータシステム110への手書き(hand
writing)など、ディジタル化した入力を入力するタッチ
スクリーンパネル193などに統合されることができる。
モニタおよび/またはタッチスクリーンパネルが、タブ
レットタイプのパーソナルコンピュータなどの中に、計
算装置110が組み込まれているハウジングに物理的に結
合でき、ここで、タッチスクリーンパネル193は、本来
タブレット164として働くことに留意されたい。さら
に、計算装置110などのコンピュータはまた、出力周辺
インターフェース194などを介して接続することができ
る、スピーカ195やプリンタ196などのその他の周辺出力
装置を含むことができる。
【0027】コンピュータ110は、リモートコンピュー
タ180などの1つまたは複数のリモートコンピュータへの
論理接続を使用するネットワーク環境で動作することが
できる。リモートコンピュータ180は、パーソナルコン
ピュータ、サーバ、ルータ、ネットワークPC、ピア装置
またはその他の共通ネットワークノードであることがで
き、図1ではただ1つのメモリ記憶装置181だけを示して
あるが、一般に、コンピュータ110に対して、上述した
多くのまたはすべての要素を含む。図1に示す論理接続
は、ローカルエリアネットワーク(LAN)171およびワイド
エリアネットワーク(WAN)173を含むが、その他のネット
ワークも含むことができる。このようなネットワーキン
グ環境は、オフィス、全社的なコンピュータネットワー
ク、イントラネットおよびインターネット内で良く見か
けるものである。
【0028】LANネットワーキング環境を使用した場
合、コンピュータ110は、ネットワークインターフェー
スまたはアダプタ170を介してLAN171に接続する。WANネ
ットワーキング環境を使用した場合、コンピュータ110
は、一般に、インターネットなどの、モデム172または
その他のWAN173を介して通信を確立するための手段を備
える。モデム172は、内部または外部のいずれかである
が、ユーザ入力インターフェース160またはその他の適
切なメカニズムを介してシステムバス121に接続するこ
とができる。ネットワーク環境では、コンピュータ110
またはその一部に対して示してあるプログラムモジュー
ルが、リモートメモリ記憶装置内に格納されることがで
きる。図1には、メモリ装置181にあるリモートアプリケ
ーションプログラム185を示してあるが、これは例示の
ためであって、限定的なものではない。示してあるネッ
トワーク接続は例示のためであり、コンピュータ間の通
信を確立するためのその他の手段も使用可能であること
は理解されよう。
【0029】媒体統合層アーキテクチャ 本発明の一態様は、一般に、代表的なコンピュータシス
テムに存在するグラフィックスハードウェアのパワーを
高めることに向けられている。このため、図2に概略が
示してあるように、媒体統合層アーキテクチャ200が提
供される。アプリケーション、制御またはその他同様の
より高レベルのプログラムコード(たとえば、オペレー
ティングシステム構成要素のユーザインターフェース)2
02が、1組のアプリケーションプログラミングインター
フェース(API)204などを介して、媒体統合層アーキテク
チャ200にアクセスして、グラフィカル情報にアクセス
(書き込みまたは読出し)する。本明細書に記述した多く
の例は、APIとインターフェースをとるアプリケーショ
ンプログラムを参照する、その他のより高レベルのプロ
グラムコードおよび構成要素(たとえば、オペレーティ
ングシステムのユーザインターフェース)も、本明細書
に記述した、より低レベルの構成要素とインターフェー
スをとることができることが理解できることに留意され
たい。したがって、このようなより高レベルのプログラ
ムコードが、アプリケーションプログラムや、ユーザイ
ンターフェースなどのいずれの参照であろうとも、均等
物であると考えるべきである。
【0030】安全上の理由を含むさまざまな理由から、
媒体統合層200(これは、グラフィックスを出力する)
は、好ましくは、オペレーティングシステムに組み込ま
れることに留意されたい。たとえば、媒体統合層200の
いくつかまたは一部を、アプリケーションとオペレーテ
ィングシステムとの間に挿入することができるが、そう
すると、有害なプログラムが要求するグラフィックスを
何でも表示することができるようになり、それにより、
トラブルが発生することがある。たとえば、有害なコー
ドにより、ダイアログボックスに、パスワードを入力す
るよう要求が表示され、ユーザのパスワードが盗まれて
しまうようなことが発生する可能性がある。オペレーテ
ィングシステムに媒体統合層200を組み込むその他の理
由には、安定性および効率性が含まれる。たとえば、よ
り低レベルでは、より高い層からのデータおよび命令が
既に検証済みであることを効果的に信頼できる。さら
に、より低レベルでは、確実に呼び出すためにオペレー
ティングシステムだけが信頼されるインターフェースだ
けを与えることができる、つまり、予測不可能なプログ
ラムのインターフェースを与えないということであり、
これにより、より高い安定性が保証される。
【0031】一実施形態では、媒体統合層アーキテクチ
ャ200は、高レベル合成およびアニメーションエンジン
(high-level composition and animation engine)20
6、タイミングおよびアニメーション構成要素(timing
and animation components)208、および低レベル合成
およびアニメーションエンジン210を含む。本明細書で
使用する用語、「高レベル」および「低レベル」は、そ
の他の計算シナリオで使用されるものと同様であり、こ
こでは、一般的に言って、より高い構成要素に対してソ
フトウェア構成要素が低くなればなる程、構成要素はハ
ードウェアに対してより近くなる。したがって、たとえ
ば、高レベル合成およびアニメーションエンジン206か
ら送信されたグラフィックス情報が、低レベル合成およ
びアニメーションエンジン210で受信されるが、ここ
で、情報は、グラフィックスデータをハードウェアを含
むグラフィックスサブシステムに送信するために使用さ
れる。
【0032】以下に記述するように、高レベル合成およ
びアニメーションエンジン(本明細書では、高レベルコ
ンポジッタ(compositor)およびアニメータまたは高レベ
ルエンジンまたは構成要素とも呼ぶ)206は、ディスプレ
イツリーを構築して、アプリケーションプログラム202
によって供給されるグラフィックスシーンを表し、タイ
ミングおよびアニメーション構成要素は、宣言(または
その他の)アニメーションおよびタイミング制御を供給
する。また以下に記述するように、低レベル合成および
アニメーションエンジン(本明細書では、低レベルコン
ポジッタおよびアニメータまたは低レベルエンジンまた
は構成要素とも呼ぶ)210は、多数のアプリケーションの
シーンのためのレンダリングを合成し、そしてレンダラ
(renderer)とも呼ぶ、レンダリング構成要素とともに、
スクリーンにグラフィックスを実際のレンダリングを実
施する。しかし、時にはより高いレベルでいくつかのレ
ンダリングをすることが必要および/または好都合であ
る場合があることに留意されたい。たとえば、より低い
層は、多数のアプリケーションからサービス要求をする
が、より高い層は、アプリケーション毎にインスタンス
生成される。これにより、より高いレベルで、時間のか
かる、またはアプリケーション特有のレンダリングが可
能となり、ビットマップへの参照をより低い層にパスす
ることができる。
【0033】本発明によれば、そして以下に記述するよ
うに、好ましいディスプレイツリーが、たとえば、オブ
ジェクトおよびデータで満たされているか、その他一般
に、その中のビジュアル情報の分布および使用方法をイ
ンテリジェントな方式で制御(たとえば、最適化する)メ
カニズムに関連する、インテリジェントキャッシングデ
ータ構造を有する。一般的に言って、高レベル合成およ
びアニメーションエンジン206は、高レベルプログラム
コード202とともに、ディスプレイ構造を構築し、レン
ダリング命令および単純なアニメーション間隔を造る構
造をトラバースして、低レベル合成およびアニメーショ
ンエンジン210にパスする。高レベルコンポジッタによ
って生成されるレンダリング命令は、タイミングおよび
アニメーション情報を含む。低レベル合成およびアニメ
ーションエンジン210は、レンダリング命令およびアニ
メーション間隔をとり、次いで、グラフィックスサブシ
ステム(たとえば、グラフィックスソフトウェアおよび
ハードウェア)212に供給される、シーンのアニメーショ
ン化、レンダリングおよび合成を管理する。
【0034】一方、または局所的に表示される出力に加
え、高レベル合成およびアニメーションエンジン206(ま
たはそれと同様のもの)は、適切なフォーマットのレン
ダリングおよびアニメーション命令を、固定イメージデ
ータをプリンタ222などに送るための、より低レベルの
印刷コード220に供給し、かつ/または適切なフォーマッ
トのレンダリング命令および単純なアニメーション間隔
を、リモートマシン228に送信するための、より低レベ
ルの端末移送サーバ226に供給することができる。より
豊富な情報もネットワークを介してパスされることに留
意されたい。たとえば、ネットワークトラフィックを伴
わずに、リモートマシンにマウスのロールオーバ効果を
局所的に対処させるようにするのが望ましい。
【0035】マルチグラフィックス処理レベル 本発明には不要であるが、一実施形態では、媒体統合層
アーキテクチャ200は、したがって、グラフィックス処
理を多数のレベルに分割する。これらのレベルのそれぞ
れが全体として、アプリケーション、ユーザインターフ
ェースおよびその他202に、スムーズなアニメーション
でグラフィックスを出力させ、その他のアプリケーショ
ンのグラフィックスおよびビデオフレームでグラフィッ
クスを合成させる、いくつかのインテリジェントグラフ
ィックス処理を実行する。アニメーションおよび/また
は合成は、音声出力とも同期することができる。たとえ
ば、音声を低レベル構成要素のフレーム速度と同期させ
ることにより、音声のタイミングが、ビデオまたはグラ
フィックスのタイミングと実質的に一致し、リフレッシ
ュ速度に追いつくためタスクスケジューリングされた、
複雑な前処理機能に依存しなくなる。
【0036】本発明の一態様では、図3に全体を示すよ
うに、API204を介して通信するアプリケーション202の
下で、高レベルコンポジッタおよびアニメータエンジン
206は、アプリケーショングラフィカルデータをツリー
構造300内にキャッシュし、データをインテリジェント
な方式で前処理し、その他数々のオペレーション(以下
に記述する)を実行して複雑なグラフィックスの出力を
容易にする。マルチレベルの一実施形態では、高レベル
コンポジッタおよびアニメータエンジン206は、正しい
出力をするため、他のより低いレベルで対処すべき処理
量を著しく単純化し、データ量を著しく減少させる複雑
な処理(時には、コンパイルと呼ぶ)を実行する。しか
し、より高いレベルで実行される処理量および種類は、
かなりの程度、より低いレベルの負荷、機器構成および
性能に依存することに留意されたい。たとえば、高性能
のグラフィックスハードウェアが存在する場合、レベル
が高くなればなる程、処理量が減少し、またその反対も
ある。高レベルおよび低レベルの層の適応はこれらの要
因次第である。
【0037】本発明に従って、高レベル合成およびアニ
メーションエンジン206は、そのレベルまたはそれ以下
のレベルより比較的遅い速度で動作するため、システム
リソースを使い果たすことなく、このような複雑な処理
を達成することができる。より低いレベルは、ハードウ
ェアグラフィックスプロセッサのフレーム(リフレッシ
ュ)速度で動作することは、例示目的であり、これらに
限定されるものではない。たとえば、高レベルコンポジ
ッタおよびアニメータ206は、ディスプレイの変更を、
オンデマンドで、またはその他のスケジュール(たとえ
ば、0.5秒毎に)を生じさせる必要がある時にのみ動作す
ることができる。単一の高レベルコンポジッタおよびア
ニメータエンジン206が図3に示してあり、アプリケーシ
ョン単位で1つずつなど、多くの場合があるが、一般に
は、グラフィックス装置毎に1つだけの低レベル合成お
よびアニメーションエンジ210、たとえば、マシンのそ
れぞれのグラフィックスハードウェアカードについて1
つであることに留意されたい。
【0038】さらに、高レベルコンポジッタおよびアニ
メータ206は、たとえば、実質的にいずれかの抽象装置3
02などの、適切なレベルまたはそれ以下のレベルのフォ
ーマットに、その出力を適合させる(または出力するよ
うに設計する)ことができる。たとえば、高レベルコン
ポジッタおよびアニメータ206は、最終的に、プリンタ
に、ネットワークを介していくつかのディスプレイ用リ
モート端末に送信するために、または、ローカルグラフ
ィックスソフトウェアおよびハードウェア212上に存在
する、より低レベルのコンポジッタおよびアニメータ21
0のために、コンパイルした出力を作り出すことができ
る。単一の高レベルコンポジッタおよびアニメータが、
複数の抽象装置のためのアプリケーションの出力を処理
する場合、または、高レベルコンポジッタおよびアニメ
ータの適当なインスタンスがあって、それぞれの種類の
抽象装置のためのアプリケーションの出力を処理する場
合がある。たとえば、ローカルグラフィックスに1つ、
プリンタに1つ、そして端末サーバに1つである。
【0039】さらに、高レベルコンポジッタおよびアニ
メータ206によって供給されるコマンドおよびその他の
データを単純化して、ハードウェアの能力および条件に
一致させることができる。たとえば、ハードウェアの数
が少なくなればなる程、高レベルの前処理が多く必要と
なる。さらにまた、たとえば、1または複数のより低い
レベルにある、変化し続ける処理要求に合わせるため、
高レベルの前処理量は動的である。
【0040】ローカルグラフィックス出力については、
1機器構成において、媒体統合層アーキテクチャ200は、
高レベルコンポジッタおよびアニメータ206と、低レベ
ルコンポジッタおよびアニメータ210とを含む。以下に
記述するように、一般的に言って、高レベルコンポジッ
タおよびアニメータ206は、クライアントから受け取っ
たグラフィックス情報(たとえば、アプリケーション)の
複雑な処理を実行して、グラフィックス構造を構築し、
これらの構造をグラフィックスコマンドのストリームに
変換する。次いで、低レベルエンジン210は、さまざま
なクライアントからのグラフィックスコマンドのストリ
ームを使って、コンピュータのユーザが見るデスクトッ
プを合成する。たとえば、低レベルコンポジッタは、デ
スクトップ上に存在するさまざまなクライアントによっ
て放出されるコマンドストリームを、グラフィックス合
成エンジンによって消費されるグラフィックスコマンド
に組み合わせることにより、デスクトップを合成する。
【0041】この実施形態では、高レベルコンポジッタ
およびアニメータ206は、通常、グラフィックスサブシ
ステム212のグラフィックスハードウェアのハードウェ
アリフレッシュ速度よりはるかに遅い(要求時のみ)速度
で、構造300をグラフィックスコマンドのストリームに
構築し変換する、複雑な処理オペレーションを実行す
る。この高レベルな前処理の結果、低レベルエンジン21
0は、それ自体の処理オペレーションを、グラフィック
スサブシステム212のグラフィックスハードウェアのハ
ードウェアリフレッシュ間隔内で、実行できる。しか
し、上述したように、低レベルエンジン210は、バック
チャネルを介して高レベルエンジン206と通信し戻るこ
とができ、そのため、高レベルの前処理は、動的に低レ
ベルの処理需要に合わせることができる。低レベルコン
ポジッタおよびアニメータ206から高レベルコンポジッ
タおよびアニメータ206までのバックチャネルは、主
に、高レベルエンジン206および/または高レベルエンジ
ン206によって動作可能なエラー条件に、フロー制御を
通信するためである(それをシグナリングする低レベル
エンジン210はより多くのデータを必要とするか、また
は非常に多くを受信する)。このような通信の1つの利点
として、低レベル合成およびアニメーションエンジン21
0が、優先度やスケジューリングの心配をする必要がな
いことがあるが、リフレッシュ速度との同期の問題は依
然として残る。その代り、現代のオペレーティングシス
テムに既に存在する高レベルのCPUプロセススケジュー
リングは、優先度を制御するであろう。したがって、た
とえば、アプリケーションプロセスが、その優先度と比
べて、高レベルのグラフィックス前処理の共有部分より
も余りに多くを使用しようとした場合は、その出力に悪
影響が出るのは、そのアプリケーションである。しか
し、低レベルシステムが過負荷である場合は、あるプロ
セス/高レベル構成要素の変更および要求を、別のもの
より優先させるよう選択することができる。たとえば、
前景アプリケーションに優先度を与えることができる。
【0042】高レベルコンポジッタおよびアニメータ 一実施形態では、現実的に、それぞれのユーザアプリケ
ーションを書き込んで、多くの種類や差異のあるグラフ
ィックスハードウェアに対処することができないため、
高レベルコンポジッタおよびアニメータ206を含む媒体
統合層200が、所与のマシンのハードウェアの差を調整
する。しかし、アプリケーションがまた、媒体統合層20
0により、つまり、現在オペレーティングシステムのグ
ラフィックスAPIにパスされるものより多くの(そして異
なる)情報を高レベルコンポジッタおよびアニメータ206
に供給することにより、供給される改良グラフィックス
処理に貢献することもできる。たとえば、媒体統合層20
0を認識しているアプリケーションは、媒体統合層API20
2を介してアニメーション意図(intention)などを含
む、異なるデータを供給する。例示のために、やや変化
するイメージを連続して再描画することによってアニメ
ーションを実行する代りに、アプリケーションは、特定
のイメージを、たとえば、固定の背景に対してある時間
内にどのように移動すべきかについての命令を提供する
ことができる。次いで、媒体統合層200は、スムーズな
レンダリング方式でオートメーションを処理する。
【0043】一般的に、図3および4に示すように、アプ
リケーション202は、API204を介してシーングラフデー
タ構造を構築する。データは、高レベル構造(例えばコ
ンテナ)およびと基本データを有し、そしてビジュアル
情報をインテリジェントな方式でキャッシュに入れるた
め使用されるキャッシュデータ構造300内に入れられ
る。
【0044】インテリジェントキャッシングデータ構造
300全体内のオブジェクト(または構造)の1つが、コンテ
ナ402、404または408、(あるいはビジュアル2Dと呼ぶ)
で図4に示したコンテナである。一実施形態では、コン
テナ(たとえば、404)が、アプリケーションがそれのた
めのハンドルを保持することができるという識別を提供
し、そして、アニメーションおよびテンプレーティン
グ、ヒットテストおよびユーザデータのフックアップの
ために使用できる手続きパラメータを含む。しかし、本
明細書に記載したコンテナは、与えられる可能性のある
唯一の種類のコンテナではないことに留意されたい。そ
の他の例では、パラグラフ内にラインを格納するため、
またはグリッド内に多くの子を格納するために最適化さ
れたコンテナを含むことができる。特定の種類のコンテ
ナでは、子に対してランダムアクセスができないもの
の、子コンテナは、現行の子リストをクリアすることな
く、追加したり削除したりできる。APIを介して与えら
れる構造は、必要に応じて採用できる。
【0045】このデータ構造のその他の(内部)ノード
は、APIコンテナと直接には関連していない内部データ
を格納するために使用される、変換406、アルファノー
ド、キャッシュノード、および基本ノード410、412を含
む。基本要素(primitive)は、一般に、直接グラフィ
ックス装置にパスできる命令のストリームとして格納さ
れる。
【0046】図5のツリーセグメント500に示すように、
510のようなコンテナは、したがって、その他のコンテ
ナ512または描画基本要素516を保持でき、ここで、いず
れかのコンテナの中の基本要素の記憶装置は、グラフィ
ックス命令のストリームと考えることができる。コンテ
ナはまた、その他のコンテナも格納することができ、実
際、グラフを作成する、すなわち、コンテナは1を越え
るコンテナによって参照でき、その結果、データ構造
は、コンテナの閉路なし有向グラフ(DAG)および基本要
素のリストである(ここで、コンテナは、その親コンテ
ナの1つを含むことができる)。また図5に示すように、
グラフ的な方式でツリーが他のツリーを参照できること
により、ツリーセグメント502内のコンテナ518などの、
コンテナのいずれかを、異なるパラメータを用いてでは
あるが、異なる場所で再使用することができる。
【0047】一般に図4の描画コンテキスト416に示すよ
うに、コンテナが、開/閉パターンを介して置かれてい
る。より詳細には、より高レベルのコード202が、デー
タ構造内のコンテナ408を開け、描画コンテキスト416を
提供して、描画基本要素を書き込み、かつ/またはその
他のコンテナをデータ構造に追加し、次いでコンテナ40
8を閉じる。一代替実施形態では、コンテナを閉じた
時、そのデータがその後適用され、変更待ち行列418内
に入れられる。コンテナの開閉は、データ構造を変更す
るための主要メカニズムの1つである。その他の使用パ
ターンも、特に異なる種類のコンテナについて、用いる
ことができることに留意されたい。
【0048】本発明の一態様によれば、データ構造の変
更が待ち行列などに入れられるため、データ構造を更新
するためのトランザクション的な(またはバッチ的な)シ
ステムが、可能となる。その結果、コンテナを開閉した
時は、コンテナを閉じるまでスクリーン上に変更が現れ
ない。スクリーンへの変更はアトミックであり、部分的
に描画したスクリーンの時間的アーティファクト(構造
上の裂け目(tearing)とも呼ぶ)はない。さらに、この
ようなトランザクションの振る舞いが拡張されて、一度
に多数のコンテナに変更が適用される。このようにし
て、より高レベルのコード202が、多くの変更をシーン
にセットアップして、これらの変更を一度に適用でき
る。
【0049】一代替実施形態では、待ち行列418への変
更をディスプレイマネージャ420を介して通知すること
により、データ構造への変更が、非同期式で行われる。
その結果、変更がレンダリングスレッド422上で処理さ
れる、そして、たとえば、低レベルコンポジッタおよび
アニメータ210に送信される(ここで、図3の抽象装置302
は、低レベルコンポジッタ210にストリームされたレン
ダリングコマンドの中に、高レベルコンポジッタ206に
よって出されたレンダリングコマンドの変換をカプセル
化する抽象化を含む)。トランザクション的なモデルに
より、データ構造への修正が、データ構造からの読出し
を中断することなくできるようになる。
【0050】上述の待ち行列モデルにより、高レベルエ
ンジン206からの読出しパスが、ユーザの行うどのよう
なアクションにも関係なく走行できるようになるが、ユ
ーザアプリケーションには、APIの一貫性のあるビュー
を維持するために、キャッシュが必要であり、そのため
効率性が損なわれる。例示のために、コンテナ上のプロ
パティの設定をする主要ユーザスレッド上のユーザアプ
リケーション(高レベルエンジン206内のオブジェクト)
を考えてみよう。待ち行列モデルでは、このプロパティ
が待ち行列の中に入れられて、高レベルエンジン206デ
ータ構造に適用される。しかし、ユーザアプリケーショ
ンが、直ちにそのプロパティをコンテナからリードバッ
ク(read back)を試みると、システムは、現在待ち行列
内にあるものに基づいてプロパティをリードバックし
(これは非効率的である)、レンダリングスレッドと同期
をとり、待ち行列内で待っている変更を適用し(これは
非効率的であり、待ち行列を有するという利点を無駄に
するものである)、または、レンダリングのバージョン
および待ち中のバージョンの両方とも、ユーザ変更可能
データのコピーをコンテナに保管しなければならない
(これは、非効率的なメモリの使用法である)。
【0051】アプリケーションによるリードバック量が
かなりあるため、代替実施形態は、実際のところ、高レ
ベルエンジン206データ構造および主要ユーザスレッド
の更新を同期することにより、待ち行列を削除する。こ
のことにより、ユーザアプリケーションがレンダリング
を凍結できるようになるが、全体的なシステムは、より
効率的になる。しかし、予想される凍結による知覚的な
影響を緩和するために、さまざまな部分のアニメーショ
ンおよびタイミングシステムが独自に走行して、低レベ
ルエンジン210まで情報を通信し、高レベルエンジン206
とは関係なく、低レベルエンジン210が、より多くのア
ニメーション処理をすることができることが信頼され
る。次いで、高レベルエンジン206が、ユーザによるア
クションによって凍結しても、スクリーンへの出力は、
比較的スムーズかつ一貫性のあるままである。
【0052】さらに別の代替形態では、レンダリングス
レッドを削除し、主要ユーザスレッドが、高レベルエン
ジン206にとって必要な処理を実行し、レンダリング命
令を低レベルエンジン210にパスするようにする。これ
は、場合によっては、より効率的なスレッドの使用法で
ある。
【0053】図4に戻ると、コンテナ408は、描画基本要
素を含む基本識別ノードを備え、描画コンテキスト416
は、基本要素、変換、クリップまたはその他の描画オペ
レーションをコンテナに追加するために使用することの
できる、コンテナから得られたグラフビルダ(たとえ
ば、ヘルパオブジェクト)を含む。ディスプレイマネー
ジャ420は、高レベルコンポジッタおよびアニメータ206
のインスタンスを表す、ホストとなっているオブジェク
トを含む。そして、たとえば、hwnd(ウィンドウへのハ
ンドル)またはhvisual(ビジュアルコンテナへのハンド
ル)にアタッチすることができる。ディスプレイマネー
ジャ420は、シーンのためのルートコンテナ402へのポイ
ンタを有し、コンテナが無効で再描画の必要がある場合
に、イベントを高レベルコードにディスパッチし、ヒッ
トテストや座標変換などのサービスにアクセスする。
【0054】本発明の別の実施態様によれば、より高レ
ベルのコード202が、ハンドルなどを、データ構造およ
びコンテナ内のオブジェクトのいくつかに保持できる
が、コンテナ内の殆どのオブジェクトは、アプリケーシ
ョンの観点から見て識別を持たない。具体的には、この
構造へのアクセスが、殆どの使用パターンが「書き込み
専用」という制限がなされている。この方式で識別を制
限することにより、データ構造内に格納された情報がよ
り多く最適化できるようになり、そしてより高レベルの
コード202は、オブジェクト情報を格納したり、あるい
はオブジェクトの生存期間の管理に対処する必要がなく
なる。
【0055】たとえば、必要でないグラフの一部を維持
するリソース(たとえば、スクリーンにクリップされ
た、またはスクリーンからスクロールオフされたビジュ
アル情報に対応する)が、その後必要になればシーンを
再描画するよう要請するアプリケーションとともに、矯
正することができる。したがって、一般に、コンテナを
開けた時は、その内容がクリアされ忘れ去られている。
これらの内容が識別を持たない場合は、次いで、これら
は安全に消え去り、その結果それらのリソースは、シス
テムによって矯正することができる。より高レベルのコ
ード202またはグラフの別の部分が子コンテナ上にホー
ルドしている場合は、これらのコンテナは、そのあたり
に留まって、再挿入することができる。しかし、このパ
ターンは、より高レベルのコード202の必要性に応じ
て、変更および採用が可能である。
【0056】したがって、要するに、コンテナは、デー
タ構造を使用する高レベルプログラムコードがそのオブ
ジェクトに対するハンドルを有するという点で、識別を
持つオブジェクトである。識別を持つオブジェクトの反
対は、プレーンデータであり、そして、ユーザコード
は、識別を持たないデータをオブジェクトとして扱うメ
ンタルモデルを用いることができ、いったんこのデータ
がシステムで使用されると、その後そのオブジェクトを
参照する方法はない。このように、システムにとって好
都合な方式で、オブジェクトの変換および変更ができ
る。
【0057】単純化した例として、テキストのラインを
描画するためのAPI機能が、TextLineオブジェクトを含
むことがある。このオブジェクトのユーザは、TextLine
オブジェクトに描画すべき実際のテキストを、そのテキ
ストの異なる走行(run)をどのようにレンダリングする
のかに関するその他の情報(フォント、サイズ、ブラシ
その他)とともに、用意する。ユーザプログラムコード
が、そのテキストのラインをデータ構造に実際に追加し
たい場合は、プログラムコードは、特定の開いているノ
ード用に描画コンテキストを取って、TextLineオブジェ
クトを描画コンテキスト上にある描画機能にパスする。
実際にシステムは、そのTextLineオブジェクト内にある
データを取り、そのデータをデータ構造内にコピーす
る。このデータは識別を持たないため、高レベルコンポ
ジッタおよびアニメータエンジン206は、自由にそのラ
インの内容を取ることができ、アルゴリズム(たとえ
ば、OpenType)を走行してテキストを位置付きのグリフ
に分割して、位置付けられたグリフデータを、生のテキ
ストの代りに格納することができる。そのラインを描画
した後は、システムは、ラインを描画するのに使用され
たTextLineオブジェクトへの参照を持たない、すなわ
ち、システムが格納するデータは識別を持たない。
【0058】あるいは、より高レベルのコード202は、
その識別をそのTextLineオブジェクトに保存するよう要
請し、そのオブジェクトの参照をデータ構造内に格納す
るよう要求する。この方式で、より高レベルのコード20
2は、その後TextLineオブジェクトを変更する場合、シ
ステムは、その変更を発見し、それをレンダリングの出
力に反映する。より現実的な例においては、識別は、テ
キストラインオブジェクト上自体には使用されないが、
アプリケーションが、コンテナへのハンドルを保持し、
上述した「Generic Parameterization for a Scene Gra
ph」という名称の米国特許出願に記述しているように、
要求のあり次第、そのコンテナをパラメータ化すること
によって変更することに留意されたい。それにも関わら
ず、データ構造の主要態様の1つに、より高レベルのコ
ード202が、このようなこのようなオブジェクトを識別
とともに作成する必要性が減少し、それによって、制御
コード202によって参照される、データ構造内のポイン
トがより少なくて済むことになる。このことにより、デ
ータ構造がより一層最適化される。
【0059】たとえば、データ構造の外側に出される識
別量が少なくなるため、基本要素の格納密度を濃くする
などの最適化が可能となる。このため、ベクトルグラフ
ィックデータが、「基本リスト」または基本コンテナ内
に格納される。これらのコンテナは、それぞれの実施毎
に行われ、識別を用いてより高レベルのコード202に与
えられることはない。発信者がデータをコンテナ内に書
きこむと、そのデータは、コンテナと同様、リンクされ
ている別個のオブジェクト内に格納されるか、(たとえ
ば、変換とともに)、パックされまたはフラットにした
データアレイ内にストリームすることができる。このア
レイは、コンパクトな方式でベクトルグラフィックデー
タを格納できるばかりでなく、これらの基本要素ととも
にリソースを追跡することができる。個々の基本要素が
識別を持たないため、基本要素を分離したり、その後こ
れらの基本要素を変更するための方法をユーザに提供す
る必要がなく、基本要素をより効率的に格納できるよう
になる。
【0060】別の最適化として、サブグラフが変化して
いない場合は、そのツリーの内容のビットマップを格納
し、そのビットマップをコンテナにアタッチすることが
でき、それによって、必要とされる高レベルの処理量を
減らすことができる。さらに、サブグラフまたは基本リ
ストの一部が、レンダリングのために、より低レベルの
コードにパスされる前に、大量の処理を必要とする場合
(たとえば、ハードウェア装置に手渡される前の、ベク
トルグラフィックスの埋め尽くし(tessellation))
は、後処理の結果が、その後の再使用のためにキャッシ
ュに入れられる。
【0061】さらに、特定の読出しオペレーション(以
下に記述する)以外に、構造の作用を受けることがない
ため、データ構造は、レンダリングの結果が同じである
限り、自由にコンテナを再編成することができる。した
がって、コンテナは、空間区画化ツリー内に子コンテナ
を格納して、レンダリングおよびその他の読出しオペレ
ーションを最適化することができる。さらに、データ構
造を、同じ装置または多数の装置に何回も表示すること
ができる。このため、キャッシュが装置に依存している
場合は、装置に基づいてキーを付けることができる。サ
ブツリーが静的であると認識され、その周囲のアニメー
ションのため何度も再ペイントされ、しかも密度が十分
に濃くてリソースのドレーンを保証することができる場
合は、キャッシュノードは、自動的にそのサブツリーに
挿入される。
【0062】レンダリングについては、データ構造が読
み出され(スケジュールしておいた時間に、または異な
るスレッドによって)、あるフォームの処理情報が、よ
り低レベルのアニメータおよびコンポジッタ210にパス
される。このため、一代替実施形態では、レンダリング
オブジェクトおよびスレッド(プロセス毎の)422が、デ
ータ構造300をトラバースしてレンダリングプロセスを
駆動する。他の代替形態では、それ自身のスレッドで走
行する代りに、レンダリングプロセスが、1種の「協調
型マルチタスキング」配置で、残りのユーザコードを持
つ共通スレッドと時間を共有する。これは非常に高速の
合成およびアニメーションのために、より低レベルの構
成要素に送られるビジュアル情報にコンパイルされるの
が好ましいが、データ構造300を直接レンダリングに使
用することができる。データ構造300はまた、ネットワ
ークを介して、相互交換またはキャッシュに入れるため
に、リモート端末、プリンタに送信し、かつ/またはデ
ィスクまたはその他のよりパーマネントな記憶媒体に直
列化するなどの、異なる方式でコンパイルできる。
【0063】一代替実施形態では、データ構造300を、
別のスレッド422でのレンダリングのために読み出す。
しかし、別のスレッドを使用することが必要条件ではな
いことに留意されたい。たとえば、「レンダリングスレ
ッド」は、あるいは、他と同様、同じスレッド上で走行
する協調型共用メカニズムを有する。レンダリングプロ
セス/スレッドを使用する代替モデルでは、必要に応じ
てレンダリングスレッドが走行し、所定の効果を提供す
る。
【0064】本発明によれば、スレッドが走行する度ご
とに、まず、変更待ち行列418内にある、待ち状態の変
更を適用する。次いで、レンダリングスレッド422は、
データ構造300を歩いて、バウンディングボックスや収
集無効などの(以下に記述する)などの情報を収集する。
最後に、前回より変更されている、または別の理由から
レンダリングする必要があるエリアを歩き、データ構造
内に格納されているレンダリング命令を実行する。変更
待ち行列を使用しない代替モデルでは、変更は、作成さ
れる時に、直接適用され、したがって、ここでは適用す
る必要がないことに留意されたい。
【0065】したがって、データ構造300からのレンダ
リングは、待ち行列にある変更をデータ構造に適用する
パス、バウンディングボックス、アニメーション化した
パラメータ値などレンダリングに必要なデータ構造およ
び計算データの繰返しを含む、事前計算するパス、レン
ダリングパスなどの、別個のレンダリングスレッド422
上で走行できる多数のパスプロセスである。レンダリン
グパスは、例えば最終的に低レベルコンポジッタおよび
アニメータ210にデレゲートする抽象装置302に基づい
て、レンダリングする。レンダリングパス中、後続フレ
ーム上のレンダリング性能を向上させるために、中間キ
ャッシュリソース426を、キャッシュに入れることがで
きる。
【0066】データ構造を最後に歩き回ることで予想さ
れる結果には、データを直接実行して、スクリーン上に
表示されるか、または最後に歩き回った最後の所にフリ
ップされるバックバッファ上で実行されることが含まれ
る。その他の結果には(上述した「Multiple-Level Gra
phics Processing System and Method」という名称の米
国特許出願に記述するように)拡張タイミングおよびア
ニメーション情報とともに運ばれ、より頻繁にレンダリ
ングスレッド/プロセスにパスされるデータが含まれ
る。また、歩き回った結果、スクリーン捕獲またはその
他の理由によりデータがビットマップ上で実行され、プ
リンタへ行き、またはネットワークを介し、次いでリモ
ートマシンでの以前の結果のいずれかのために使用され
るようになる。これらの結果の組み合わせも可能であ
る。
【0067】お分かりのように、データ構造300内のデ
ータの記憶装置は、大量のメモリを必要とする。さら
に、データ構造300内の大量のデータは、クリップ、ス
クロール、またはその他の理由により、見ることができ
ないため、必要とされないことがある。本発明の別の態
様によれば、リソース需要を減らすため、データ構造30
0は、オンデマンドで構築することができる。これを可
能にするために、必要に応じて、データ構造300の一部
を作成するため、より高レベルのコード202にコールバ
ックする方法が提供される。この方法は、「無効化」と
呼び、従来のグラフィックスシステムで使用されるWM_P
AINTコールバック方法と同様であるが、直接スクリーン
上のビットに適用する代りに、構造300およびキャッシ
ュに入れた内容に適用される。しかし、1待ち行列モデ
ル代替形態では、読出しオペレーション(以下に記述す
る、ヒットテストおよび座標変換と同様)は最初に変更
を適用し、その後ユーザに示されるモデルが同期をと
る。
【0068】コンテナ(例えば、図5のコンテナ508)は、
作成された時、リソースが低いため内容がシステムによ
って捨て去られた時、またはより高レベルのコードがコ
ンテナを無効にするよう直接要請した時、無効である場
合がある。たとえば、より高レベルのコード202は、コ
ンテナを作成して、そのコンテナがどこにあって、どの
ぐらいの大きさであるのかを定義するグラフィカルサイ
ズを供給する。レンダリングオペレーション中、そのコ
ンテナが無効というマークが付けられたが、必要である
と判断された場合、レンダリングスレッド422は、より
高レベルのコード202にコンテナ内に記入するよう要請
する。レンダリングスレッド422は、より高レベルのコ
ード202がその要請を終了するまで待つか、または必要
なデータがないままレンダリングを続行する。第1の選
択は理想的なものではないが、状況によっては必要とな
る場合がある。状況によっては、アプリケーションに、
至急キャッシュに入れるべきもの、実際はキャッシュに
事前に満たしておくものを、より高レベルのコード202
に伝えさせるようにすることが望ましい。
【0069】最終的にデータが記入されると、レンダリ
ングスレッド422が再び走行して、これらの新しい変更
を表示する。現行の一実施形態では、コンテナへの記入
要請は、別の待ち行列内に入れられ、より高レベルのコ
ード202を走行しているスレッドに戻る。しかし、この
ことは、レンダリングが走行している同じスレッド上
の、より高レベルのコード202への同期呼び出しを含
む、他の方式で実施することもできる。しかし、このよ
うな呼び出しを同期させることにより、レンダリングス
レッドを機能停止することになる。
【0070】データ構造300への待ち行列更新に加え
て、データ構造300からのリードバックサービスを提供
する必要がある。このようなサービスには、ヒットテス
ト、ポイント変換およびサブグラフサイジングが含まれ
る。
【0071】ヒットテストとは、それによって、ポイン
トが、データ構造のいくつかのルートの座標空間に与え
られ、データ構造がプローブされて、そのポイントによ
ってヒットされるコンテナまたは基本要素が戻るように
するプロセスである。現行実施形態では、ヒットテスト
プロセスは、それぞれのコンテナ内に格納された3つの
フラグの値によって制御される(追加フラグも可能であ
るが)。第1のフラグには、ヒットテストアルゴリズムに
命令を出して、これまでに収集したヒットテストの結果
を停止して戻す設定が含まれる。第2のフラグには、ヒ
ットテストアルゴリズムに対して、そのポイントがその
コンテナに確かにヒットしている場合は、結果リスト内
にそのコンテナを含むよう伝えることが含まれる。第3
のフラグは、そのコンテナの子をヒットテストすべきか
どうかを制御する。
【0072】別の読出しサービスはポイント変換であ
り、ここで、グラフを介して接続する2つのノードがあ
る場合、あるコンテナの座標フレーム内のポイントが、
別のコンテナの座標フレームに変換できるサービスがあ
る。先祖から子孫、子孫から先祖、ピアツーピア(任意
のノードから別の任意のノード)の変換を含む、3つの一
般的なサブタイプがある。したがって、読出しサービス
は、座標変換のためデータ構造を問い合わせる方法を提
供し、ツリーアーキテクチャが変換を歩き回り計算する
ことを促進させる。多くの変換を実施中は、アニメーシ
ョン/変更をロックできる。そして、共通の先祖を介す
る変換の実行が提供できる。
【0073】別の読出しサービスは、サブグラフサイジ
ングである。ノードがある場合、このサービスは、その
ノードとそのサブグラフのグラフィカルサイズを戻す。
これは、サブグラフを入れるのに十分な大きさがあると
いう保証されたサイズであるか、またはサブグラフを入
れるのにちょうど十分な大きさのやや異なるサイズであ
る場合もあり、またはサブグラフの輪郭に合わせたより
複雑な形状でもあろう。
【0074】ある実施形態では、これらの読出しオペレ
ーションをデータ構造への変更に同期させたい場合があ
る。このため、これらの読出しオペレーションのいずれ
かを呼び出す前に、変更待ち行列が適用されると、より
一貫性のあるビューが、より高レベルのコードに現れ
る。
【0075】低レベルコンポジッタおよびアニメータ 上述したように、高レベルエンジン206は、いくつかの
目的で本発明によるキャッシングデータ構造300をイン
テリジェントな方式でコンパイル、および/修正するこ
とができ、そして、その出力を、ディスプレイ、印刷、
ビットマップ捕捉、リモートネットワーク通信などに対
する直接レンダリングを含む、可能ないくつかの受取り
エンティティに適合させることができる。この出力の可
能なレシーバの1つは、低レベルアニメータおよび合成
エンジン210である。本発明においては必ずしも必要で
はないが、低レベルアニメータの一例を、高レベルアニ
メータおよび合成エンジン206とともに使用されるイン
テリジェントキャッシングデータ構造のオペレーション
の説明をするため、本明細書に記述する。しかし、これ
は単に一例にすぎず、その他の受取りエンティティに対
しては、この出力やその他の適切にフォーマットした出
力も提供できることが理解されるであろう。
【0076】低レベルアニメータおよび合成エンジン21
0の主な目的は、媒体統合層200の低レベルレンダリング
スタックの抽象化を提供することであり、これによっ
て、クライアントグラフィックスアプリケーションのた
めの高フレーム速度アニメーションウィンドウ管理的な
サポートの実施ネットワーク接続を介したリモートグラ
フィックスサービスのサポートが得られる。図6および7
に示すように、低レベルアニメータおよび合成エンジン
210は、レンダラ602の集合によって提供されるサービス
を使用することにより、特に、多数のクライアントから
受取る高フレーム速度アニメーション要求を調整する合
成エンジンサーバ600として構成される(たとえば、それ
ぞれアプリケーションに対応する)。レンダラ602は、グ
ラフィックス合成エンジン606によって実施されるレン
ダリング抽象化(ビジュアルとも呼ぶ)上で働くレンダリ
ングアクションを生成する。
【0077】低レベルアニメータおよび合成エンジン21
0はまた、特別のクライアント(トップレベルのビジュア
ルマネージャ604)が、スクリーン上のレンダリングエリ
アとして、クライアントアプリケーションによって使用
されるビジュアルを操作できるようにすることが目的の
インフラストラクチャを備える、トップレベルのビジュ
アル管理サポートを提供する。レンダリングスタックへ
の、クライアントアプリケーション2021-2023(図7では3
つしか示していないが、いずれの数でもあり得る)レン
ダリングのそれぞれが、トップレベルのビジュアル(そ
れぞれ、TLV1-TLV 3)を所有し、トップレベルのビジュア
ルマネージャ604は、スクリーン上にトップレベルのビ
ジュアルのレイアウト上にオーソリティを有するクライ
アントである。一般的に言って、低レベルアニメータお
よび合成エンジン210は、デスクトップ上に存在するさ
まざまなクライアントによって放出されたコマンドスト
リームを、グラフィックス合成エンジン606によって消
費されるグラフィックスコマンドに組み合わせることに
よって、デスクトップを合成する。低レベルアニメータ
および合成エンジン210はまた、ローカルマシンと同様
のリモートマシン6101-610nのためのユーザインターフ
ェースをプログラミングするレンダリングアーキテクチ
ャを実施するために使用する構成要素をヘルプする。
【0078】図7は、低レベルアニメータおよび合成エ
ンジン(サーバ)210とそのクライアントの間の相互作用
を示す図である。上述したように、トップレベルのビジ
ュアルマネージャ604もクライアントである。またこれ
も上述したように、低レベルアニメータおよび合成エン
ジン210のクライアント2021-2023は、高レベルコンポジ
ッタおよびアニメーションエンジン206のインスタンス
を使用して、グラフィックス構造を構築し、これらを、
低レベルアニメータおよび合成エンジン210がビューさ
れるデスクトップを合成するために使用する、グラフィ
ックスコマンドのストリームに変換する。一実施形態で
は、ローカルまたはリモートマシンのいずれかで走行す
るクライアント(たとえば、高レベルコンポジッタ)によ
って出されるコマンドストリームを取り扱う、ただ1つ
の低レベルアニメータおよび合成エンジン210がある。
【0079】図6に戻ると、プロセス間通信が、低レベ
ルアニメータおよび合成エンジン(サーバ)210によって
維持されるプロパティシステム614を介して実行され
る。それぞれのトップレベルビジュアルに関連するプロ
パティが、このプロパティシステム614によって格納さ
れる。クライアントは、これらのプロパティを書き込み
読出しすることができ、またクライアントは、プロパテ
ィ値の変更要請があれば、その通知を受けることができ
る。
【0080】低レベルアニメータおよび合成エンジン21
0は、クライアント-サーバ通信、高速アニメーションレ
ンダリング、およびトップレベルビジュアル管理サポー
トを提供する。一実施形態では、低レベルアニメータお
よび合成エンジン210とクライアントとの間の通信が、
単一の双方向バイトストリームおよび/または共有メモ
リを介して発生する。バイトストリームについては、ロ
ーカルクライアントはプロセス間通信を使用し、リモー
トクライアントはネットワークバイトストリーム接続を
開ける。バイトストリームは、クライアントサーバ相互
作用を制御する通信プロトコルのためのトランスポート
層である。
【0081】通信プロトコルには、3つの主要メッセー
ジ、つまり、要請、回答およびイベントメッセージが含
まれる。エラーメッセージも、提供される。クライアン
ト/サーバ通信は、主にレンダリング命令を含み、サー
バ/クライアント通信は、主に、以下に記述する、応答
およびエラーメッセージの形のフィードバックである。
【0082】クライアントによりサーバへの要請が生成
され、そしてその要請は、トップレベルビジュアル管理
コマンド、レンダリング命令コマンド、およびタイミン
グ間隔コマンドを含む。回答は、要請に応じてサーバか
らクライアントに送信されることができる。しかし、す
べての要請が回答を受けるわけではないことに留意され
たい。回答は、情報を探す適切な要請に応じてのみ生成
される。たとえば、描画命令は、回答を必要としない。
しかし、「Get Window size」要請は、回答を必要と
し、回答を受取る。
【0083】イベントが、サーバからクライアントに送
られ、そしてそのイベントは、装置のアクションまたは
前の要請の副作用に関する情報を含む。たとえば、サー
バは、リソースを無効にするため、またクライアントに
目標フレーム速度を伝えるために、イベントメッセージ
をクライアントに通信することができる。目標フレーム
速度を通信する能力により、可変フレーム速度が可能と
なる。これは、高いフレーム速度より一貫性のあるフレ
ーム速度が得られるため望ましい。
【0084】エラーもまた、クライアントに送られる。
エラーはイベントと同様であるが、一般に、クライアン
トによって、たとえば、エラーを補償するために、異な
る取り扱いを受ける。
【0085】クライアントが、低レベルアニメータおよ
び合成エンジン210によって供給されるサービスを使用
する前に、クライアントは、まず最初に、接続マネージ
ャ710によって提供されるエントリポイントを介してエ
ンジン210に接続する(図7)。接続マネージャ710は、ク
ライアントサーバプロトコルのための双方向バイトスト
リームトランスポート層をカプセル化する通信オブジェ
クト(たとえば、7121)を割り当てる。これはまた、命令
ストリームを介してやって来るレンダリング命令の追跡
をし、それらを正しいビジュアルに関連付ける命令リス
トマネージャ(たとえば、7141)も割り当てる。
【0086】いったん接続が確立されると、クライアン
ト202は、トップレベルビジュアルの作成を要請する。
その要請に応答して、低レベルアニメータおよび合成エ
ンジン210は、グラフィックス合成エンジン606によって
提供されるサービスを使用することにより、トップレベ
ルビジュアル(たとえば、TLV1)を作成する。そのクライ
アントのために低レベルアニメータおよび合成エンジン
210によって維持されるビジュアルは、ツリー構造718内
で編成される。クライアントが、トップレベルビジュア
ルとともになされる場合は、クライアントはその破壊を
要請する。ルートノード720は、デスクトップのバック
グラウンドを表す特別なビジュアルであり、ルートビジ
ュアルの子はトップレベルビジュアルであることに留意
されたい。
【0087】図7に示すように、低レベルアニメータお
よび合成エンジン210の1つの重要な役割は、コンピュー
タデスクトップへのレンダリングを管理することであ
り、これは、別の2つの構成要素、つまり、グラフィッ
クス合成エンジン606とレンダラ602の集合のサービスに
頼ることによって達成される。グラフィックス合成エン
ジン606は、低レベル合成サービスを、ビジュアルと呼
ぶレンダリング抽象化を介して提供する。ビジュアル
は、デスクトップに合成される長方形のレンダリングエ
リアであり、グラフィックス合成エンジン606によって
供給される1組のAPIを介してレンダリングできる。デス
クトップを合成する時間になると、レンダリングパスマ
ネージャ722は、ツリーを左から右へトラバースして、
それぞれのノードのために、レンダリング構成要素を使
用してビジュアルにレンダリングする。
【0088】トップレベルビジュアルの生存期間管理に
加えて、低レベルアニメータおよび合成エンジン210は
また、トップレベルビジュアル装飾をサポートし、実質
的にはデコレーションをトップレベルビジュアルの回り
に追加する。装飾7301-7303は、レンダリング命令リス
トの形のトップレベルビジュアルマネージャによって供
給されるデコレーションをレンダリングするビジュアル
である。これらのビジュアルは、それらの属するトップ
レベルビジュアルの子である。クライアント(たとえ
ば、アプリケーション)は、トップレベルビジュアル上
で予め定義されたプロパティを設定することにより、ト
ップレベルビジュアルマネージャによって提供された装
飾を制御することができる。
【0089】低レベルアニメータおよび合成エンジン21
0はまた、トップレベルビジュアルのためのサービスを
最小限に抑えるサポートもし、これも、レンダリング命
令リストに関するトップレベルビジュアルマネージャ60
4によって供給できる。トップレベルビジュアル位置付
け、サイジング、およびZオーダ(Z-order)は、ビジュア
ルを閉じる、および最小化するなどの、ビジュアルマネ
ージャアクションに指定される3次元効果とともに、サ
ポートされる。したがって、この実施形態は、主に2次
元グラフィックスについて記述しているが、このシステ
ムは、3次元グラフィックス、ビデオ、音声を含むその
他の種類の媒体を格納するためにも容易に使用できる。
【0090】上述したように、トップレベルビジュアル
マネージャが必要とするレンダリング命令リストは、高
レベルアニメータおよびコンポジッタ206によって生成
される。低レベルアニメータおよび合成エンジン210
は、最小化や閉じるなど、デフォルトの動きを有する、
1組のトップレベルビジュアルアクションを定義する。
トップレベルビジュアルマネージャ604が、このような
動きをカクタマイズしたい場合は、高レベルAPIを使用
して、取り替えたいアクションの記述を構築する。次い
で、アクションのための命令ストリームを低レベルアニ
メータおよび合成エンジン210に送る。低レベルアニメ
ータおよび合成エンジン210は、この記述をそのプロパ
ティシステム614内に格納し、クライアントが特定のア
クションを要請した場合に、それを使用する。
【0091】トップレベルビジュアルデコレーション
が、プロパティシステム614を使用して実行される。ス
タートアップで、トップレベルビジュアルマネージャ
が、高レベルエンジン206で生成され、トップレベルビ
ジュアルマネージャデコレーションを記述する、命令リ
ストを送る。これらのデコレーションへの更新は、プロ
パティシステム614を介してなされる。つまり、クライ
アントがデコレーションを更新することを望んだ場合
に、クライアントは、名前の付いたプロパティを所望の
値に設定する。次いで、低レベルアニメータおよび合成
エンジン210は、トップレベルビジュアルマネージャ604
に、プロパティが変更されていることを知らせる。それ
に応答して、トップレベルビジュアルマネージャ604
は、プロパティを読出し、低レベルアニメータおよび合
成エンジン210の幾何学を更新する。
【0092】上述した「Generic Parameterization for
a Scene Graph」という名称の米国特許出願にさらに記
述するように、命令リストがパラメータ化される。これ
は、一般に、グラフィカルイメージの色の修正などの単
純な変更については、トップレベルビジュアルマネージ
ャ604がかかわる必要がないということである。このよ
うな場合、クライアントは、新しいパラメータ(たとえ
ば、新しい色)を送り、デコレーションを同じ命令リス
トで再レンダリングするが、異なるパラメータを使用す
る。このことにより、それぞれのデコレーションの記述
にはただ1つのコピーしか格納しないようにすることが
できるようになる。
【0093】図8は、クライアント/サーバ通信チャネル
を実施する待ち行列801-804の論理構造を示す図であ
る。タイミング間隔が、アニメーション化したレンダリ
ング命令内に埋め込まれる。レンダリング時間に、低レ
ベルアニメータおよび合成エンジン210は、現在時間を
タイミング間隔とともに、レンダラにパスする。そし
て、レンダラは、タイミング間隔を使用して、以下に記
述するように、レンダリングのために正しいパラメータ
を補間する。アニメーション化されたレンダリング命令
は、高レベルクライアントから受取った命令コマンドに
応答して、命令リストマネージャ714によって管理され
る。命令リストマネージャは、それを受取った時、レン
ダリング命令を待ち行列714に入れる。レンダリング待
ち行列はZオーダであり、レンダリングパスマネージャ7
22は、それらを合成時間に消費する。
【0094】待ち行列時間に入れられたレンダリング命
令に加えて、命令リストマネージャ714は、待ち行列801
-804を空にすること、命令を待ち行列から削除するこ
と、命令を待ち行列に追加すること、待ち行列を新しい
命令リストに置き換えること、固定時間オフセットを待
ち行列に適用することを含む、その他のオペレーション
もサポートする。タイミング制御レンダリングの特別な
例として、レンダリング命令の可視性を制御する場合が
ある。このような場合では、タイミング間隔を使用し
て、レンダリング待ち行列内の命令の生存期間を制御す
る。
【0095】クライアントが、ネストされたビジュアル
を、その内容を適切にレンダリングするために必要とし
ている場合、たとえば、ビデオがシーン内に存在するよ
うな場合など、いろいろな状況がある。ビデオの更新
は、独立したレンダリングプロセスによって実施される
ため、低レベルエンジン210は、グラフィックス合成エ
ンジンが、ビデオおよびそれにオーバラップする幾何学
を合成することに頼る。このことは、クライアントアプ
リケーションのトップレベルビジュアル内に入れられて
いる新しいビジュアルを作成することによって達成され
る。これは、グラフィックス合成エンジンの合成パス内
のビデオ更新の非同期性を隠すことになる。ビジュアル
の必要性を共有するオーバーラップしている幾何学は、
同じ種類のアルファの動き(ピクセル毎または透過)を有
する。
【0096】アニメーション 一般に、アニメーションは、高レベルコンポジッタおよ
びアニメーションエンジン206と、低レベルコンポジッ
タおよびアニメーションエンジン210の両方によって達
成される。上述したように、媒体統合層は、ユーザイン
ターフェースまたはアプリケーションレベルの下のマル
チグラフィックス処理レベルに分けられる。高レベルエ
ンジン206は、シーンをトラバースし、後の補間用に間
隔をとってアニメーションパラメータを更新し、これら
の単純化したデータ構造を、より低レベルのエンジン21
0にパスされる命令内にパッケージ化する。これは、同
期、および/または非同期方式で実施できる。間隔デー
タは、タイミングエンドポイント(開始および終了タイ
ミングデータ)と、レンダリング命令のためのパラメー
タ化した値とを含むものと考えることができる。高レベ
ルエンジン204は、要請された補間のいくつかまたはす
べてを実行することができる。たとえば、補間またはそ
の他の動作機能が複雑すぎて、より低レベルのエンジン
210では対処できない場合、またはより低レベルのエン
ジンが処理需要に追いつかない場合は、より高レベルの
エンジンが、計算のいくつかまたはすべてを実行して、
より低レベルのエンジンに単純化したデータ、命令、埋
め尽くしなどを供給し、所望の結果を達成する。より低
レベルのエンジンが、アニメーションの各フレームのた
めに補間を実行するという典型的な場合では、低レベル
のエンジン210は、パラメータ間隔を補間して、瞬間値
を得、そして命令を、グラフィックス装置によって実行
されるレンダリングコマンドに復号する。グラフィック
ス装置は、シーンに存在する可能性のあるビデオフレー
ムを追加する最終シーンを合成する。ディジタル権管理
によって保護されている内容など、その他のデータも追
加できる。
【0097】高レベルエンジン206と低レベルエンジン2
10との間の通信は、命令ストリームを介して達成され
る。高レベルエンジン206は、より遅い頻度で、または
オンデマンドで、レンダリング命令をストリームに書き
込む。低レベルエンジン210は、命令のためのストリー
ムを読出し、シーンをレンダリングする。低レベルエン
ジン210はまた、共有メモリからのビットマップなど
の、その他のソースからのシーンをレンダリングするの
に必要となるデータを得ることができることに留意され
たい。
【0098】したがって、高レベル(たとえば、ティッ
クオンデマンド)エンジン210は、アニメーションパラメ
ータを更新し、スムーズなアニメーションを維持しなが
ら、できるだけ頻度を少なくシーンデータ構造をトラバ
ースする。高レベルエンジン206は、シーンデータ構造
をトラバースし、一定時間アニメーション化されたパラ
メータのそれぞれを記述する間隔を計算し、これらの間
隔と単純パラメータ化した描画命令を、低レベルエンジ
ン210にパスする。パラメータデータには、開始時間、
終了時間、インターポレータ(interpolator)、補間デ
ータが含まれる。例示のために、イメージを削除し再描
画して、移動するように見せる代りに、高レベルコンポ
ジッタおよびアニメーションエンジン206は、低レベル
コンポジッタおよびアニメーションエンジン210に、時
間とともにイメージがどのように変更していくべきかを
命令する。たとえば、座標の開始、座標の終了、座標間
にイメージが移動すべき時間量(間隔)、および動作機
能、たとえば、線形である。低レベルコンポジッタおよ
びアニメーションエンジン210は、フレーム間の新しい
位置を判断するための補間をし、これらを、グラフィッ
クス装置が理解できる命令に変換し、そのコマンドをグ
ラフィックス装置にパスする。
【0099】高レベルエンジン206のそれぞれのパス
が、好ましくは、低レベルエンジン210に十分なデータ
を供給し、数フレームにわたってスムーズなアニメーシ
ョンを実行する。最短間隔の、時間上の長さを使用し
て、高レベルエンジン206が、スムーズなアニメーショ
ンを維持するために走行するのに必要とする最小頻度を
判断する。完全に静的、または単一の間隔によって定義
できる単純なアニメーションをのみを含むシーンは、呼
び出しプログラム202によってシーンに変更がある場合
に高レベルエンジン206が走行することだけを要求す
る。パラメータが予想され、短期間正確に補間される
が、ハードウェアリフレッシュ速度よりはるかに大き
い、より複雑なアニメーションを含むシーンは、高レベ
ルエンジン206が、0.5秒毎に1回程度の、比較的頻度の
少ない間隔で走行することを要求する。少なくとも1つ
のパラメータでは予想できない、非常に複雑なアニメー
ションは、高レベルエンジン206が、より頻繁に走行す
ることを要求する(極端な場合には、システムが、ほと
んど単一レベルアニメーションシステムまで縮退するま
で)。
【0100】高レベルエンジン206が走行する頻度は、
均一または固定である必要はない。たとえば、高レベル
エンジン206は、シーン内のアニメーションパラメータ
によって供給される最小間隔を越えない均一の間隔でス
ケジューリングできる。あるいは、高レベルエンジン20
6のそれぞれの走行上で計算される最小間隔を使用し
て、次の走行をスケジューリングし、適切な時に新しい
データが低レベルエンジン210に供給されることを確実
にする。同様に、シーンおよび/またはそのアニメーシ
ョン化したパラメータに、構造上の変更がなされた場
合、高レベルエンジン206の頻度は、新しいシーンが正
確にアニメーション化するかを確実にするために走行す
る頻度となる。
【0101】低レベル(たとえば、高速ティック)エンジ
ン210は、高レベルエンジン206とは別のタスクである。
低レベルエンジン210は、高レベルエンジン206から、シ
ーンを記述する、単純パラメータ化した描画命令とパラ
メータ間隔を受取る。低レベルエンジンは、高レベルエ
ンジン206によって新しいものが供給されるまで、これ
らのデータ構造を維持しトラバースする。低レベルエン
ジンは、多数の高レベルエンジン206をサービスし、そ
れぞれのために別個のデータ構造を維持する。低レベル
エンジン210と高レベルエンジン206との間の1対多の関
係により、システムは、多くのシーンを同時にスムーズ
にアニメーションにできるようになる。
【0102】低レベルエンジン210は、高レベルエンジ
ンの供給した間隔に基づき、瞬間アニメーションパラメ
ータを補間し、描画命令を更新し、すべてのフレームに
対してシーンをレンダリングする。低レベルエンジン21
0タスクは、システム上を高い優先度で走行し、そのフ
レームが、グラフィックスハードウェアスクリーンリフ
レッシュ速度でプレゼンテーションする準備を確実にす
る。したがって、低レベルエンジン210によって実行さ
れる補間は、一般に、線形、区分線形、3次スプライ
ン、およびこれらの同様の速度など、単純で高速の機能
に限られる。低レベルエンジン210は、ハードウェアリ
フレッシュ速度の積分除数である、正規頻度またはフレ
ーム速度で走行する。低レベルエンジン210によってレ
ンダリングされたそれぞれのフレームは、決まった数だ
け表示されるか、またはグラフィックスハードウェアに
よってリフレッシュされる。
【0103】高レベルトラバーサルプロセス902は、多
くのパス内で発生する。事前計算パスでは、ツリー900
の第1のトラバーサルは、描画に必要な計算を実行す
る。たとえば、バウンディングボックスは、それぞれの
サブツリーに対して計算し、アニメーション値を更新す
る。上述したように、単一の瞬間値ではなく、アニメー
タ1104が、間隔を供給することができる。間隔には、開
始および終了時間、どの種類のインターポレータを使用
するのか、補間用データが含まれる。次いで、ディスプ
レイツリーによって使用されるリソースが、認識のため
に低レベルエンジン210に送られる。
【0104】第2のトラバーサルが、レンダリングのた
めに低レベルエンジン210に送られるシーンを記述する
情報をパッケージ化する。図9に表されているように、
高レベルエンジン206は、命令ブロック900を、それぞれ
のトップレベルビジュアル(たとえば、ウィンドウ)に対
する単一のビジュアル更新ブロック902に蓄積する。前
回のトラバーサルから変更されていない命令ブロックサ
ブツリーは、付加されない。宣言アニメーション変更だ
けを含むサブツリーのための命令ブロックには、補間情
報の変数ブロックだけが含まれる。変換とともに再位置
付けされているサブツリーに対する命令ブロックは、ヘ
ッダのみを含む。
【0105】低レベルエンジン210レンダリングスレッ
ド(またはプロセス)は、ループ内で走行し、高フレーム
速度で、理想的にはディスプレイのリフレッシュ速度
で、ビジュアルをレンダリングし合成する。ループは、
高レベルエンジン206から受取ったビジュアル更新ブロ
ックを適用する。このパス上で描画されているリソース
およびウィンドウに対して補間した値が、更新される。
命令ブロックの変数リスト内のそれぞれの変数について
は、次のフレームのための瞬間値が計算される。次い
で、ループは、オフセットを介して、それが使用されて
いる命令リスト内の場所に反復し、メモリが新しい値を
コピーする。
【0106】更新されたオフスクリーンリソースがレン
ダリングされるが、あるいは、リソースは最初に使用さ
れた時に、レンダリングされる場合もある。それぞれの
トップレベルビジュアルについての命令リストがレンダ
リングされ、データは、ディスプレイに「bltされ(blt-
ed)」、フリップされるなど、それぞれのトップレベル
ビジュアルがスクリーン上で更新されるようにする。
【0107】リモート移送 上述したように、高レベルエンジン206は、イメージや
グリフなどのリソースを含む、低レベルエンジン210に
移送されるデータの関連セットを作成する。たとえば、
レンダリングに使用される変数が短時間の間にどのよう
に変化するのか、イメージおよびテキストグリフ、それ
がどこで使用されるかのついての情報を記述するアニメ
ーション間隔/変数、およびトップレベルビジュアル(ウ
ィンドウ)をレンダリングするのに必要な、位置付けレ
ンダリングオペレーションを記述する命令リストなどで
ある。命令リストは、静的値の代りに変数への参照を含
むことができる。
【0108】まず最初に、高レベルエンジン206は、使
用する前に作成する必要のあるリソースを作成し、命令
リスト内の不透明ハンドルによって参照される。高レベ
ルエンジン206は、最初に、リソースの装置独立型表示
を作成することによってリソースを作成する。イメージ
の場合は、表示は、フルフレームのビットマップか、ま
たはJPEGなどのフォーマットの符号化されたイメージで
ある。通信については、次いで、高レベルエンジン206
は、リソースデータを、それを特有のハンドルに指定す
る通信スタブに提出する。ハンドルは、高レベルエンジ
ン206プロセス内で生成され、そのプロセス内でのみ特
有である。
【0109】命令リスト、変数、時間値およびアニメー
ション間隔は、一緒に機能する。命令リストは、レンダ
リングを記述し、静的値の代りに変数への参照を含む。
アニメーション間隔は、短時間の間に、どのように変数
の値が変わるかを記述する。
【0110】高レベルエンジン206は、そのレンダリン
グパスの一部として、命令リストおよびアニメーション
間隔を収集する。高レベルエンジン206は、レンダリン
グ情報を、トップレベルビジュアル(ウィンドウ)毎に1
つまたは複数の命令ブロックにパッケージ化する。それ
ぞれのブロックは、特定のウィンドウのためのグラフの
サブツリーを表す。それぞれのブロックは、命令リスト
に影響を与える変数のリストを含む。高レベルエンジン
206内に維持される命令リストは、使用される変数への
参照を含む。これらの変数参照は、それぞれの変数に対
して収集され、レンダリングの前に変数の瞬間値によっ
て交換されるべき命令リスト内の場所(オフセット)に変
換される。これらのオフセットは、そのブロックのため
のアニメーション間隔情報とともにパッケージ化され
る。
【0111】図9は、ビジュアル更新データ構造を示す
図である。一般に、ウィンドウを記述する命令ブロック
の集合が、上述したように、ビジュアル更新ブロック90
2内に収集される。次いで、更新ブロックは、上述した
リソースと同様の方式でパケット内にパッケージ化され
る。更新ブロックは、大きいものである場合があり、移
送のために、より効率的な場合は、多くのパケットで送
ることができる。
【0112】低レベルエンジン210は、移送ストリーム
を聞き、パケットが到着するとそれを処理する、通常優
先スレッドを有する。好ましくは、レンダリングスレッ
ドとは別のスレッドでその作業を行い、低レベルエンジ
ン210がすべてのリフレッシュをレンダリングできるこ
とを確実にする。通信スレッドは、オペレーションコー
ド(opcode)、高レベルエンジン識別子(ID)、オブジェク
トハンドルに基づき、それぞれのパケットをパーズす
る。
【0113】容易に理解されるように、個々のグラフィ
ックスビットではなく、グラフィックス命令が送られる
ため、高レベルエンジンと低レベルエンジンとの間で通
信する必要のあるデータの量が、著しく減少する。その
結果、高レベル処理システムからのグラフィックス命令
が、ネットワーク接続を介して、それぞれが低レベル処
理システムを有する、リモート端末へ送信することがで
きる。その結果生じるグラフィックス出力は、たとえそ
の接続の帯域幅では、従来のグラフィックスデータを運
ぶことができない場合でさえも、いくつかの端末上に実
質的に同じように現れることができる。
【0114】結論 上述の詳細な説明からお分かりのように、最新のグラフ
ィックスメカニズムを介して多くの利点を提供するイン
テリジェントキャッシングデータ構造およびメカニズム
が提供される。データ構造により、リソースを節約する
ためにデータを変更し、バッチした変更を適用し、異な
る受け取りエンティティのために異なる方式でレンダリ
ングできるようになる。構造内のその他のデータは無効
化しておき、リソースを、シーンの不要部分のために割
り当てる必要のないようにするなど、キャッシュに入れ
られているシーンを作成している、より高レベルのコー
ドにコールバックすることにより、必要に応じて作成す
ることができる。
【0115】本発明は、さまざまな修正形態および代替
構成が可能であるが、特定の実施形態を、図面に例示
し、また上記の詳細な説明に記述してある。しかし、本
発明は、開示されている特定の形態に限定されるもので
はなく、その反対に、あらゆる修正形態、代替構成、お
よび本発明の趣旨および範囲内の均等物を包含するもの
であることが理解されよう。
【図面の簡単な説明】
【図1】その中に本発明を組み込むことのできるコンピ
ュータシステムの例を示すブロック図である。
【図2】その中に本発明を組み込むことのできるアーキ
テクチャの例を示すブロック図である。
【図3】本発明の一態様に従った、インテリジェントキ
ャッシングデータ構造およびそのさまざまな構成要素に
対する関係を示すブロック図である。
【図4】本発明の一態様に従った、変更待ち行列代替物
を含む、高レベル合成およびアニメーションエンジンと
その他のレベルの間の、一般的な制御の流れを示すブロ
ック図である。
【図5】本発明の一態様に従った、単純なデータ構造内
にキャッシュされたコンテナおよびその他のノードと、
それらの関係の例を示すブロック図である。
【図6】本発明の一態様に従った、他の構成要素と相互
作用する低レベル合成およびアニメーションエンジンの
一般的な構成要素を示すブロック図である。
【図7】本発明の一態様に従った、低レベル合成および
アニメーションエンジンの一般的な構成要素を示すブロ
ック図である。
【図8】本発明の一態様に従った、低レベル合成および
アニメーションエンジンとの接続の論理構造を示すブロ
ック図である。
【図9】本発明の一態様に従って、キャッシュデータ構
造から、低レベル合成およびアニメーションエンジンな
どの別のエンティティにレンダリングされる情報を通信
するために使用することができるデータ構造の例を示す
図である。
【符号の説明】
100 計算機システム環境 110 コンピュータ 120 プロセッシングユニット 121 システムバス 130 システムメモリ 131 リードオンリーメモリ(ROM) 132 ランダムアクセスメモリ(RAM) 133 基本入出力システム(BIOS) 134、144 オペレーティングシステム 135、145、185、202 アプリケーションプログラム 136、146 プログラムモジュール 137、147 プログラムデータ 140、150、160 インターフェース 141 ハードディスクドライブ 151 磁気ディスクドライブ 152 磁気ディスク 155、156 光学ディスク 161 ポインティングデバイス 162 キーボード 163 マイクロホン 164 タブレット 170 アダプタ 171 ローカルエリアネットワーク(LAN) 172 モデム 173 ワイドエリアネットワーク(WAN) 180 リモートコンピュータ 181 メモリ記憶装置 190 ビデオインターフェース 191 モニタ 192 タッチスクリーンインターフェース 193 タッチスクリーンパネル 194 周辺インターフェース 195 スピーカ 196、222 プリンタ 200 媒体統合層アーキテクチャ 202 より高レベルのコード 204 アプリケーションプログラミングインターフェー
ス(API) 206 高レベルエンジン、合成エンジン 208 タイミングおよび合成アニメーション構成要素 210 低レベルアニメータおよび合成エンジン 212 グラフィックスサブシステム 220 印刷コード 226 端末移送サーバ 228、610 リモートマシン 300 キャッシングデータ構造 302 抽象装置 402、404、408、510、512、518 コンテナ 406 変換 410、412 基本ノード 416 描画コンテキスト 418 変更待ち行列 420 ディスプレイマネージャ 422 レンダリングスレッド 500、502 セグメント 516 基本要素 604 ビジュアルマネージャ 606 グラフィックス合成エンジン 614 プロパティシステム 710 接続マネージャ 714 命令リストマネージャ 718 構造 720 ルートノード 722 レンダリングパスマネージャ 730 装飾 801、802、803、804 待ち行列 900 命令ブロック 1104 アニメータ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョーゼフ エス.ベーダ アメリカ合衆国 98103 ワシントン州 シアトル デンスモア アベニュー ノー ス 3819 (72)発明者 アダム エム.スミス アメリカ合衆国 98033 ワシントン州 カークランド ノースイースト 92 スト リート 12310 ナンバー205 (72)発明者 ゲルハルト エー.シュナイダー アメリカ合衆国 98033 ワシントン州 カークランド 99 プレイス ノースイー スト 11430 ナンバー1 (72)発明者 ケビン ティー.ギャロ アメリカ合衆国 98072 ワシントン州 ウッディンビル 222 ウェイ ノースイ ースト 19235 (72)発明者 アシュラフ エー.マイケル アメリカ合衆国 98052 ワシントン州 レッドモンド ノースイースト 40 スト リート 15606 キュー−363 Fターム(参考) 5B080 FA08 GA00

Claims (106)

    【特許請求の範囲】
  1. 【請求項1】 計算環境において、 ビジュアル情報を維持するキャッシュと、 より高レベルのプログラムコードによる要求に応じた、
    前記ビジュアル情報に対する変更を維持するための待ち
    行列と、 それを介して前記ビジュアル情報が前記プログラムコー
    ドによりアクセスされる、前記キャッシュに対するイン
    ターフェースであって、前記プログラムコードは、前記
    キャッシュ内のコンテナへのアクセス要求を含み、前記
    インターフェースを介して前記ビジュアル情報にアクセ
    スするインターフェースと、 前記コンテナを開けて、そこを介して前記プログラムコ
    ードが前記コンテナ内のデータに対する変更を要求する
    面を提供する描画コンテキストと、 少なくとも前記コンテナが閉じるまで、前記待ち行列に
    対する変更の書き込みを据え置いて、前記コンテナに対
    する変更がアトミックオペレーションとして発生するよ
    うにするバッチングメカニズムとを備えることを特徴と
    するシステム。
  2. 【請求項2】 前記バッチングメカニズムの少なくとも
    一部は、前記描画コンテキストの機能に組み込まれるこ
    とを特徴とする請求項1に記載のシステム。
  3. 【請求項3】 前記バッチングメカニズムは、前記コン
    テナが閉じるまで、かつ少なくとも1つのその他のコン
    テナが閉じるまで、前記待ち行列に対する変更の書き込
    みを据え置くことを特徴とする請求項1に記載のシステ
    ム。
  4. 【請求項4】 前記コンテナの内容は、前記コンテナが
    開くと同時にクリアされることを特徴とする請求項1に
    記載のシステム。
  5. 【請求項5】 前記変更を前記待ち行列に適用し、前記
    キャッシュをトラバースして、前記変更を含む前記ビジ
    ュアル情報に基づき命令ストリームを作成するレンダリ
    ングメカニズムをさらに備えることを特徴とする請求項
    1に記載のシステム。
  6. 【請求項6】 前記レンダリングメカニズムは、前記待
    ち行列内にある変更情報に応答してオンデマンドで動作
    することを特徴とする請求項1に記載のシステム。
  7. 【請求項7】 前記レンダリングメカニズムは、固定速
    度で動作することを特徴とする請求項1に記載のシステ
    ム。
  8. 【請求項8】 前記レンダリングメカニズムは、第1の
    動作速度で実行して前記命令ストリームを低レベル構成
    要素に提供する高レベル構成要素を備え、前記低レベル
    構成要素は、第2の動作速度で走行して前記命令に基づ
    く描画コマンドをグラフィックスサブシステムに提供
    し、前記第2の動作速度は前記第1の動作速度より大き
    く、前記グラフィックスサブシステムのフレーム速度に
    対応することを特徴とする請求項1に記載のシステム。
  9. 【請求項9】 計算環境において、 シーングラフを維持することと、 第1の要求を受取って、前記シーングラフの構造内に第1
    の変更を実施することと、 第2の要求を受取って、前記構造内に第2の変更を実施す
    ることと、 前記変更の実施を要求する命令を受取った時にのみ、前
    記変更をすることにより、前記第1および第2のデータに
    対する前記変更をアトミックな方式で実施することとを
    備えることを特徴とする方法。
  10. 【請求項10】 前記変更を実施することは、変更デー
    タを変更待ち行列に書き込むことを備えることを特徴と
    する請求項9に記載の方法。
  11. 【請求項11】 前記変更の実施を要求する前記命令
    は、クローズコマンドに対応することを特徴とする請求
    項9に記載の方法。
  12. 【請求項12】 前記構造はコンテナを備え、前記第1
    および第2の要求を受取る前に、前記コンテナを開ける
    コマンドを受取ることをさらに備えることを特徴とする
    請求項9に記載の方法。
  13. 【請求項13】 前記変更の実施を要求する前記命令
    は、前記コンテナを閉じるコマンドに対応することを特
    徴とする請求項12に記載の方法。
  14. 【請求項14】 前記コンテナを開けることと、前記命
    令をクリアすることとをさらに備えることを特徴とする
    請求項12に記載の方法。
  15. 【請求項15】 前記構造にアクセスするためのアクセ
    ス要求を受取ることと、前記アクセス要求に応答して描
    画コンテキストを戻すこととをさらに備えることを特徴
    とする請求項9に記載の方法。
  16. 【請求項16】 アトミックな方式で前記変更を実施す
    ることは、前記命令を受取ることと、前記シーングラフ
    内の少なくとも1つのその他の構造に対応する少なくと
    も1つのその他の命令を受取ることとに基づいて、前記
    変更を行うことを備えることを特徴とする請求項9に記
    載の方法。
  17. 【請求項17】 前記変更を実施することは、変更デー
    タを変更待ち行列に書き込むことを備え、前記変更待ち
    行列内の前記変更を前記シーングラフに適用すること
    と、前記シーングラフをトラバースして、前記構造に対
    する前記変更を含めて、前記シーングラフに基づいて命
    令ストリームを生成することとをさらに備えることを特
    徴とする請求項9に記載の方法。
  18. 【請求項18】 前記変更待ち行列内の前記変更および
    前記シーングラフの前記トラバースすることは、第1の
    動作速度で発生して、前記命令ストリームを低レベル構
    成要素に提供し、前記低レベル構成要素を第2の動作速
    度で実行して、前記命令に基づく描画コマンドをグラフ
    ィックスサブシステムに提供することをさらに備え、前
    記第2の動作速度は、前記第1の動作速度より大きく、前
    記グラフィックスサブシステムのフレーム速度に対応す
    ることを特徴とする請求項9に記載の方法。
  19. 【請求項19】 シーングラフを維持することと、 第1の要求を受取って、前記シーングラフの構造内に第1
    の変更を実施することと、 第2の要求を受取って、前記構造内に第2の変更を実施す
    ることと、 前記変更の実施を要求する命令を受取った時にのみ、前
    記変更をすることにより、前記第1および第2のデータに
    対する前記変更をアトミックな方式で実施することとを
    備えることを特徴とするコンピュータ実行可能命令を有
    するコンピュータ読取り可能媒体。
  20. 【請求項20】 前記変更を実施することは、変更デー
    タを変更待ち行列に書き込むことを備えることを特徴と
    する請求項19に記載のコンピュータ読取り可能媒体。
  21. 【請求項21】 前記変更の実施を要求する前記命令
    は、クローズコマンドに対応することを特徴とする請求
    項19に記載のコンピュータ読取り可能媒体。
  22. 【請求項22】 前記構造はコンテナを備え、前記第1
    および第2の要求を受取る前に、前記コンテナを開ける
    コマンドを受取ることを備える少なくとも1つのさらな
    るコンピュータ実行可能命令を有することを特徴とする
    請求項19に記載のコンピュータ読取り可能媒体。
  23. 【請求項23】 前記変更の実施を要求する前記命令
    は、前記コンテナを閉じるコマンドに対応することを特
    徴とする請求項22に記載のコンピュータ読取り可能媒
    体。
  24. 【請求項24】 前記コンテナを開けることと、前記命
    令をクリアすることとを備えるさらなるコンピュータ実
    行可能命令を有することを特徴とする請求項22に記載の
    コンピュータ読取り可能媒体。
  25. 【請求項25】 前記構造にアクセスするためのアクセ
    ス要求を受取ることと、前記アクセス要求に応答して描
    画コンテキストを戻すこととを備えるさらなるコンピュ
    ータ実行可能命令を有することを特徴とする請求項19に
    記載のコンピュータ読取り可能媒体。
  26. 【請求項26】 アトミックな方式で前記変更を実施す
    ることは、前記命令を受取ることと、前記シーングラフ
    内の少なくとも1つのその他の構造に対応する少なくと
    も1つのその他の命令を受取ることとに基づいて、前記
    変更を行うことを備えることを特徴とする請求項19に記
    載のコンピュータ読取り可能媒体。
  27. 【請求項27】 前記変更を実施することは、変更デー
    タを変更待ち行列に書き込むことを備え、前記変更待ち
    行列内の前記変更を前記シーングラフに適用すること
    と、前記シーングラフをトラバースして、前記構造に対
    する前記変更を含めて、前記シーングラフに基づいて命
    令ストリームを生成することとを備えるさらなるコンピ
    ュータ実行可能命令を有することを特徴とする請求項19
    に記載のコンピュータ読取り可能媒体。
  28. 【請求項28】 前記変更待ち行列内の前記変更および
    前記シーングラフの前記トラバースすることは、第1の
    動作速度で発生して、前記命令ストリームを低レベル構
    成要素に提供し、前記低レベル構成要素を第2の動作速
    度で実行して、前記命令に基づく描画コマンドをグラフ
    ィックスサブシステムに提供することを備えるさらなる
    コンピュータ実行可能命令を有し、前記第2の動作速度
    は、前記第1の動作速度より大きく、前記グラフィック
    スサブシステムのフレーム速度に対応することを特徴と
    する請求項19に記載のコンピュータ読取り可能媒体。
  29. 【請求項29】 シーングラフに対応するデータを受取
    り、前記データは、前記データに対する外部参照なしで
    第1の組の前記データを含むことと、 前記第1の組のデータの少なくとも一部を、異なるフォ
    ーマットの変更データに変更することと、 前記シーングラフ内に前記変更データを維持することと
    を備えることを特徴とするビジュアル情報を維持する方
    法。
  30. 【請求項30】 前記シーングラフ内に前記第1の組の
    データを維持することと、前記シーングラフ内に前記変
    更データを維持した後、前記シーングラフから前記第1
    の組のデータの少なくとも一部を除去することとをさら
    に備えることを特徴とする請求項29に記載の方法。
  31. 【請求項31】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータをデータア
    レイ内にストリーミングすることを備えることを特徴と
    する請求項29に記載の方法。
  32. 【請求項32】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータを処理して
    ビットマップにすることを備えることを特徴とする請求
    項29に記載の方法。
  33. 【請求項33】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータを結果に処
    理することと、前記結果を維持することとを備えること
    を特徴とする請求項29に記載の方法。
  34. 【請求項34】 前記第1の組のデータのサブセットは
    テキストデータを備え、前記第1の組のデータの少なく
    とも一部を変更することは、データの前記サブセットを
    処理してグリフにすることと、前記グリフを維持するこ
    ととを備えることを特徴とする請求項29に記載の方法。
  35. 【請求項35】 シーングラフに対応するデータを受取
    ることは、前記データに対する外部参照を有する第2の
    組のデータを受取ることをさらに備えることを特徴とす
    る請求項29に記載の方法。
  36. 【請求項36】 前記第2の組のデータはシーングラフ
    コンテナを含み、ハンドルを前記シーングラフコンテナ
    に提供することをさらに備えることを特徴とする請求項
    35に記載の方法。
  37. 【請求項37】 前記シーングラフをトラバースして、
    前記シーングラフに基づき命令ストリームを生成するこ
    とをさらに備えることを特徴とする請求項29に記載の方
    法。
  38. 【請求項38】 前記命令ストリームの少なくとも一部
    をキャッシュに入れることをさらに備えることを特徴と
    する請求項37に記載の方法。
  39. 【請求項39】 シーングラフに対応するデータを受取
    ることであって、前記データは、前記データに対する外
    部参照なしで第1の組の前記データを含むことと、 前記第1の組のデータの少なくとも一部を異なるフォー
    マットの変更データに変更することと、 前記シーングラフ内に前記変更データを維持することと
    を備えるコンピュータ実行可能命令を有することを特徴
    とするコンピュータ読取り可能媒体。
  40. 【請求項40】 前記シーングラフ内に前記第1の組の
    データを維持することと、前記シーングラフ内に前記変
    更データを維持した後、前記シーングラフから前記第1
    の組のデータの少なくとも一部を除去することとを備え
    るさらなるコンピュータ実行可能命令を有することを特
    徴とする請求項39に記載のコンピュータ読取り可能媒
    体。
  41. 【請求項41】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータをデータア
    レイにストリーミングすることを備えることを特徴とす
    る請求項39に記載のコンピュータ読取り可能媒体。
  42. 【請求項42】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータを処理して
    ビットマップにすることを備えることを特徴とする請求
    項39に記載のコンピュータ読取り可能媒体。
  43. 【請求項43】 前記第1の組のデータの少なくとも一
    部を変更することは、前記第1の組のデータを処理して
    結果にすることと、前記結果を維持することとを備える
    ことを特徴とする請求項39に記載のコンピュータ読取り
    可能媒体。
  44. 【請求項44】 前記第1の組のデータのサブセットは
    テキストデータを備え、前記第1の組のデータの少なく
    とも一部を変更することは、データの前記サブセットを
    処理してグリフにすることと、前記グリフを維持するこ
    ととを備えることを特徴とする請求項39に記載のコンピ
    ュータ読取り可能媒体。
  45. 【請求項45】 シーングラフに対応するデータを受取
    ることは、前記データに対する外部参照を有する第2の
    組のデータを受取ることをさらに備えることを特徴とす
    る請求項39に記載のコンピュータ読取り可能媒体。
  46. 【請求項46】 前記第2の組のデータはシーングラフ
    コンテナを備え、ハンドルを前記シーングラフコンテナ
    に提供することを備えるさらなるコンピュータ実行可能
    命令を有することを特徴とする請求項45に記載のコンピ
    ュータ読取り可能媒体。
  47. 【請求項47】 前記シーングラフをトラバースして、
    前記シーングラフに基づき命令ストリームを生成するこ
    とを備えるさらなるコンピュータ実行可能命令を有する
    ことを特徴とする請求項39に記載のコンピュータ読取り
    可能媒体。
  48. 【請求項48】 前記命令ストリームの少なくとも一部
    をキャッシュに入れることを備えるさらなるコンピュー
    タ実行可能命令を有することを特徴とする請求項47に記
    載のコンピュータ読取り可能媒体。
  49. 【請求項49】 シーングラフに対応するデータを受取
    ることと、 前記データは、それに対する外部参照を必要としないこ
    とを判断することと、 それに対する外部参照なしで前記シーングラフに前記デ
    ータを維持することとを備えることを特徴とするビジュ
    アル情報を維持する方法。
  50. 【請求項50】 前記データを変更データに変更するこ
    とと、前記シーングラフ内に前記変更データを維持する
    こととをさらに含むことを特徴とする請求項49に記載の
    方法。
  51. 【請求項51】 前記データを変更することは、前記第
    1の組のデータをデータアレイにストリーミングするこ
    とを備えることを特徴とする請求項50に記載の方法。
  52. 【請求項52】 前記データを変更することは、前記第
    1の組のデータを処理してビットマップにすることを備
    えることを特徴とする請求項50に記載の方法。
  53. 【請求項53】 前記データを変更することは、前記第
    1の組のデータを処理して結果にすることと、前記結果
    を維持することとを備えることを特徴とする請求項50に
    記載の方法。
  54. 【請求項54】 前記データはテキストデータを有し、
    前記データを変更することは、前記データを処理してグ
    リフにすることと、前記グリフを維持することとを備え
    ることを特徴とする請求項50に記載の方法。
  55. 【請求項55】 前記シーングラフをトラバースして、
    前記シーングラフに基づき命令ストリームを生成するこ
    とをさらに備えることを特徴とする請求項49に記載の方
    法。
  56. 【請求項56】 前記命令ストリームの少なくとも一部
    をキャッシュに入れることをさらに備えることを特徴と
    する請求項55に記載の方法。
  57. 【請求項57】 シーングラフに対応するデータを受取
    ることと、 前記データは、それに対する外部参照を必要としないこ
    とを判断することと、 それに対する外部参照なしで前記シーングラフ内に前記
    データを維持することとを備えるコンピュータ実行可能
    命令を有することを特徴とするコンピュータ読取り可能
    媒体。
  58. 【請求項58】 前記データを変更データに変更するこ
    とと、前記シーングラフ内に前記変更データを維持する
    こととを備えるさらなるコンピュータ実行可能命令を有
    することを特徴とする請求項57に記載のコンピュータ読
    取り可能媒体。
  59. 【請求項59】 前記データを変更することは、前記第
    1の組のデータをデータアレイにストリーミングするこ
    とを備えることを特徴とする請求項58に記載のコンピュ
    ータ読取り可能媒体。
  60. 【請求項60】 前記データを変更することは、前記第
    1の組のデータを処理してビットマップにすることを備
    えることを特徴とする請求項58に記載のコンピュータ読
    取り可能媒体。
  61. 【請求項61】 前記データを変更することは、前記第
    1の組のデータを処理して結果にすることと、前記結果
    を維持することとを備えることを特徴とする請求項58に
    記載のコンピュータ読取り可能媒体。
  62. 【請求項62】 前記データはテキストデータを備え、
    前記データを変更することは、前記データを処理してグ
    リフにすることと、前記グリフを維持することとを備え
    ることを特徴とする請求項58に記載のコンピュータ読取
    り可能媒体。
  63. 【請求項63】 前記シーングラフをトラバースして、
    前記シーングラフに基づき命令ストリームを生成するこ
    とを備えるさらなるコンピュータ実行可能命令を有する
    ことを特徴とする請求項57に記載のコンピュータ読取り
    可能媒体。
  64. 【請求項64】 前記命令ストリームの少なくとも一部
    をキャッシュに入れることを備えるさらなるコンピュー
    タ実行可能命令を有することを特徴とする請求項63に記
    載のコンピュータ読取り可能媒体。
  65. 【請求項65】 プロセッサとメモリとを有するシステ
    ムにおいて、 受取りエンティティから独立したフォーマットのデータ
    とコンテナとを含むビジュアル情報を維持する前記メモ
    リ内のキャッシュと、 前記キャッシュをトラバースして、処理されたデータを
    提供するレンダリングメカニズムであって、前記処理さ
    れたデータは、受取りエンティティが理解できるフォー
    マットに対応するレンダリングメカニズムとを備え、 前記受取りエンティティは、前記命令ストリームを受取
    り、そこから前記可視出力を作り出すことを特徴とする
    可視出力を作り出すためのシステム。
  66. 【請求項66】 前記受取りエンティティはグラフィッ
    クスサブシステムを備え、前記レンダリングメカニズム
    は、前記グラフィックスサブシステムによる直接レンダ
    リングのために前記処理されたデータを提供することを
    特徴とする請求項65に記載のシステム。
  67. 【請求項67】 前記受取りエンティティが低レベルエ
    ンジンを備え、前記レンダリングメカニズムは、前記低
    レベルエンジンのための命令ストリームとして前記処理
    されたデータを提供することを特徴とする請求項65に記
    載のシステム。
  68. 【請求項68】 前記低レベルエンジンは、前記命令ス
    トリームを処理してグラフィックスサブシステムによる
    レンダリングのためのデータにすることを特徴とする請
    求項67に記載のシステム。
  69. 【請求項69】 前記受取りエンティティは、プリンタ
    を備えることを特徴とする請求項65に記載のシステム。
  70. 【請求項70】 前記受取りエンティティは、ネットワ
    ーク上のリモートマシンを備えることを特徴とする請求
    項65に記載のシステム。
  71. 【請求項71】 計算環境において、 コンテナおよびデータを含むキャッシュデータ構造内に
    ビジュアル情報を維持することと、 レンダリング時に少なくとも1つのコンテナも、それに
    対応するビジュアル情報を提供するためには必要としな
    い時を判断することと、 前記コンテナに無効のマークを付けることと、 前記コンテナを維持することに関連する前記リソースの
    少なくともいくつかを矯正することとを備えることを特
    徴とする方法。
  72. 【請求項72】 前記キャッシュデータ構造を処理し
    て、そこからの出力をレンダリングすることをさらに備
    えることを特徴とする請求項71に記載の方法。
  73. 【請求項73】 前記キャッシュデータ構造を処理する
    間に、 1)ビジュアル情報を提供するために、今必要とされてい
    る、無効のマークを付けたコンテナを検出することと、 2)より高レベルのプログラムコードにコールバックし
    て、前記コンテナのためにデータを提供することと、 3)前記データを受取ることとをさらに備え、 前記キャッシュからレンダリングされた前記出力は、受
    取った前記データに基づく出力を含むことを特徴とする
    請求項72に記載の方法。
  74. 【請求項74】 前記キャッシュデータ構造の処理を終
    了する前に、前記より高レベルのプログラムコードから
    前記データを待つことをさらに備えることを特徴とする
    請求項73に記載の方法。
  75. 【請求項75】 より高レベルのプログラムコードにコ
    ールバックすることは、要求を待ち行列に入れて、前記
    より高レベルのプログラムコードを実行するスレッドに
    戻すことを備えることを特徴とする請求項73に記載の方
    法。
  76. 【請求項76】 コンテナおよびデータを含むキャッシ
    ュデータ構造内にビジュアル情報を維持することと、 レンダリング時に少なくとも1つのコンテナも、それに
    対応するビジュアル情報を提供するためには必要としな
    い時を判断することと、 前記コンテナに無効のマークを付けることと、 前記コンテナを維持することに関連する前記リソースの
    少なくともいくつかを矯正することとを備えるコンピュ
    ータ実行可能命令を有することを特徴とするコンピュー
    タ読取り可能媒体。
  77. 【請求項77】 前記キャッシュデータ構造を処理し
    て、そこからの出力をレンダリングすることを備える少
    なくとも1つのさらなるコンピュータ実行可能命令を有
    することを特徴とする請求項76に記載のコンピュータ読
    取り可能媒体。
  78. 【請求項78】 前記キャッシュデータ構造を処理する
    間に、 1)ビジュアル情報を提供するために、今必要とされてい
    る、無効のマークを付けたコンテナを検出することと、 2)より高レベルのプログラムコードにコールバックし
    て、前記コンテナのためにデータを提供することと、 3)前記データを受取ることとを備え、 前記キャッシュからレンダリングされた前記出力は、受
    取った前記データに基づく出力を備えるさらなるコンピ
    ュータ実行可能命令を有することを特徴とする請求項77
    に記載のコンピュータ読取り可能媒体。
  79. 【請求項79】 前記キャッシュデータ構造の処理を終
    了する前に、前記より高レベルのプログラムコードから
    前記データを待つことを備えるさらなるコンピュータ実
    行可能命令を有することを特徴とする請求項78に記載の
    コンピュータ読取り可能媒体。
  80. 【請求項80】 より高レベルのプログラムコードにコ
    ールバックすることは、要求を待ち行列に入れて、前記
    より高レベルのプログラムコードを実行するスレッドに
    戻すことを備えることを特徴とする請求項78に記載のコ
    ンピュータ読取り可能媒体。
  81. 【請求項81】 計算環境において、 コンテナおよびデータを含むキャッシュデータ構造内に
    ビジュアル情報を維持することと、 前記グラフィックス情報のために割り当てた空間を有さ
    ずに、グラフィックス情報を格納するため無効コンテナ
    を確保しておくことと、 前記データ構造を別のエンティティによって受取られる
    ためのデータにレンダリングすることであって、前記無
    効コンテナの前記グラフィックス情報が必要かどうかを
    判断することを含み、必要と判断した場合は、 1)前記グラフィックス情報のためにリソースを割り当て
    ることと、 2)より高レベルのプログラムコードにコールバックし
    て、前記グラフィックス情報を提供することと、 3)前記グラフィックス情報を受取ることと、 4)受取った前記グラフィックス情報に対応する情報を含
    む別のエンティティによって受取られるため前記データ
    を出力することとを備えることを特徴とする方法。
  82. 【請求項82】 前記無効コンテナを確保しておくこと
    は、コンテナに無効マークを付けることと、グラフィッ
    クス情報のために割り当てた空間を矯正することとを備
    えることを特徴とする請求項81に記載の方法。
  83. 【請求項83】 前記無効コンテナを確保しておくこと
    は、前記より高レベルのプログラムコードから命令を受
    取って、無効コンテナを確保することを備えることを特
    徴とする請求項81に記載の方法。
  84. 【請求項84】 別のエンティティによって受取られる
    ために前記データを出力することは、前記命令ストリー
    ムを、グラフィックスサブシステムが理解できるグラフ
    ィックス情報に変換する低レベルエンジンのため命令ス
    トリームを出力することを含むことを特徴とする請求項
    81に記載の方法。
  85. 【請求項85】 前記キャッシュデータ構造の前記レン
    ダリングを終了する前に、前記より高レベルのプログラ
    ムコードからの前記データを待つことをさらに備えるこ
    とを特徴とする請求項81に記載の方法。
  86. 【請求項86】 より高レベルのプログラムコードにコ
    ールバックすることは、要求を待ち行列に入れて、前記
    より高レベルのプログラムコードを実行するスレッドに
    戻すことを備えることを特徴とする請求項81に記載の方
    法。
  87. 【請求項87】 コンテナおよびデータを含むキャッシ
    ュデータ構造内にビジュアル情報を維持することと、 前記グラフィックス情報のために割り当てた空間を有さ
    ずに、グラフィックス情報を格納するため無効コンテナ
    を確保しておくことと、 前記データ構造を別のエンティティによって受取られる
    ためのデータにレンダリングすることであって、前記無
    効コンテナの前記グラフィックス情報が必要かどうかを
    判断することを含み、必要と判断した場合は、 1)前記グラフィックス情報のためにリソースを割り当て
    ることと、 2)より高レベルのプログラムコードにコールバックし
    て、前記グラフィックス情報を提供することと、 3)前記グラフィックス情報を受取ることと、 4)受取った前記グラフィックス情報に対応する情報を含
    む別のエンティティによって受取られるため前記データ
    を出力することとを備えるコンピュータ実行可能命令を
    有することを特徴とするコンピュータ読取り可能媒体。
  88. 【請求項88】 前記無効コンテナを確保しておくこと
    は、コンテナに無効マークを付けることと、グラフィッ
    クス情報のために割り当てた空間を矯正することとを備
    えることを特徴とする請求項87に記載のコンピュータ読
    取り可能媒体。
  89. 【請求項89】 前記無効コンテナを確保しておくこと
    は、前記より高レベルのプログラムコードから命令を受
    取って、無効コンテナを確保することを備えることを特
    徴とする請求項87に記載のコンピュータ読取り可能媒
    体。
  90. 【請求項90】 別のエンティティによって受取られる
    ために前記データを出力することは、命令ストリーム
    を、グラフィックスサブシステムが理解できるグラフィ
    ックス情報に変換する低レベルエンジンのため前記命令
    ストリームを出力することを含むことを特徴とする請求
    項87に記載のコンピュータ読取り可能媒体。
  91. 【請求項91】 前記キャッシュデータ構造の前記レン
    ダリングを終了する前に、前記より高レベルのプログラ
    ムコードからの前記データを待つことを備えるさらなる
    コンピュータ実行可能命令を有することを特徴とする請
    求項87に記載のコンピュータ読取り可能媒体。
  92. 【請求項92】 より高レベルのプログラムコードにコ
    ールバックすることは、要求を待ち行列に入れて、前記
    より高レベルのプログラムコードを実行するスレッドに
    戻すことを備えることを特徴とする請求項87に記載のコ
    ンピュータ読取り可能媒体。
  93. 【請求項93】 ビジュアル情報を維持するキャッシュ
    と、 より高レベルのプログラムコードによる要求に応じた、
    前記ビジュアル情報に対する変更を維持するための待ち
    行列と、 それを介して前記ビジュアル情報が前記プログラムコー
    ドによりアクセスされる、前記キャッシュに対するイン
    ターフェースであって、前記プログラムコードは、前記
    キャッシュ内のコンテナへのアクセス要求を含めて、前
    記インターフェースを介して前記ビジュアル情報にアク
    セスするインターフェースと、 前記コンテナを開けて、そこを介して前記プログラムコ
    ードが前記コンテナ内のデータに対する変更を要求する
    面を提供する描画コンテキストと、 少なくとも前記コンテナが閉じるまで、前記待ち行列に
    対する変更の書き込みを据え置いて、前記コンテナに対
    する変更がアトミックオペレーションとして発生するよ
    うにするバッチングメカニズムとを備えるコンピュータ
    実行可能命令を有することを特徴とするコンピュータ読
    取り可能媒体。
  94. 【請求項94】 前記バッチングメカニズムの少なくと
    も一部は、前記描画コンテキストの機能に組み込まれる
    ことを特徴とする請求項93に記載のコンピュータ読取り
    可能媒体。
  95. 【請求項95】 前記バッチングメカニズムは、前記コ
    ンテナが閉じるまで、かつ少なくとも1つのその他のコ
    ンテナが閉じるまで、前記待ち行列に対する変更の書き
    込みを据え置くことを特徴とする請求項93に記載のコン
    ピュータ読取り可能媒体。
  96. 【請求項96】 前記コンテナの内容は、前記コンテナ
    が開いているときにクリアされることを特徴とする請求
    項93に記載のコンピュータ読取り可能媒体。
  97. 【請求項97】 前記変更を前記待ち行列に適用し、前
    記キャッシュをトラバースして、前記変更を含む前記ビ
    ジュアル情報に基づき命令ストリームを作成するレンダ
    リングメカニズムを備える少なくとも1つのさらなるコ
    ンピュータ実行可能構成要素を有することを特徴とする
    請求項93に記載のコンピュータ読取り可能媒体。
  98. 【請求項98】 前記レンダリングメカニズムは、前記
    待ち行列内にある変更情報に応答してオンデマンドで動
    作することを特徴とする請求項92に記載のコンピュータ
    読取り可能媒体。
  99. 【請求項99】 前記レンダリングメカニズムは、固定
    速度で動作することを特徴とする請求項92に記載のコン
    ピュータ読取り可能媒体。
  100. 【請求項100】 前記レンダリングメカニズムは、第
    1の動作速度で実行して前記命令ストリームを低レベル
    構成要素に提供する高レベル構成要素を備え、前記低レ
    ベル構成要素は、第2の動作速度で動作して前記命令に
    基づく描画コマンドをグラフィックスサブシステムに提
    供し、前記第2の動作速度が前記第1の動作速度より大き
    く、前記グラフィックスサブシステムのフレーム速度に
    対応することを特徴とする請求項92に記載のコンピュー
    タ読取り可能媒体。
  101. 【請求項101】 受取りエンティティから独立したフ
    ォーマットのデータとコンテナとを含むビジュアル情報
    を維持するキャッシュと、 前記キャッシュをトラバースして、処理されたデータを
    提供するレンダリングメカニズムであって、前記処理さ
    れたデータは、受取りエンティティが理解できるフォー
    マットに対応するレンダリングメカニズムとを備え、 前記受取りエンティティは、前記命令ストリームを受取
    り、そこから前記可視出力を作り出す、コンピュータ実
    行可能構成要素を有することを特徴とするコンピュータ
    読取り可能媒体。
  102. 【請求項102】 前記受取りエンティティがグラフィ
    ックスサブシステムを備え、前記レンダリングメカニズ
    ムは、前記グラフィックスサブシステムによる直接レン
    ダリングのために前記処理されたデータを提供すること
    を特徴とする請求項101に記載のコンピュータ読取り可
    能媒体。
  103. 【請求項103】 前記受取りエンティティは低レベル
    エンジンを備え、前記レンダリングメカニズムは、前記
    低レベルエンジンのための命令ストリームとして前記処
    理されたデータを提供することを特徴とする請求項101
    に記載のコンピュータ読取り可能媒体。
  104. 【請求項104】 前記低レベルエンジンは、前記命令
    ストリームを処理してグラフィックスサブシステムによ
    るレンダリングのためのデータにすることを特徴とする
    請求項103に記載のコンピュータ読取り可能媒体。
  105. 【請求項105】 前記受取りエンティティは、プリン
    タを備えることを特徴とする請求項101に記載のコンピ
    ュータ読取り可能媒体。
  106. 【請求項106】 前記受取りエンティティは、ネット
    ワーク上のリモートマシンを備えることを特徴とする請
    求項101に記載のコンピュータ読取り可能媒体。
JP2002304898A 2001-10-18 2002-10-18 イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造 Expired - Fee Related JP4371351B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US33041801P 2001-10-18 2001-10-18
US60/330,418 2001-10-18
US10/185,775 US7064766B2 (en) 2001-10-18 2002-06-27 Intelligent caching data structure for immediate mode graphics
US10/185,775 2002-06-27

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2008251528A Division JP4904325B2 (ja) 2001-10-18 2008-09-29 イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造

Publications (2)

Publication Number Publication Date
JP2003228721A true JP2003228721A (ja) 2003-08-15
JP4371351B2 JP4371351B2 (ja) 2009-11-25

Family

ID=26881462

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2002304898A Expired - Fee Related JP4371351B2 (ja) 2001-10-18 2002-10-18 イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造
JP2008251528A Expired - Fee Related JP4904325B2 (ja) 2001-10-18 2008-09-29 イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2008251528A Expired - Fee Related JP4904325B2 (ja) 2001-10-18 2008-09-29 イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造

Country Status (3)

Country Link
US (2) US7064766B2 (ja)
EP (1) EP1304648B1 (ja)
JP (2) JP4371351B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007519074A (ja) * 2003-10-23 2007-07-12 マイクロソフト コーポレーション リモートなビジュアル構成のためのプロトコル
JP4827923B2 (ja) * 2005-09-07 2011-11-30 マイクロソフト コーポレーション 高レベルグラフィックスシステム
JP2015187871A (ja) * 2004-05-04 2015-10-29 フィッシャー−ローズマウント システムズ,インコーポレイテッド グラフィックユーザインタフェースを更新する方法
JP2016189211A (ja) * 2013-04-19 2016-11-04 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元場面をスクリーンに表示する方法
JP2020515967A (ja) * 2017-03-30 2020-05-28 マジック リープ, インコーポレイテッドMagic Leap,Inc. 集中レンダリング
JP2021530024A (ja) * 2018-06-18 2021-11-04 マジック リープ, インコーポレイテッドMagic Leap,Inc. 一元化レンダリング
US11699262B2 (en) 2017-03-30 2023-07-11 Magic Leap, Inc. Centralized rendering
JP7510986B2 (ja) 2018-06-18 2024-07-04 マジック リープ, インコーポレイテッド 一元化レンダリング

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7064766B2 (en) 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
US7443401B2 (en) * 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7619633B2 (en) * 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US9307884B1 (en) * 2003-01-27 2016-04-12 The Pnc Financial Services Group, Inc. Visual asset structuring tool
US8225234B2 (en) * 2003-02-28 2012-07-17 Oracle International Corporation Method for utilizing look and feel in a graphical user interface
US7486294B2 (en) * 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
US7417645B2 (en) * 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
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
US7466315B2 (en) * 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7173623B2 (en) * 2003-05-09 2007-02-06 Microsoft Corporation System supporting animation of graphical display elements through animation object instances
US7342589B2 (en) * 2003-09-25 2008-03-11 Rockwell Automation Technologies, Inc. System and method for managing graphical data
US20050091306A1 (en) * 2003-10-02 2005-04-28 Charbel Khawand Interprocessor communication protocol with high level service composition
US7466447B2 (en) * 2003-10-14 2008-12-16 Microsoft Corporation Color management system that enables dynamic balancing of performance with flexibility
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US20050088449A1 (en) * 2003-10-23 2005-04-28 Blanco Leonardo E. Child window redirection
US7814491B1 (en) * 2004-04-14 2010-10-12 Oracle America, Inc. Method and apparatus for managing system resources using a container model
US7231632B2 (en) * 2004-04-16 2007-06-12 Apple Computer, Inc. System for reducing the number of programs necessary to render an image
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7665063B1 (en) 2004-05-26 2010-02-16 Pegasystems, Inc. Integration of declarative rule-based processing with procedural programming
WO2006020001A2 (en) * 2004-07-15 2006-02-23 The Regents Of The University Of California Fast multi-pass partitioning via priority based scheduling
US7852342B2 (en) * 2004-10-14 2010-12-14 Microsoft Corporation Remote client graphics rendering
US20060082581A1 (en) * 2004-10-14 2006-04-20 Microsoft Corporation Encoding for remoting graphics to decoder device
US7603624B2 (en) * 2004-10-21 2009-10-13 Microsoft Corporation System and method for styling content in a graphical user interface control
US20060129634A1 (en) * 2004-11-18 2006-06-15 Microsoft Corporation Multiplexing and de-multiplexing graphics streams
US20060232589A1 (en) * 2005-04-19 2006-10-19 Microsoft Corporation Uninterrupted execution of active animation sequences in orphaned rendering objects
US20060274088A1 (en) * 2005-06-04 2006-12-07 Network I/O, Inc. Method for drawing graphics in a web browser or web application
US7626595B2 (en) * 2005-08-01 2009-12-01 Microsoft Corporation Resolution independent image resource
US8527563B2 (en) * 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US8026920B2 (en) * 2005-09-13 2011-09-27 Microsoft Corporation Extensible visual effects on active content in user interfaces
US8266232B2 (en) * 2005-10-15 2012-09-11 International Business Machines Corporation Hardware processing of commands within virtual client computing environment
US20070168379A1 (en) * 2006-01-17 2007-07-19 Patel Sushma B Method and apparatus for cataloging screen shots of a program
US7868893B2 (en) * 2006-03-07 2011-01-11 Graphics Properties Holdings, Inc. Integration of graphical application content into the graphical scene of another application
US8924335B1 (en) 2006-03-30 2014-12-30 Pegasystems Inc. Rule-based user interface conformance methods
US7999830B1 (en) * 2006-04-07 2011-08-16 Dell Products L.P. Rendering changed portions of composited images
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
US8234392B2 (en) 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
US8250525B2 (en) 2007-03-02 2012-08-21 Pegasystems Inc. Proactive performance management for multi-user enterprise software systems
US20090058842A1 (en) * 2007-09-04 2009-03-05 Apple Inc. Devices and methods for controlling a display to conserve power
US20090328080A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Window Redirection Using Interception of Drawing APIS
US8843435B1 (en) 2009-03-12 2014-09-23 Pegasystems Inc. Techniques for dynamic data processing
US8468492B1 (en) 2009-03-30 2013-06-18 Pegasystems, Inc. System and method for creation and modification of software applications
US8275805B2 (en) * 2010-03-26 2012-09-25 Intel Corporation Method of decreasing a total computation time for a visual simulation loop in a virtual world application
US8880487B1 (en) 2011-02-18 2014-11-04 Pegasystems Inc. Systems and methods for distributed rules processing
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
JP5977023B2 (ja) 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
US9195936B1 (en) 2011-12-30 2015-11-24 Pegasystems Inc. System and method for updating or modifying an application without manual coding
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US10353991B2 (en) 2014-09-09 2019-07-16 Intentional Software Corporation Generating a visual description tree based on a layout interruption record
US10387547B2 (en) 2014-09-09 2019-08-20 Intentional Software Corporation Layout engine for creating a visual layout tree for a document
US10402478B2 (en) 2014-09-09 2019-09-03 Intentional Software Corporation Linking visual layout nodes of a visual layout tree using positioning pointers
US10430500B2 (en) * 2014-09-09 2019-10-01 Intentional Software Corporation Detecting and animating a change in position of a visual layout node of a visual layout tree
US11003833B2 (en) 2014-09-09 2021-05-11 Microsoft Technology Licensing, Llc Adding visual description nodes to a visual description tree during layout
US10387540B2 (en) 2014-09-09 2019-08-20 Intentional Software Corporation Generating a visual layout tree using caching techniques
US10469396B2 (en) 2014-10-10 2019-11-05 Pegasystems, Inc. Event processing with enhanced throughput
US10698599B2 (en) 2016-06-03 2020-06-30 Pegasystems, Inc. Connecting graphical shapes using gestures
US10825129B2 (en) * 2016-06-12 2020-11-03 Apple Inc. Eliminating off screen passes using memoryless render target
US20180011910A1 (en) * 2016-07-06 2018-01-11 Facebook, Inc. Systems and methods for performing operations with data acquired from multiple sources
US10698647B2 (en) 2016-07-11 2020-06-30 Pegasystems Inc. Selective sharing for collaborative application usage
US10558449B2 (en) * 2016-12-06 2020-02-11 Vmware, Inc. Distribution and execution of instructions in a distributed computing environment
US11048488B2 (en) 2018-08-14 2021-06-29 Pegasystems, Inc. Software code optimizer and method
CN113012027A (zh) * 2019-12-19 2021-06-22 深圳市万普拉斯科技有限公司 动画刷新请求控制方法、装置、计算机设备和存储介质
CN111340681B (zh) * 2020-02-10 2024-02-20 青岛海信宽带多媒体技术有限公司 一种图像处理方法及装置
CN111736850B (zh) 2020-07-21 2020-12-22 腾讯科技(深圳)有限公司 图像处理方法、装置、服务器及介质
US11567945B1 (en) 2020-08-27 2023-01-31 Pegasystems Inc. Customized digital content generation systems and methods

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US648765A (en) * 1899-09-01 1900-05-01 Henry G Lykken Tube expanding, beading, and cutting tool.
US4209852A (en) 1974-11-11 1980-06-24 Hyatt Gilbert P Signal processing and memory arrangement
EP0513206B1 (en) * 1990-01-30 1995-04-12 Johnson Service Company Networked facilities management system
US5509115A (en) * 1990-08-08 1996-04-16 Peerless Systems Corporation Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US5261041A (en) 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
US5852449A (en) 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
WO1993021636A1 (en) 1992-04-10 1993-10-28 Avid Technology, Inc. A method and apparatus for representing and editing multimedia compositions
US5987627A (en) * 1992-05-13 1999-11-16 Rawlings, Iii; Joseph H. Methods and apparatus for high-speed mass storage access in a computer system
US5500933A (en) 1993-04-28 1996-03-19 Canon Information Systems, Inc. Display system which displays motion video objects combined with other visual objects
WO1994027234A1 (en) 1993-05-10 1994-11-24 Taligent, Inc. Multimedia synchronization system
US5555368A (en) 1993-12-30 1996-09-10 Taligent Object-oriented multi-tasking view framework
US5912666A (en) 1994-08-23 1999-06-15 Object Technology Licensing Corp. Object-oriented global cursor tool
US5745761A (en) * 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture with extension capability
US5986667A (en) 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5727141A (en) 1995-05-05 1998-03-10 Apple Computer, Inc. Method and apparatus for identifying user-selectable regions within multiple display frames
US5790130A (en) * 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
US5930810A (en) 1995-08-09 1999-07-27 Taylor Corporation Printing system with pre-defined user modifiable forms and local and remote printing
US5986675A (en) 1996-05-24 1999-11-16 Microsoft Corporation System and method for animating an object in three-dimensional space using a two-dimensional input device
US5936632A (en) * 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
US6275857B1 (en) 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US5920325A (en) 1996-11-20 1999-07-06 International Business Machines Corporation Prioritization of background display during animation
US6137499A (en) 1997-03-07 2000-10-24 Silicon Graphics, Inc. Method, system, and computer program product for visualizing data using partial hierarchies
US6195694B1 (en) 1997-03-13 2001-02-27 International Business Machines Corporation Server for reconfiguring control of a subset of devices on one or more kiosks
EP0922360A4 (en) 1997-04-07 1999-12-29 At & T Corp ADAPTIVE CONTROL ENABLING SYSTEM AND METHOD FOR INTERFACING WITH MPEG-CODED AUDIOVISUAL OBJECTS
US6160907A (en) 1997-04-07 2000-12-12 Synapix, Inc. Iterative three-dimensional process for creating finished media content
US6215495B1 (en) 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US5924098A (en) 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6377263B1 (en) 1997-07-07 2002-04-23 Aesthetic Solutions Intelligent software components for virtual worlds
US6314470B1 (en) 1997-07-25 2001-11-06 Hewlett Packard Company System and method for asynchronously accessing a graphics system for graphics application evaluation and control
US6154215A (en) 1997-08-01 2000-11-28 Silicon Graphics, Inc. Method and apparatus for maintaining multiple representations of a same scene in computer generated graphics
US6654931B1 (en) 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US6243856B1 (en) 1998-02-03 2001-06-05 Amazing Media, Inc. System and method for encoding a scene graph
US6272650B1 (en) 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6075532A (en) 1998-03-23 2000-06-13 Microsoft Corporation Efficient redrawing of animated windows
US6266053B1 (en) * 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US6237092B1 (en) 1998-05-05 2001-05-22 International Business Machines Corp. Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application
US6631403B1 (en) 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
KR20010034920A (ko) 1998-06-26 2001-04-25 매클린토크 샤운 엘 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기
US6731314B1 (en) 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6487565B1 (en) 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6411297B1 (en) 1999-03-03 2002-06-25 Discreet Logic Inc. Generating image data
US6714201B1 (en) 1999-04-14 2004-03-30 3D Open Motion, Llc Apparatuses, methods, computer programming, and propagated signals for modeling motion in computer applications
US6986101B2 (en) 1999-05-06 2006-01-10 International Business Machines Corporation Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files
US6707456B1 (en) 1999-08-03 2004-03-16 Sony Corporation Declarative markup for scoring multiple time-based assets and events within a scene composition system
US7184038B2 (en) 1999-09-24 2007-02-27 Sun Microsystems, Inc. Using render bin parallelism for rendering scene graph based graphics data
US6765571B2 (en) 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US6538656B1 (en) 1999-11-09 2003-03-25 Broadcom Corporation Video and graphics system with a data transport processor
AU1948201A (en) 1999-12-06 2001-06-12 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7102651B1 (en) 1999-12-22 2006-09-05 Adobe Systems Incorporated Hierarchical 2-D color compositing with blending mode and opacity controls at all levels
US7103581B1 (en) * 2000-01-13 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for pricing print jobs
US6833840B2 (en) 2000-02-14 2004-12-21 Optibase Ltd PROTO implementation in MPEG-4
JP2001273520A (ja) 2000-03-23 2001-10-05 Famotik Ltd マルチメディアドキュメント統合表示システム
US6751655B1 (en) 2000-04-18 2004-06-15 Sun Microsystems, Inc. Method and apparatus for transport of scenegraph information across a network
US6717599B1 (en) 2000-06-29 2004-04-06 Microsoft Corporation Method, system, and computer program product for implementing derivative operators with graphics hardware
US20020019844A1 (en) * 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2004506262A (ja) 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
US6675230B1 (en) 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US6910044B2 (en) 2000-09-20 2005-06-21 Sap Aktiengesellschaft Method and apparatus for structuring, maintaining, and using families of data
US6636211B2 (en) 2000-12-15 2003-10-21 Dassault Systemes CAD/CAM feature tree with manipulatable 3D miniatures
US6732109B2 (en) 2001-01-31 2004-05-04 The Eon Company Method and system for transferring information between a user interface and a database over a global information network
US7069503B2 (en) 2001-06-04 2006-06-27 Murata Kikai Kabushiki Kaisha Device and program for structured document generation data structure of structural document
US7305011B2 (en) 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7064766B2 (en) 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7161599B2 (en) 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US6919891B2 (en) 2001-10-18 2005-07-19 Microsoft Corporation Generic parameterization for a scene graph
EP1454226A4 (en) 2001-10-23 2004-12-29 Samsung Electronics Co Ltd INFORMATION STORAGE MEDIUM WITH A MARKUP DOCUMENT AND AV DATA, RECORDING METHOD, PLAYBACK METHOD AND PLAYBACK APPARATUS THEREFOR
US7055092B2 (en) 2001-12-05 2006-05-30 Canon Kabushiki Kaisha Directory for multi-page SVG document
US20030110297A1 (en) 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US20040110490A1 (en) 2001-12-20 2004-06-10 Steele Jay D. Method and apparatus for providing content to media devices
KR100453225B1 (ko) 2001-12-26 2004-10-15 한국전자통신연구원 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법
US7076332B2 (en) 2002-01-18 2006-07-11 National Instruments Corporation System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality
EP1472620A2 (en) 2002-02-04 2004-11-03 Mobileaware Technologies Limited Document transformation
US20030210267A1 (en) 2002-05-13 2003-11-13 Kylberg Robert Lee Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
AU2003249168A1 (en) 2002-07-11 2004-02-02 Raytheon Company System and method for asynchronous storage and playback of a system state
WO2004008303A2 (en) 2002-07-12 2004-01-22 Raytheon Company Scene graph based display for desktop applications
US20040216139A1 (en) 2002-08-21 2004-10-28 Rhoda Merlin A. System controlling test/measurement devices on a network using markup language documents and methods thereof
US7240346B2 (en) 2002-11-13 2007-07-03 Microsoft Corporation Method and system for accessing drawing resources
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
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
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US8051389B2 (en) 2003-08-26 2011-11-01 Hewlett-Packard Development Company, L.P. Methods of displaying resources of overlapping but separate hierarchies
US7012606B2 (en) 2003-10-23 2006-03-14 Microsoft Corporation System and method for a unified composition engine in a graphics processing system

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007519074A (ja) * 2003-10-23 2007-07-12 マイクロソフト コーポレーション リモートなビジュアル構成のためのプロトコル
JP4691037B2 (ja) * 2003-10-23 2011-06-01 マイクロソフト コーポレーション リモートなビジュアル構成のためのプロトコル
JP2015187871A (ja) * 2004-05-04 2015-10-29 フィッシャー−ローズマウント システムズ,インコーポレイテッド グラフィックユーザインタフェースを更新する方法
JP4827923B2 (ja) * 2005-09-07 2011-11-30 マイクロソフト コーポレーション 高レベルグラフィックスシステム
US11113876B2 (en) 2013-04-19 2021-09-07 Huawei Technologies Co., Ltd. Method for displaying a 3D scene graph on a screen
JP2016189211A (ja) * 2013-04-19 2016-11-04 華為技術有限公司Huawei Technologies Co.,Ltd. 3次元場面をスクリーンに表示する方法
JP2020515967A (ja) * 2017-03-30 2020-05-28 マジック リープ, インコーポレイテッドMagic Leap,Inc. 集中レンダリング
US11315316B2 (en) 2017-03-30 2022-04-26 Magic Leap, Inc. Centralized rendering
JP7168578B2 (ja) 2017-03-30 2022-11-09 マジック リープ, インコーポレイテッド 集中レンダリング
US11699262B2 (en) 2017-03-30 2023-07-11 Magic Leap, Inc. Centralized rendering
JP2021530024A (ja) * 2018-06-18 2021-11-04 マジック リープ, インコーポレイテッドMagic Leap,Inc. 一元化レンダリング
JP7411585B2 (ja) 2018-06-18 2024-01-11 マジック リープ, インコーポレイテッド 一元化レンダリング
JP7510986B2 (ja) 2018-06-18 2024-07-04 マジック リープ, インコーポレイテッド 一元化レンダリング

Also Published As

Publication number Publication date
JP4371351B2 (ja) 2009-11-25
US7064766B2 (en) 2006-06-20
US20030076329A1 (en) 2003-04-24
JP4904325B2 (ja) 2012-03-28
EP1304648A3 (en) 2006-02-22
EP1304648A2 (en) 2003-04-23
US20060262125A1 (en) 2006-11-23
EP1304648B1 (en) 2018-10-03
JP2008310835A (ja) 2008-12-25
US7477259B2 (en) 2009-01-13

Similar Documents

Publication Publication Date Title
JP4904325B2 (ja) イミーディエイトモードグラフィックスのためのインテリジェントキャッシングデータ構造
JP4371350B2 (ja) 多重レベル・グラフィックス処理システムおよび方法
US7808506B2 (en) Intelligent caching data structure for immediate mode graphics
US7443401B2 (en) Multiple-level graphics processing with animation interval generation
US6919891B2 (en) Generic parameterization for a scene graph
US7012606B2 (en) System and method for a unified composition engine in a graphics processing system
US7088374B2 (en) System and method for managing visual structure, timing, and animation in a graphics processing system
WO1995012865A1 (en) Object-oriented painter maker

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050518

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080328

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20080415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080415

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080826

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080929

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090129

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20090130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20090130

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090324

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090624

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: 20090731

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090803

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090828

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120911

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4371351

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130911

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees