説明

合成デスクトップウィンドウマネージャ

合成デスクトップモデルのオペレーティングシステムを使用するコンピュータ上にデスクトップを描画するための方法およびシステムを開示する。合成デスクトップウィンドウマネージャは、アプリケーションプログラムからコンテンツ情報を受け取ると、ウィンドウをバッファメモリに引き入れ将来参照できるようにし、高度なグラフィックスハードウェアおよびビジュアル効果を利用して、それらが描画されるコンテンツに基づいてウィンドウを描画する。ウィンドウは、さらに、仮想光源を含む環境変数に基づいて描画することができる。各ウィンドウのフレーム部分は、表示されるフレームの下にあるデスクトップのコンテンツに基づくすりガラスの外観を有するビットマップのピクセルシェーディングを行うことにより生成することができる。オペレーティングシステムが非レガシアプリケーションウィンドウと整合するように見えるようにレガシアプリケーションにより生成されるウィンドウを描き、描画することができるようなレガシサポートが提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータグラフィックスおよびコンピュータオペレーティングシステムに関する。より詳細には、本発明は、合成に対応していないレガシアプリケーションを内部でサポートし、1つのオペレーティングシステムに対し単一または複数のコンピュータ表示装置上のデスクトップの管理および描画を行う、3D合成デスクトップウィンドウマネージャ(3D compositing desktop window manager)を実現するものである。
【背景技術】
【0002】
コンピュータのオペレーティングシステムは、通常、グラフィカルユーザインターフェース(GUI)をエンドユーザに提供するシェルを有する。このシェルは、ユーザとオペレーティングシステムとの間の直接通信を実現するソフトウェアコンポーネントの1つまたはそれらの組み合わせからなる。グラフィカルユーザインターフェースは、通常、ユーザがオペレーティングシステムと対話するためのアイコン指向のおよび/またはメニュー駆動型の環境を提供し、多くの場合、デスクトップメタファ(desktop metaphor)に基づく。より具体的に述べると、グラフィカルユーザインターフェースは、机に向かって仕事をするという現実世界の活動をモデル化するように設計されている。デスクトップ環境は、通常、単一の表示装置のサーフェス全体を占有するか、または複数の表示装置にまたがることができ、アイコン、メニュー、カーソル、およびウィンドウなどの従属するユーザインターフェースオブジェクトのホストとなる。
【0003】
デスクトップ環境によりホストされる種類の描画オブジェクトの中には、ウィンドウとして知られる、視覚的に線引きされた画面領域がある。ウィンドウは、通常、固有のユーザ活動に対し専用となっており、サードパーティのソフトウェアアプリケーションまたはシステムアプリケーションのいずれかにより作成され管理される。各ウィンドウは、特定のアプリケーションプログラムの制御の下で仮想表示装置であるかのように動作し、そのコンテンツを独立して表示する。ウィンドウは、通常、サイズ変更、表示画面上での移動、および完全にまたは部分的に互いに重なるように積み重ねた配置を対話的に行うことができる。一部のウィンドウ操作環境では、ウィンドウは、アイコンへとサイズを最小化する、またはサイズを最大化して表示面全体を占有するなどの控えめな視覚的状態または動作状態をとることができる。デスクトップウィンドウのコレクション(collection)は、一般に、当業ではZオーダと呼ぶ、上から下への表示順序を割り当てられ、ウィンドウは画面上で同じ投影位置を占有するZオーダに関して自ウィンドウよりも下位の他のすべてのウィンドウの上に載る。単一の、選択されたウィンドウは、いつでも「フォーカス」を持ち、ユーザの入力を受け入れられる。ユーザは、マウスまたはその他のポインタデバイスを使ってウィンドウをクリックするか、またはシステム定義のキーボードショートカットまたはキーの組み合わせを使用することにより、入力フォーカスを他のウィンドウに導くことができる。これにより、ユーザは、実際の机の上に任意に積み重ねられる、または配置できる紙の書類およびその他の品目を管理する現実世界のシナリオに似た方法で複数のアプリケーションプログラム、ファイル、およびドキュメントを使って効率よく働くことができる。
【0004】
従来の多数のグラフィカルユーザインターフェースデスクトップ実装の欠点は、視覚的にリッチなコンテンツを表示する能力、またはグラフィック描画技術の機能強化を十分に引き出すための能力が限られていることである。このような機能強化には、物理的にモデル化された(照明、陰影、テクスチャ、透明、反射、および屈折)、2および3次元のコンテンツおよび滑らかな高性能アニメーションのリアルタイムの描画が含まれる。デスクトップ上でグラフィック描画機能強化を利用するために使用可能なサービスが限られることと対照的に、Windows(登録商標)ブランドのオペレーティングシステムおよび類似のオペレーティングシステムのシェルのグラフィカルユーザインターフェース内でウィンドウ表示または全画面表示されて動作する所定のアプリケーションプログラムでは視覚的にリッチなコンテンツの表示が可能である。このようなコンテンツを表示する種類のアプリケーションプログラムには、リアルタイムの3Dアニメーションおよび効果を使用するビデオゲーム、レイトレーサなどの高度なグラフィカルオーサリングツール、および高度な2Dおよび3Dパブリッシングアプリケーションがある。これらのプログラムのビジュアル出力は、アプリケーションウィンドウのコンテンツ領域に制約されるか、または他のウィンドウおよびデスクトップ自体を除いて全画面で描画されるため、アプリケーションプログラムのリッチなグラフィック出力はデスクトップ環境の表示に全く寄与しない。
【0005】
コンピュータのオペレーティングシステムは、アイコン、メニュー、カーソル、ウィンドウ、およびデスクトップなどのユーザインターフェースオブジェクトの管理、マウスおよびキーボードなどの入力装置からのイベントの調停(arbitrating)、およびソフトウェアアプリケーションへのユーザインターフェースサービスの提供に関与するソフトウェアレイヤを採用している。このソフトウェアレイヤは、デスクトップウィンドウマネージャ(DWM)と呼ばれる。デスクトップウィンドウマネージャ(DWM)の描画ロジック、入力イベントのルーティング、およびアプリケーションプログラミングインターフェース(API)は全体として、ユーザインターフェースポリシーを具体化し、同様に、オペレーティングシステムの総合的なユーザエクスペリエンス(experience)を規定する。現在までリッチなビジュアルデスクトップがなかった主な理由は、DWMがデスクトップを管理し描画する方法にあった。従来のDWMの実装では、デスクトップを描画するのに「無効化(invalidation)」モデルを採用しているが、それは主にビデオおよびシステムメモリのリソースならびにCPUおよびGPUの処理能力を節約して使う必要性から発達したものである。
【0006】
無効化モデルでは、ウィンドウのサイズ変更または移動が行われる、またはアプリケーション側でウィンドウの全部または一部を再描画したい場合、表示の影響を受ける部分が「無効化」される。DWMでは、ウィンドウのサイズ変更または移動の影響を受ける領域を内部的に無効化するが、自ウィンドウの全部または一部を再描画しようと試みるアプリケーションは、オペレーティングシステムに対し、APIを介して、自ウィンドウの指定領域を無効化するよう指令する。いずれの場合も、DWMが画面上の更新が実際に必要になっている要求領域の一部(subset)を決定することにより無効化要求を処理する。DWMは、通常、ターゲットウィンドウに関連付けられている交差領域、ターゲットの上にかぶさる他のウィンドウ、影響を受けるウィンドウに関連付けられているクリッピング領域、および表示の目に見える境界の保持されているリストを調べることによりこれを達成する。DWMは、その後、それぞれの影響を受けるアプリケーションに、禁止されている上から下への順序で更新の必要のある領域を指定する描画メッセージを送る。アプリケーションは、その指定領域を受け入れるか、または無視するかを選択することができる。ローカルの更新領域の外でアプリケーションにより実行される描画は、グラフィカルデバイスインターフェース(GDI)などの低レベルのグラフィック描画エンジンにより提供されるサービスを使用してDWMによって自動的にクリッピングされる。
【0007】
無効化メッセージングモデルの利点は、表示メモリを節約できることにある。つまり、無効化ベースのDWMは、現在表示されているコンテンツの下にあるかもしれないものを「覚えておく」ことをせずに、単一のデスクトップの描画に十分なバッファメモリを維持するだけでよい。しかし、デスクトップ上のウィンドウは上から下への順序で描画されるため、GDIを介した非矩形ウィンドウおよびリッチな2Dアニメーションなどの機能は、表示サーフェスの複雑な領域および/または広範囲に及ぶサンプリングを伴うCPUの大規模な計算を必要とするが(したがって、グラフィックスハードウェアベースの高速化の可能性が制限される)、透明化、陰影、3Dグラフィックス、および高度な照明効果などの他の機能は、極めて困難であり、大量の資源を消費する。
【0008】
例えば、従来USERとして知られているMicrosoft Windows(登録商標)XPウィンドウマネージャは、Wiondows(登録商標)ブランドオペレーティングシステムの出現以来、グラフィカルユーザインターフェースサブシステム(現在ではWin32と呼ばれている)の主要なコンポーネントとして役目を果たしてきた。USERでは、2次元グラフィックスデバイスインターフェース(DGI)グラフィック描画エンジンを使用して、表示装置に描画を行う。GDIは、Win32の他の主要サブコンポーネントである、オリジナルのWindows(登録商標)ブランドのオペレーティングシステムの中に存在する描画技術に基づいている。USERは、GDIクリッピング領域および2D描画プリミティブと連携し、無効化メッセージングモデルを使用してそれぞれのウィンドウを表示装置に描画する。デスクトップを描画する際のUSERの主要な動作として、デスクトップ描画の無効化モデルにより、ビジュアル更新が必要な表示領域を識別すること、ならびに、描画する必要があることおよび描画する位置をアプリケーションに通知することがある。
【0009】
デスクトップの描画で次に発展したのは、デスクトップ合成(desktop compositing)と呼ばれる下から上への描画手法である。合成DWM(compositing DWM)、つまりCDWMでは、デスクトップは下位レイヤから上位レイヤへと描画される。つまり、デスクトップの背景が最初に描画され、その後、デスクトップ上に直接配置されているアイコン、フォルダ、およびコンテンツが続き、そして、1レベル上のフォルダ、というように描画されて行く。デスクトップを下から上に描画することにより、繰り返される各レイヤは、そのコンテンツを下にあるレイヤに基づかせることができる。しかし、デスクトップ合成は、CDWMがデスクトップに描画される各アイテムのコピーをメモリ内に保持するためメモリを大量に使用する処理である。最近の市場の変化と製造技術により高度なビデオハードウェアおよびコンピュータメモリがかなり手頃な価格になる前には、映画向けの特殊効果の準備のためなど、合成エンジンを実装することができるのは商業用の高価なハイエンドコンピューティングシステムだけであった。
【0010】
ミッドエンドおよびローエンドのコンピュータのビデオハードウェアの発展は、普及しているオペレーティングシステムに用意されているグラフィカルサービスによって主に促進されてきた。しかし、普及しているオペレーティングシステムで利用できるグラフィカルサービスは、旧式のアプリケーションソフトウェアおよび手の届く値段のビデオハードウェアの限られた機能との互換性を維持する必要性を含むさまざまな理由からあまり高度なものではなかった。しかし、最近、リアルタイム3Dコンピュータゲームは、小売りのビデオハードウェア発展の主要な市場推進役としてオペレーティングシステムを追い越し、短期間のうちに、並外れた高度な水準に達した。リアルタイムのハードウェアベースの3D高速化機能は、現在では、消費者にとって妥当な価格で入手可能になっている。したがって、かつては非常に高度なものと考えられていた、高速なテクスチャおよび照明アルゴリズム、3D変換、およびGPUの直接プログラミング機能などのグラフィックスハードウェア機能が容易に利用できる。現在、一般的に、ゲームソフトウェアおよび非常に専門的なグラフィックスアプリケーションのみがこのような機能を積極的に活用しており、またそうするためには、レガシWin32ウィンドウマネージャ(USER)およびGDIをバイパスする必要がある。
【0011】
合成デスクトップモデルを実装する際のもう1つの障害は、無効化モデルDWMとともに使用するように書かれているレガシアプリケーションが合成環境では正常に機能しないということである。これは、レガシアプリケーションのコアの描画ロジックがオペレーティングシステムの無効化モデルDWM APIに基づいているためである。つまり、レガシアプリケーションは、ユーザの対話操作または内部状態の変化に直接応答してウィンドウのコンテンツを描画するのではなく、オペレーティングシステムまたは自身の無効化要求により生成される描画メッセージを受け取ったときのみ描画するものとなっている。最も困難な改善法は、合成DWMがアプリケーションの代わりにレガシGUIプラットフォームを代理とする手段を考案することからなる。これよりも単純な代替手段は、アプリケーションを合成デスクトップ環境から除外する(当分野で「サンドボクシング(sand boxing)」として知られている方法)、または単にレガシアプリケーションの互換性を完全に放棄してしまうという方法からなる。
【発明の開示】
【発明が解決しようとする課題】
【0012】
したがって、合成モデルを使用してデスクトップを描画するリッチなフル機能のオペレーティングシステムを提供し、さらに高度なグラフィックスハードウェアを活用できるデスクトップウィンドウマネージャを提供することは、当技術分野の進歩となるであろう。高度なテクスチャ、照明、および3D変換を使用し、無効化モデルデスクトップマネージャで使用するように元々書かれているレガシアプリケーションをまだサポートするデスクトップを提供することは、当技術分野においてさらなる進歩となるであろう。
【課題を解決するための手段】
【0013】
以下では、本発明のいくつかの態様の基本的な理解を与えるために、本発明の概要を簡単に述べる。この概要は、本発明の広範な全体像ではない。この要約は、本発明の鍵となる要素やクリティカルな要素を特定したり、本発明の範囲を線引きすることを意図していない。以下の概要は、後述の詳細な説明の前置きとして、本発明のいくつかの概念を簡単な形態で述べるにすぎない。
【0014】
上述の従来技術における制限を克服するために、また本明細書を読み理解した後に明白になるであろう他の制限を克服するために、本発明は、高度なグラフィックスおよび描画機能を備える合成デスクトップを対象とする。
【0015】
本発明の第1の例示する態様では、合成デスクトップウィンドウマネージャ(CDWM)がウィンドウのコンテンツを含むアプリケーション描画メモリサーフェスを管理するとき、CDWMがこの事前に描画されたサーフェスを使用して、合成された表示上にコンテンツを他のウィンドウのコンテンツとともに表示するオペレーティングシステムで、デスクトップウィンドウを描画するためのソフトウェアおよびコンピュータによって実施される方法を提供する。特に、CDWMは、ウィンドウ用にリダイレクトされた表示サーフェス、またはその一部を、2Dまたは3Dメッシュプリミティブに適用されるテクスチャとして使用し、これを順に、描画のために低レベルのグラフィックスエンジンに転送する。この説明は、ウィンドウのアプリケーション生成コンテンツ部分をバッキング(backing)する3Dウィンドウフレームの描画を含んでいる。合成されたウィンドウフレームは、別々のサイズ変更可能な3Dメッシュプリミティブにマッピングされる別々のテクスチャからなり、このプリミティブはCDWMがすでにグラフィックス表示装置にロードしたかもしれないピクセルシェーダルーチンへのオプションパラメータとともにグラフィックス描画エンジンに転送され、ドロップシャドウ(drop shadow)によりバッキングされるすりガラス板の外観を作り出す。本発明のさらに例示する態様では、無効化モデルのデスクトップウィンドウマネージャとともに使用するように設計されているアプリケーションのレガシサポートを提供する。
【0016】
添付の図面と合わせて、以下の説明を参照すると、本発明およびその利点をより完全な理解を得ることができ、また図面では類似の参照番号は類似の機能を示している。
【発明を実施するための最良の形態】
【0017】
さまざまな実施形態の以下の説明では、これに関して一部をなし、本発明を実施できるさまざまな実施形態を図で示す付属の図面を参照する。他の実施形態を利用し、本発明の範囲および精神から逸脱することなく構造的および機能的な修正を加えることができることは当然理解されよう。
【0018】
本発明は、好ましい描画モデルとしてデスクトップ合成を使用するデスクトップウィンドウマネージャ(DWM)を提供する。本発明のデスクトップウィンドウマネージャは、本明細書では、合成デスクトップウィンドウマネージャ(CDWM)と呼ぶ。CDWMは、合成サブシステムと合わせて、統一合成エンジン(UCE)(Unified Compositing Engine)と呼ばれ、3Dグラフィックスおよびアニメーション、シャドウ、透明化、高度な照明手法、およびデスクトップ上のその他のリッチなビジュアル機能を備える。本明細書で本質的に使用される合成描画モデルは、描画における無効化ステップをなくし、描画およびその他の通知メッセージの送信の必要性を最小化するかなくすが、それは、システムがそれぞれのウィンドウを必要に応じ描画するのに十分な状態情報を保有しているからである。
【0019】
例示されている動作環境
図1は、本発明を実施するのに適しているコンピューティングシステム環境100の一例を示す図である。コンピューティングシステム環境100は、適当なコンピューティング環境の一例にすぎず、本発明の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境100は、例示的なオペレーティング環境100に示されている1つのコンポーネントまたはその組み合わせに関係する何らかの依存または要求のいずれも有するものとして解釈すべきでない。
【0020】
本発明は、他の数多くの汎用または専用のコンピューティングシステム環境または構成で使用できる。本発明での使用に適した周知のコンピューティングシステム、環境、および/または構成の例として、それだけに限定はされないがパーソナルコンピュータ、サーバコンピュータ、パーソナルデジタルアシスタント(PDA)、タブレットPC、またはラップトップPCなどの携帯型およびハンドヘルド型の装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散コンピューティング環境、などが挙げられる。
【0021】
本発明は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理装置によりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体に配置することができる。
【0022】
図1に関して、本発明を実施する例示的なシステムは、コンピュータ110の形態の汎用コンピューティング装置を備える。コンピュータ110が備えるコンポーネントとしては、それだけに限定はされないが、処理装置120、システムメモリ130、およびシステムメモリを備えるさまざまなシステムコンポーネントを処理装置120に接続するシステムバス121などが挙げられる。システムバス121には、メモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む数種類のバス構造のいずれかであってよい。例えば、限定するものではないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、Advanced Graphics Port(AGP)バス、およびメザニン(Mezzanine)バスとしても知られているPeripheral Component Interconnect(PCI)バスが挙げられる。
【0023】
コンピュータ110は通常、さまざまなコンピュータ読み取り可能な媒体を含む。コンピュータ読み取り可能な媒体は、コンピュータ110によってアクセスすることができる媒体であればどのような媒体でも使用可能であり、揮発性および不揮発性媒体、取り外し可能および固定の媒体を含む。例えば、コンピュータ読み取り可能な媒体は、それだけに限定はされないがコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する任意の方法または技術で実装される揮発性および不揮発性、取り外し可能および固定の媒体を含む。コンピュータ記憶媒体としては、それだけに限定はされないがRAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、または所望の情報を格納するために使用することができコンピュータ110によりアクセスできるその他の媒体が挙げられる。通信媒体は、典型的には、搬送波もしくはその他の搬送メカニズムなどの変調されたデータ信号中のコンピュータ読み取り可能な命令、データ構造体、プログラムモジュール、または、その他のデータを具現化するものであり、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号中に情報を符号化する形でその特性の1つまたは複数を設定または変化させた信号を意味する。
例えば、通信媒体としては、それだけに限定はされないが有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体が挙げられる。上記のいずれの組み合わせもコンピュータ読み取り可能な媒体の範囲に含めるべきである。
【0024】
システムメモリ130は、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ110内の構成要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム133(BIOS)は、通常、ROM 131に格納される。通常、RAM 132は、処理装置120に直接アクセス可能な、かつ/または処理装置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に対しては、ここで、異なる番号を割り当てて、最低でも、それが異なるコピーであることを示している。ユーザは、キーボード162、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス161などの入力装置を介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力装置(図示せず)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力装置やその他の入力装置は、システムバスに接続されているユーザ入力インターフェース160を介して処理装置120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造により接続することもできる。モニタ184またはその他の種類の表示装置も、ビデオインターフェース183などのインターフェースを介してシステムバス121に接続される。コンピュータ110は、ユーザがペン入力装置186を使用して入力できる、モニタ184と併用するデジタイザ185も備えることができる。モニタのほかに、コンピュータは、スピーカ189およびプリンタ188などの他の周辺出力装置も備えることができ、これらは出力周辺インターフェース187を介して接続することができる。
【0027】
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、通常は、コンピュータ110に関係する上述の構成要素の多くまたはすべてを含むが、メモリ記憶装置181だけが図1に例示されている。図1に示す論理接続は、ローカルエリアネットワーク(LAN)171とワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【0028】
LANネットワーキング環境で使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は、通常、モデム172、またはインターネットなどのWAN 173上で通信を確立するためのその他の手段を備える。モデム172は、内蔵でも外付けでもよいが、ユーザ入力インターフェース160またはその他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク接続環境では、コンピュータ110またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶装置に格納することができる。限定ではなく例として、図1には、リモートアプリケーションプログラム182がメモリデバイス181にあるものとして例示されている。図に示されているネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段が使用可能であることは理解されるであろう。
【0029】
例示されている実施形態
本発明では、合成デスクトップウィンドウマネージャ(CDWM)を使用し、合成デスクトップモデル、つまり、下から上への描画方法を使用してデスクトップ表示を描画し保持することができる。CDWMは、将来参照できるようにバッファメモリ領域内にコンテンツを保持することができる。CDWMは、デスクトップを下から上へ、デスクトップの背景から始めて重なり合うウィンドウを経て、逆Zオーダで描画することによりデスクトップを合成する。デスクトップを構成している間、CDWMは、描画されているウィンドウの下にあるコンテンツに一部基づいて、また他の環境要因(例えば、光源、反射特性)にも一部基づいて、各ウィンドウを描画することができる。例えば、CDWMは、ARGB形式のテクスチャのアルファチャネルを使用して、ウィンドウに透明性を付与し、仮想光源に基づいてウィンドウのコンテンツの一部(例えば、フレーム)を選択的に強調することができる。
【0030】
CDWMは、オペレーティングシステム134、144の一部として存在するか、またはオペレーティングシステムとは独立して、例えば他のプログラムモジュール136、146に存在することができる。さらに、CDWMは、本明細書では統一合成エンジン(UCE)と呼ばれる、以下および、すべての目的に関して全体が参照により本明細書に組み込まれる、2003年10月23日に出願された「System and Method for a Unified Composition Engine in a Graphics Processing System」という名称の同時係属特許出願番号(法定代理人整理番号50037.201US01)において詳しく説明されている、低レベルのグラフィックス合成サブシステムに頼ることができる。例示されている一実施形態では、UCEは、ワシントン州レッドモンドのマイクロソフト社のDirect3D(登録商標)およびDirectX(登録商標)技術に基づくか、または使用する。他の実施形態では、カリフォルニア州マウンテンビューのシリコン グラフィクス社によるOpenGL(登録商標)グラフィックスエンジンに基づくX Windowプラットフォームのバリエーションなどの他のグラフィックス合成サブシステムを使用することができる。UCEは、3Dグラフィックスおよびアニメーション、透明性、シャドウ、照明効果、バンプマッピング(bump mapping)、環境マッピング、およびデスクトップ上のその他のリッチなビジュアル機能を可能にする。
【0031】
図1Bは、デスクトップ合成プラットフォームの例示的実施形態によるコンポーネントアーキテクチャを示している。合成デスクトップウィンドウマネージャ(CDWM)190は、合成ウェア(composition−ware)アプリケーションソフトウェア191が、CDWMウィンドウならびにコンテンツ作成および管理サービスをそれを通じて得るためのアプリケーションプログラミングインターフェース190a、レガシウィンドウ操作グラフィックスサブシステム192が、個々のウィンドウのリダイレクトされたグラフィックス出力に影響を及ぼす変更に関する更新通知をそれを通じて送信するためのサブシステムプログラミングインターフェース190b(ウィンドウグラフィック出力のリダイレクトについては、以下で詳述する)、およびウィンドウおよびその関連するコンテンツなどのデスクトップUIオブジェクトのZオーダリポジトリ(Z−ordered repository)を保持するUIオブジェクトマネージャ190cを含むことができる。UIオブジェクトマネージャは、テーママネージャ193と通信し、リソース、オブジェクト挙動属性(object behavioral attributes)、およびアクティブなデスクトップテーマに関連付けられているレンダリングメトリック(rendering metric)を取得することができる。
【0032】
レガシグラフィカルユーザインターフェースサブシステム192は、レガシウィンドウマネージャ192aおよびレガシグラフィックスデバイスインターフェース192bを含むことができる。レガシウィンドウマネージャ192aは、CDWMが出現する以前に開発されたソフトウェアアプリケーション用の無効化モデルウィンドウ操作(windowing)およびデスクトップサービスを提供する。レガシグラフィックスデバイスインターフェース192bは、2Dグラフィックスサービスをレガシアプリケーションだけでなくレガシウィンドウマネージャにも提供する。デスクトップを描画するための無効化モデルに基づくレガシグラフィックスデバイスインターフェースは、3D、ハードウェア高速化描画プリミティブ、および変換のサポートを欠く場合があり、ビットマップコピーおよび転送オペレーションのピクセル毎のアルファチャネルの透明性(transparency)をネイティブ機能としてサポートしないかもしれない。レガシウィンドウマネージャ192aおよびグラフィカルデバイスインターフェース192bは共に、無効化モデルを使用するお気に入りのまたは重要なソフトウェアアプリケーションを実行する機能を犠牲にせずに、オペレーティングシステムのアップグレードを望むユーザの所有コストを低減するために役目を果たし続ける。エンドユーザに対し目立ったペナルティがほとんどまたは全く生じない方法で、レガシアプリケーションウィンドウと合成ウェアアプリケーションウィンドウとが継ぎ目なく並ぶ統合を実現するために、合成プロセスへのレガシグラフィカルユーザインターフェースサブシステム192のアクティブな関与がある。実際、レガシアプリケーションの認知されているプラットフォーム環境は、合成されたデスクトップに対する堅牢性(robustness)を損なわないようにするために、変化しないのが好ましいが、それでもレガシウィンドウがデスクトップに描画される基本的な方法は、基本的に変更されるであろう。本発明では、本明細書でウィンドウグラフィック出力のリダイレクトとして説明される機能を付加することによりどのようにこれが実現されるか説明する。
【0033】
統一合成エンジン(UCE)194は、プログラミングインターフェース194aを介してCDWMから発行された描画命令および合体した(coalesce)リソースを使用可能にする(service)ことができる。広い意味で、CDWMに関するUCEの役割は、レガシウィンドウマネージャ192aに関するレガシグラフィックスデバイスインターフェース192bの役割に似ている。UCEプログラミングインターフェース194aは、CDWMを提供し、そして最終的にアプリケーションが、抽象インターフェースをさまざまなグラフィックスサービスに提供する。これらのUCEサービスには、リソース管理、複数表示シナリオからのカプセル化、およびリモートデスクトップサポートがある。
【0034】
CDWMの書き込み動作と描画動作間のグラフィックスリソースの競合は、内部のリソースマネージャ194bにより調停することができる。リソース更新および描画サービスの要求は、プログラミングインターフェースサブコンポーネント194aによりUCEの要求キュー194cに置かれる。これらの要求は、システムにインストールされている表示装置のリフレッシュレートと一致する間隔で描画モジュール194dにより非同期で処理することができる。したがって、UCE194の描画モジュール194dは、CDWM要求をキューから取り出し、必要に応じてリソースマネージャ194bに格納されているリソースにアクセスして操作し、3Dグラフィックスインターフェース195への表示画面固有の描画命令を組み立てて送出することができる。
【0035】
デスクトップを複数の表示画面に描画するには、異種表示装置間の、リフレッシュ速度、ピクセル形式サポート、およびデバイス座標マッピングの相違の抽象化を必要とする。UCEでは、この抽象化を実現することができる。
【0036】
UCEは、さらに、リモートデスクトップ構成においてネットワーク接続でグラフィックスデータを送出する責務も有する。一方の特定のシステムのデスクトップを他のシステムのデスクトップから効率よく離すために、リソース競合を回避し、性能の最適化を成立させ、セキュリティを堅牢なものとしなければならない。これらの責務は、UCEにもありうる。
【0037】
3Dグラフィックスインターフェース195は、Direct3D(登録商標)、OpenGL(登録商標)などの低レベルの直接モード(ステートレス)グラフィックスサービスを備えることができる。3Dグラフィックスインターフェースの目的は、特定のグラフィックスハードウェア構成の機能にわたる抽象インターフェースを実現することである。3Dグラフィックスインターフェースは、単一の表示装置のために働き、UCEは、複数のデバイスドライバ196を介してマルチディスプレイシステムの複数のグラフィックス出力装置197の間に、CDWMの描画命令を解析し分配することができる。
【0038】
図1Bに示されているコンポーネントアーキテクチャは、例示的な実施形態のアーキテクチャであることに留意されたい。図は、本発明が含むことができる機能を図示することを意図している。これらの機能は、プラットフォームの機能および所望の機能セットに従って、図に表されているものよりも少ないまたはより多い数のソフトウェアコンポーネントの間に分配することができる。例えば、テーマ管理を欠くシステムでは、別のテーママネージャからではなく、おそらくCDWM自体により管理される静的リソースとして、システムからすべてのストックリソースを派生させる場合もある。差し込み可能な(plugable)ウィンドウマネージャを許容するプラットフォームでは、CDWM内のアプリケーションプログラミングインターフェース190aを差し込み可能ウィンドウマネージャインターフェース(Plugable Window Manager Interface)で置き換えて、合成UIオブジェクトおよびリソース管理の詳細を抽象化することができる。他の考えられる変更形態では、レガシアプリケーションとの互換性が必要なければ、サブシステムプログラミングインターフェース190bをなくしてもよい。
図1Bに示されているUCE 194のサブコンポーネントは、別々のプロセスに分解するか、CDWM自体の中に折り込むか、または3Dグラフィックスインターフェースに統合することができる。したがって、幅広い特定のコンポーネント設計が可能であり、それぞれが本発明を含む機能全体または機能の一部を実行することができる。
【0039】
図2は、本発明の例示的態様によるデスクトップ合成を実行する一般的な方法を例示している。ステップ201から205は、合成デスクトップウィンドウマネージャ(CDWM)APIを使用してウィンドウおよびウィンドウのコンテンツを作成し管理する合成を意識したアプリケーションの相互作用を説明している。ステップ207および209は、レガシウィンドウコンテンツを合成するための従来の無効化モデルウィンドウマネージャアプリケーションとCDWM間の相互作用を示している。
【0040】
ステップ201で、合成デスクトップマネージャ(CDWM)は、合成を意識したアプリケーションから、(1)合成ウィンドウを作成し、(2)コンテンツオブジェクトを付ける要求を受け取る。本発明は、ウィンドウ毎に単一のコンテンツオブジェクトに限られるわけではなく、アプリケーション側で、CDWM APIを介してウィンドウを動的に作成し、ウィンドウに任意の個数のコンテンツオブジェクトを付ける(それだけでなく分離および破壊する)ことができる。コンテンツオブジェクトは、追加のテクスチャ(ライトマップ(light map)、鏡面マップ(specular map)、バンプ/通常マップ(bump/normal map)など)、ライト(lights)、およびピクセルシェーダ(pixel shader)などのオプションのアクセサリリソースとともに、アプリケーション定義メッシュまたはシステム定義メッシュにマッピングされた拡散テクスチャ(diffuse texture)として使用される指定されたサイズおよびピクセル形式のラスタサーフェスからなる。拡散コンテンツテクスチャのピクセル形式は、システムにインストールされているビデオハードウェアでサポートされている形式であればどのようなものでもよいが、今の説明を目的として、32ビットARGBとすることができる。この形式を要求する場合、アプリケーションは、コンテンツピクセルの透明レベルを変えるのにアルファ(A)チャネルを使用することができ、したがって最終の描画でソースピクセルとともに調節するデスクトップ背景情報の量の微調整を行うことができることを暗黙のうちに知ることができる。ステップ203で、CDWMは、CDWM実装コンテンツオブジェクトを付けるウィンドウに対する状態ブロック(state block)を割り当てる。コンテンツオブジェクトは、要求されたリソースを割り当てるか、またはアプリケーションにより転送されたリソースを添付し、UCEに対しこれらのリソースを整列させて(marshal)、UCE更新要求後直ちにアクセスできるようにする。ステップ205で、アプリケーションは、ウィンドウまたはウィンドウのコンテンツに対する余計な変更についてCDWMに通知する。これらの変更は、いずれかのウィンドウまたはコンテンツの状態に影響を及ぼす可能性があるが、簡単のため、例示では、3つの共通更新要求、つまりコンテンツサイズ、ウィンドウ位置またはスケール、あるいはコンテンツの拡散テクスチャのピクセルに対する変更を示している。
【0041】
レガシウィンドウを合成するプロセスは、デスクトップ合成の初期化から始まり、CDWM 190は、それぞれのレガシウィンドウのグラフィック出力を一時メモリロケーションにリダイレクトする要求をレガシウィンドウ操作およびグラフィックサブシステム192に送る(ステップ207)。ステップ207は、より一般的には、レガシウィンドウおよびグラフィックサブシステムを「合成モード」にあるものとして説明することができるが、それぞれの個別ウィンドウの描画は、別のメモリバッファにリダイレクトされる。例示されている一実施形態では、レガシグラフィカルユーザインターフェースサブシステム192は、ウィンドウの描画にかかわるグラフィックス命令の出力をウィンドウと関連付けられたビットマップメモリサーフェスにリダイレクトする。しかし、本発明は、ネイティブの描画命令および関連するパラメータを保持する機能、ならびにターゲットの表示装置に対する次のビデオフレームを合成するプロセスの実行中にUCEでそれらの命令を実行することも包含している。これらのリダイレクトバッファ(サーフェスまたは描画命令ブロック)は、CDWMまたはレガシウィンドウマネージャ192aのいずれかにより管理することができるが、この例示を目的として、サーフェスリソースはCDWMで集中管理される。それぞれのリダイレクトバッファは、ウィンドウに対する拡散コンテンツテクスチャリソースを構成するか、またはそれを生成するために使用される。レガシウィンドウマネージャ192aは、CDWMウィンドウおよびコンテンツ作成APIを呼び出す必要はなく、通知用のレガシサブシステム−CDWM通信チャネルは、アプリケーションインターフェースのチャネルと異なり、CDWMは、既存のレガシウィンドウプロパティから合成ウィンドウ属性(フレームおよび枠のスタイル、キャプションなど)および状態(非表示/表示、最小化/最大化など)を導出する。ステップ209で、レガシウィンドウマネージャ192aは、ビジュアルな更新を必要とする可能性のあるリダイレクトされたウィンドウコンテンツテクスチャに影響を及ぼす何らかの変更についてCDWM 190に通知する。
【0042】
ステップ211、219、および223で、CDWM 190は、サイズ、位置/スケール、およびピクセルレベルテクスチャの更新要求のうちから判別し、それに応じて動作する。サイズ更新(ステップ211)では、CDWMはまず、フレームがターゲットウィンドウに関連付けられているかどうかを判別する(ステップ213)。フレームがウィンドウに関連付けられている場合(ステップ215)、CDWMは、合成を意識したアプリケーションにより明示的に与えられた2次元または3次元のエクステント(extent)、またはレガシおよびCDWMウィンドウのメトリクス(metrics)とリダイレクトされたレガシサーフェスの更新された次元の組み合わせに基づいてフレームプリミティブの適切なサイズおよび向きを決定する。フレームサイズが決定されると、CDWMは、フレームメッシュ内の頂点の位置情報に適切な変更を加え、頂点データバッファをUCEに転送する。UCEは、非同期処理を行うため、メッシュ更新ディレクティブおよび新しい頂点情報をキューに入れる。ウィンドウにフレームがない場合、ステップ215をバイパスすることができる。フレーム付きまたはフレームなしのウィンドウの場合、コンテンツ領域に影響を及ぼすサイズの変更は、CDWMが、コンテンツメッシュのサイズを変更し、UCEへの適切なメッシュ更新要求およびデータをキューに入れることを引き起こす(ステップ217)。
【0043】
位置(回転を含む)またはスケールの更新(ステップ219)では、CDWMは、非同期処理のために、新しい変換パラメータを決定し、UCEへの変換リソース更新要求をデータとともにキューに入れる(ステップ221)。リソースは、最低でも、4×4変換行列からなるが、フィルタ処理された変換をサポートするため追加データを含むこともできる。
【0044】
ステップ223で、CDWMは、拡散コンテンツテクスチャのピクセルデータへの変更を伴う更新要求を受け取る、つまり、アプリケーションはすでにそのウィンドウ内でコンテンツを更新している。ステップ225で、CDWMは、非同期処理のため、UCEへの新しいピクセル情報をキューに入れることによりこの要求を使用可能にする(service)。
【0045】
追加の更新要求は、図2に示されているもののほかにもサポートできることは当業者であれば理解されるであろう。例えば、ウィンドウのアイコンまたはキャプションのテキストに対する変更はまた、それぞれウィンドウに関連付けられたCDWM管理されたアイコンまたはキャプションコンテンツオブジェクトの再描画を必要とする場合がある。ウィンドウ入力フォーカスは、フレームの外観に反映され、したがって、レガシウィンドウの場合、レガシウィンドウマネージャが、入力フォーカス変更更新を、フレームを再描画し場合によっては他のコンテンツもそれに応じて再描画するCDWMに送ることができる。
【0046】
ステップ227で、UCEはCDWMから入ってくる合成およびリソース更新を処理し、デスクトップの合成に関与するそれぞれのアクティブなビデオグラフィックスアダプタのビデオリフレッシュレートと同期する間隔で、表示サイズのバッキングバッファへデスクトップ(またはマルチディスプレイ構成における該当する部分)を再描画する。これは、3Dグラフィックスエンジン(Microsoft Direct3D(登録商標)など)により提供される直接モードの描画サービスを使用して実行され、これはデスクトップを順に1次(primary)表示サーフェスに転送する。
【0047】
ウィンドウを3Dで描画するために、CDWMは、さまざまなコンポーネントを使用してウィンドウ構成を定義し、基本コンテンツオブジェクトおよび1つまたは複数の子コンテンツオブジェクトを含むようにできる。基本コンテンツオブジェクトは、ウィンドウのフレーム、つまり枠を定義し、基本ジオメトリ、基本エクステント、基本マテリアルプロパティ、および基本コンテンツマージンからなる。基本コンテンツオブジェクトおよび子コンテンツオブジェクトは、それぞれシステムにより完全に定義し管理することができ、またカスタムコンテンツ要素の場合には、アプリケーションにより管理することができる。コンテンツオブジェクトについて、以下で詳述する。
【0048】
図3は、本発明の例示的態様によるアプリケーションウィンドウを例示している。
アプリケーションウィンドウ301は、さまざまな領域およびコンポーネントを含むことができる。ウィンドウ301のフレームまたは基本コンテンツ303は、ボタン305(例えば、ウィンドウを元のサイズに戻す、最大化する、最小化する、閉じるなどのために使用される)、指示アイコン307、スクロールバー309、メニューバー311、およびウィンドウキャプションテキスト313を含む子コンテンツをホストすることができる。1次コンテンツオブジェクト領域315は、レガシウィンドウおよびグラフィカルユーザインターフェースサブシステムから得られるリダイレクトバッファから派生させるか、または合成を意識した自アプリケーションにより作成し、標準の基本コンテンツに添付し、描画することができる。当業者であれば、図3が、基本的なウィンドウ要素を単に例示しているにすぎないこと、また追加もしくは異なるウィンドウ要素がさらに、またはそれとは別に使用できることは理解されよう。さらに、それとは別にウィンドウフレーム要素をアプリケーション側で用意し、例えば、アプリケーションプログラミングと異なるルックアンドフィールを与えることができる。一例として、アプリケーションプログラム側でカスタム子コンテンツオブジェクトとしてスクロールバー要素を備え、そのアプリケーションプログラムに特有の外観と挙動を表すようにするものがある。さらに、アプリケーションは、CDWM APIを使用してストックフレーム要素のうちの1つまたは複数を取り除くか、または再配置することを選択することができる。アプリケーションは、単一の1次コンテンツ領域に限られる必要はないが、これは従来技術では広く見られる制限である。
【0049】
CDWMは、単一ウィンドウに関連付けられた複数のアプリケーション作成および描画コンテンツ領域をサポートすることができる。アプリケーションに固有のユーザエクスペリエンスを提供する機能を備えるために、本発明の1つまたは複数の実施形態では、CDWMは、ウィンドウを描画する仕方に、柔軟性を与えるものとなっている。つまり、CDWMでは、各アプリケーションを単一の矩形のクライアントコンテンツ領域に制限するのではなく、アプリケーション側でそれぞれ任意の形状を持つ複数のカスタムコンテンツオブジェクトを定義できるようにすることで、アプリケーションがウィンドウの既定の構成を変更することを可能とする。
【0050】
したがって、各CDWMウィンドウは、基本コンテンツオブジェクト(つまり、フレーム)および1つまたは複数の子コンテンツオブジェクトのコレクションで構成することができる。各コンテンツオブジェクトは、唯一の一組のコンテンツ属性により定義することができ、またオプションによりキーボードおよびマウスイベントを受け取るように構成することができる。CDWMは、アプリケーションで定義されたコンテンツに局所的な3D座標に関してマウスのヒットテスト点をマッピングし、マウスイベント通知をアプリケーションに送る。コンテンツオブジェクトは、システムにより完全に管理できるか、またはカスタムコンテンツ要素の場合には、アプリケーションにより管理することができる。システム管理されたコンテンツオブジェクトの例としては、アプリケーション指示アイコン、フレームボタン(例えば、最小化、元に戻す、閉じる)、キャプションテキスト、ならびに所定のメニューバーおよびスクロールバーがある。アプリケーション管理されたコンテンツオブジェクトは、アプリケーションが1次ビジュアル出力を描画するコンテンツオブジェクト、例えば、ワードプロセッサによるテキスト、表計算アプリケーションによる数値グリッド、写真編集アプリケーションによる画像がある。
【0051】
コンテンツテクスチャは、システムにより管理されるビットマップであるか、またはカスタムコンテンツの場合では、アプリケーションである。コンテンツテクスチャは、1回の反復でコンテンツジオメトリに直線的にマッピングすることができる。アスペクト比は、コンテンツジオメトリにより決定することができ、テクスチャ座標はコンテンツジオメトリで公開することができる。コンテンツの倍率は、コンテンツテクスチャのジオメトリへのマッピングに影響を及ぼす拡大縮小変換により制御することができる。CDWMは、システムに備えられているメニューオプション、スライダコントロール、および/またはマウスとキーボードの組み合わせなど、ユーザがそれにより拡大縮小係数(zoom factor)を調整することができる既定の対話的メカニズムを備えることができる。
【0052】
各再描画の前に、システムは、アプリケーション(またはストックコンテンツオブジェクトの場合にはシステム)の裁量により、拡散テクスチャがピクセル毎のアルファをサポートする形式であるコンテンツサーフェスをゼロアルファ(zero alpha)に初期化することができる。したがって、下にある基本コンテンツオブジェクトは、コンテンツサーフェスの描画されていない領域に表示することができる。これは、アプリケーションが描画する前にコンテンツサーフェスを消去する必要がないため、プログラミングモデルおよびユーザエクスペリエンスの両方を強化し、ユーザはウィンドウ内のフリッカーおよび陳腐なまたは描画されていない領域を免れる。
【0053】
いくつかの実施形態では、所定のコンテンツオブジェクト、特にアプリケーションがその1次グラフィック出力を描画するコンテンツオブジェクトは、それらに関連するマテリアルプロパティを持たない場合があるが、それは、ユーザの気を散らす方法でまたはユーザの活動に干渉する別の方法で、コンテンツを光または環境と相互作用させることが望ましくないからである。コンテンツオブジェクトのビジュアルな外観は、このような実施形態においてそのテクスチャ、ジオメトリ、および場合によっては頂点毎もしくはピクセル毎のアルファ値だけにより決定することができる。
【0054】
図6は、本明細書で説明しているような動的非標準構成を持つウィンドウ601の一例を示している。ウィンドウ601は、非標準形状(つまり、非矩形)の基本フレームオブジェクト603、非標準位置(ウィンドウの右上角以外の位置)に配置されている非標準形状(矩形でない)のフレームボタンオブジェクト605、非標準位置(ウィンドウの左上角以外の位置)にあるシステム提供の指示(indicative)フレームアイコンオブジェクト607、および非標準位置(フレームの上段で左寄せされていない)にもあるフレームウィンドウキャプションオブジェクト613を有する。図6では、ウィンドウに関連付けられているアプリケーションは、2つの1次コンテンツオブジェクト領域615aおよび615bを定義している。1次コンテンツオブジェクト領域615aは、規則正しい形状(つまり、矩形)であるが、1次コンテンツオブジェクト領域615bは、不規則な、非矩形形状である。ウィンドウ601は、例えばブラウズする状況において、それぞれ戻るおよび進むナビゲーションコントロールを備える、アプリケーションにより定義されるフレームボタンオブジェクト617および619を含むこともできる。
【0055】
CDWMは、アプリケーションウィンドウ301の基本部分を3次元(3D)オブジェクトとして描画することができる。3Dメッシュプリミティブは、ウィンドウブジェクトの形状(基本ジオメトリ)を定義するために使用することができ、1次拡散テクスチャ(primary difuse texture)は、メッシュの3Dジオメトリにマッピングすることができ、照明(lighting)、シェーディング、屈折、ぼかし、ならびに補助テクスチャを含む他の特殊効果パラメータおよびリソースを含むことができるオプションのマテリアルプロパティは、描画プロセス実行時に適用することができる。補助テクスチャは、この技術分野で周知のグラフィック効果のためのリソースとして使用され、デスクトップ環境内の光源、カーソル、およびその他のUIオブジェクトとの「ライブの(live)」物理的にモデル化された相互作用を実現することができる。したがって、テクスチャは、ピクセル毎の3D通常情報源(通常/バンプ マッピング)、ライトマスク(環境光、拡散光、および鏡面光のフィルタ)、反射源(例えば、ウィンドウ上で動かしたときのカーソルの反射)、静的環境マップなどとして役立つことができる。
【0056】
基本ジオメトリの頂点形式は、オプションにより、ARGB形式の32ビットの拡散カラー成分とテクスチャ座標ペア{tu,tv}を含み、上述のように、最大n個までのテクスチャをメッシュジオメトリにマッピングすることができる。当技術分野で確立しているように、tuおよびtvの各整数増分量により、それぞれの次元のテクスチャの反復を定義することができる。例えば、{0.0,0.0}(テクスチャの左、上)から{1.0,1.0}(テクスチャの右、下)までの値の範囲は、メッシュ全体にわたる単一の反復を表すが、{0.0,0.0}から{6.0,4.0}までの範囲は、x次元については6回の反復、y次元については4回の反復を定義する。
【0057】
コンテンツエクステントは、境界エクステント{xleft,ytop,zfront,xright,ybottom,zback}を定義する3次元の点のペア、または基本ジオメトリを含む最小のボックスの座標として定義することができる。これは、2D境界ウィンドウ矩形{xleft,ytop,xright,ybottom}と似ている。三つ組み{xleft−xright,ytop−ybottom,zback−zback}は、コンテンツのエクステントの幅、高さ、および深さを定義する。エクステントは、システムにより計算され管理され、コンテンツのサイズおよびローカル位置を表す。
【0058】
ウィンドウブジェクトがサイズ変更可能であれば、基本コンテンツのエクステントを操作することは、CDWMがウィンドウのサイズを変更するための手段となる。辺と角の輪郭を保持するために、サイズ変更可能なメッシュ内のそれぞれの頂点の位置は、単純に新しいエクステントに合わせて拡大縮小することはできない。メッシュのサイズ変更を微調整できるようにするために、適用可能なパラメータとともに定義済み頂点位置フィルタ関数を、アプリケーションによりウィンドウ作成時に指定するか、またはCDWMにより既定として選択することができる。頂点サイズ変更フィルタ関数の役割は、境界エクステントが変更されたときターゲットメッシュ内のそれぞれの頂点の動作の仕方を決定することである。すべてのフィルタ関数は、各メンバの頂点に対して、各次元(x,y,z)における変位方向と大きさを決定しなければならない。
【0059】
最も単純なフィルタ関数は、方向(正または負)および大きさ(新しいエクステントに関して拡大縮小、または3D空間内のメッシュの境界ボックスの6面のうちの1つの量に等しい量により補正(offset))を決定する。各頂点のサイズ変更動作での挙動の仕方は、頂点毎、次元毎に頂点自体に関連付けられたプロパティとして記述するか、またはジオメトリに関して全体としてメッシュに対し定義することができる。後者の方法の一例は、6つのサイズ設定(sizing)マージン平面を定めるベクトルのペア{mxleft,mytop,mzfront,mxright,mybottom,mzback}であり、それぞれメッシュ境界ボックスの1面に関連付けられ、実際には、境界ボックスの体積を27個の立方体部分領域に分割している。サイズ設定マージン値は、メッシュのサイズに関係なく一定にするか、または境界ボックスの初期サイズに基づいて計算することができる。任意のメッシュサイズ変更動作では、上、左、前の立方体部分領域({xleft,ytop,zfront,mxleft,mytop,mzfront}により囲まれている)内の頂点は、境界エクステントの上−左−前の角と同じ大きさおよび方向により補正される。真ん中の立方体部分領域({mxleft,mytop,mzfront,mxright,mybottom,mzback}で囲まれている)にある頂点は、その部分領域の新しいエクステントに関して拡大縮小される。前、中心の立方体部分領域内にある頂点は、xおよびy次元のその部分領域の新しいエクステントに関して拡大縮小されるが、メッシュの前Z境界平面と同じ大きさで、かつ同じ方向に変位される。
【0060】
上述の原理を分かりやすくするために、図7では、2次元空間内のメッシュサイズ変更動作の一例を示している。ウィンドウ701は、角の半径707がある丸型の角を持つ。ウィンドウサイズ変更動作が単に、ウィンドウのベースとなるメッシュを拡大縮小するだけであれば、角の半径はメッシュとともに拡大縮小する。しかし、角の丸みが拡大縮小された場合、丸くなっている角の半径が大きすぎたり小さすぎたりし、ユーザエクスペリエンスを損ない、ユーザインターフェースの使い勝手を悪化する可能性がある。そこで、ウィンドウ701がサイズ変更されても、角の丸みは変化しないのが好ましい。角の丸みが拡大縮小されないようにするため、メッシュを1つの次元について3セグメント(適宜x、y、z)に分割することができる。そこで、本例では、ウィンドウは9つの象限(quadrant)703a〜iに分割される。3D空間では、ウィンドウは、27個の領域に分割することができる。それぞれの次元は、等分に分割するか、または不均等に分割し、それにより、サイズ均等の領域またはサイズ不均等の領域を容認することができる。領域がサイズ不均等であれば、境界ボックスにより囲まれた領域は、拡大縮小すべきでないマテリアルを含むのに必要なだけ小さくすることができる。
【0061】
ウィンドウサイズ変更動作では、象限は、この象限が境界ボックスにより囲まれている各次元で補正され、象限が領域仕切(region divider)705a〜dにより囲まれている各次元で拡大縮小される。例えば、領域703a、703c、703g、および703iは、XおよびYの両方の次元で少なくとも1つの側面で境界ボックスにより囲まれ、領域703a、703c、703g、および703i内のメッシュ頂点は、ウィンドウがサイズ変更されるのと同じ、境界ボックスからのオフセットを保持する。領域703bおよび703hは、Y(垂直)次元では少なくとも1つの側面で境界ボックスにより囲まれるが、X(水平)次元では領域仕切705によってのみ囲まれる。そこで、領域703bおよび703h内のメッシュ頂点は、Y次元でオフセットを保持するが、X次元では拡大縮小される。領域703dおよび703fは、X(水平)次元では少なくとも1つの側面で境界ボックスにより囲まれるが、Y(垂直)次元では領域仕切705によってのみ囲まれる。そこで、領域703dおよび703f内のメッシュ頂点は、X次元でオフセットを保持するが、Y次元では拡大縮小される。領域703eは、X次元とY次元の両方で、仕切線705により囲まれ、領域703e内に入るメッシュ頂点は、X次元とY次元の両方で拡大縮小される。当業者であれば、前の段落で説明しているように、Z次元を含めることによりこのアルゴリズムを3次元に拡張できることを理解されよう。
【0062】
メッシュサイズ変更フィルタ関数の別の形態では、頂点の位置が任意の方向で拡大縮小または補正するかを判別するために、サイズ設定マージンなどの大域的な幾何学的構造に依存せず、手書きの(hand−authored)頂点メタデータを解釈することができる。このような関数は、メッシュサイズ変更時に尾根と谷などの複雑なサーフェストポロジーを保存するために使用することができる。メッシュサイズ変更フィルタ関数の別の形態では、各次元で頂点を直線的または非直線的に変位させることができ、区別ビット(discrimination bits)および関数係数(function coefficients)は頂点毎のメタデータとして格納される。このような関数では、メッシュサイズ変更に付随して、直線的もしくは非負直線的、局所化された、または一般化された膨張もしくは潰れなどの効果を可能にする。
【0063】
基本コンテンツマージンは、子コンテンツが制約される境界を定義する。コンテンツマージンは、サイズ設定マージンと同じようにして定義された3次元境界とすることができる。しかし、サイズ設定マージンとは異なり、コンテンツマージンは、ウィンドウのスケールに合わせて直線的に拡大縮小することができ、メッシュサイズ変更には影響を及ぼさないかもしれない。
【0064】
抽象マテリアルプロパティの値に応じて指定された、ローカルおよびデスクトップの大域的リソースおよびパラメータは、ピクセルシェーダと組み合わせることで、CDWMが物理的モデル化デスクトップコンテンツの描画を実施するためのデータおよびメカニズムを含む。
【0065】
高水準コンテンツマテリアルプロパティでは、コンテンツが光および周囲環境と相互作用する仕方を定義する。すりガラスなどの複雑なマテリアルの描画では、ビデオハードウェアでは元々サポートしていない手法を使用することがある。結果として、CDWMは、少数の定義済みピクセルシェーダのうちの1つを使用してマテリアルプロパティを実装する。ピクセルシェーダは、メッシュプリミティブ内の光源、テクスチャ、および頂点だけでなく変換およびメトリクスなどのパラメータも含む、定義済みのリソースの集まりに基づいて、表示前にピクセルの値を操作する表示ハードウェアにロードされる小さなルーチンである。CDWMは、定義済みピクセルシェーダのコレクションの中から、特定のオブジェクトマテリアルプロパティの集合を描画するのに適したシェーダを選択することができ、これらは環境色(強さおよび透明度)、拡散色(強さおよび透明度)、鏡面色(強さおよび透明度)、反射スカラ、屈折率、拡散テクスチャ、ならびにバンプテクスチャを含み、それぞれにいて後述する。デスクトップグローバルプロパティを使用することにより、目の位置、大域的光源、環境マップなどの大域的環境プロパティを定義することができる。これらのデスクトップグローバルプロパティを定義するリソースおよびパラメータを、基本ウィンドウマテリアルプロパティとともに、ウィンドウ描画直前のアクティブピクセルシェーダへのパラメータとして3Dグラフィックスインターフェースに送ることができる。
【0066】
環境色は、すべての方向からオブジェクトのサーフェスに当たる光をシミュレートするものである。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして、環境の強さは、オブジェクトのサーフェスと接触する環境光の相対的量を決定し、32ビットARGB値を使用して、環境色と透明度を指定することができる。
例示されている一実施形態では、環境の強さは0.0(環境光量0では、一様に黒の外観が与えられる)から1.0(オブジェクト上に一様に分散されている指定された色の最大の強さ)の範囲である。白い環境色を持つ環境の強さの効果により、オブジェクトの一般的明度の制御を可能とする。
【0067】
拡散の強さは、オブジェクトのサーフェスに接触した後すべての方向に散乱する有向光の量を決定する。光自体は、1つまたは複数の指向性の光または立方体ライトマップ(cubic light map)のいずれにかによって与えられる。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして、拡散色は、乱反射した光の透明度がアルファ成分により指示される、色を指示する32ビットARGB値により指定することができる。拡散の強度値は0.0(光が乱反射せず、オブジェクトに一様に黒い外観が与えられる)から1.0(すべての光が反射され、拡散色値に応じてオブジェクトに陰影付の外観が与えられる)までの範囲である。照明が当たったサーフェスは、環境と拡散の強度値の合計が1.0に近づくにつれてよりリアルにモデル化されているように見える。
【0068】
鏡面の強さでは、オブジェクトのサーフェスから見る人に直接反射される光の量を制御し、鏡面色は、オブジェクトのARGB色として指定することができる。光源自体は、1つまたは複数の指向性の光または立方体のライトマップの形態とすることができる。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして鏡面の強さの値を大きくすることにより、鮮明なハイライトで光沢のあるサーフェスをモデル化することができるが、値を小さくした場合は、ハイライトがかすかであるか、または全くない、つや消しのサーフェスをモデル化することができる。色のアルファ成分により、鏡面ハイライトの透明度が決定される。
【0069】
反射率(reflectivity)も、鏡面反射率(specularity)のように、オブジェクトのサーフェスから見る人に向かって直接反射される光の量を決定する。反射が鏡面反射率と異なるのは、反射が光源だけでなく環境全体に適用されるという点である。CDWM管理されたUIコンテンツオブジェクトに適用可能なマテリアルプロパティとして反射率の値が0.0だと、サーフェスにおける環境の反射はなく、値が1.0だと、サーフェスにおける環境の反射は鏡のようになる。環境は、立方体環境マップとマウスカーソルとの組み合わせを使用してモデル化することができる。したがって、マウスカーソルだけでなく環境の静的特徴もウィンドウサーフェスから反射されるようにでき、ある程度反射の強さのスカラで制御される。
【0070】
各オブジェクトの屈折率は、オブジェクトを通過する光の出射角を決定する。nsinθ=nsinθというスネルの法則を使用することができるが、ただし、nおよびnは、媒体1および2の屈折率、θおよびθは、それぞれ、サーフェス法線に対する光の入射角と出射角である。したがって、媒体1が割り当てられた屈折率が1.0(屈折なし)のデスクトップ環境を表し、媒体2がウィンドウ基本オブジェクトの媒体であれば、屈折角はθobj=sin−1(sinθenv/nobj)で求められる。シミュレートできるさまざまな媒体の知られている屈折率を以下の表1に示す。
【0071】
【表1】

【0072】
屈折角が決定され/計算されると、これを使用して、他のマテリアルプロパティに関連するさらなる処理に続いてオブジェクトの可視サーフェス上に描画する適切なピクセルを背景から選択することができる。屈折のリアルタイムの描画を目的とする最適化では、フレネルの方法、つまり当業者に周知の方法を組み込むことができる。
【0073】
ビジュアルスタイル(テーマ)を使用して、CDWMのビジュアルおよび挙動ポリシーを定義することができる。ビジュアルスタイルとは、一般に、共通のユーザインターフェース要素に適用される手書きでデザインした精密なグラフィックスおよび挙動属性を指定するユーザ選択可能なテーマを指す。アプリケーションのオプションによりこれらの属性の一部をオーバーライドすることができるが、他の属性は、ユーザインターフェースの整合性のためにシステムにより選択的に強制される。ビジュアル属性は、フレーム領域(基本コンテンツ)、非クライアントボタン、およびその他のアプリケーション独立の要素などの共通ウィンドウコンテンツの外観を含む。挙動属性は、ウィンドウおよびデスクトップ遷移アニメーションを含み、このとき、ウィンドウは、マウス(例えば、素早く動く(snap)、接着して伸ばす(glue and stretch)、および制約(constraint))、およびその他のアプリケーション独立の挙動で対話的に移動またはサイズ変更される。ビジュアルおよび挙動ポリシーは、そのポリシーをソフトウェア描画パイプライン全体に分散させるのではなく、CDWM内に一括して配置することができるため、エンドユーザのエクスペリエンスがより整合性のあるものとなり、開発環境が簡素化される。
【0074】
本発明の例示されている一実施形態によれば、ビジュアルスタイルの既定の(またはカスタムの)テクスチャは、各ピクセルが修正されたものに基づくアルファレベルおよび/またはビットマップを含むことができる。例えば、当技術分野で知られているように、アルファレベルを使用して透明度レベルを修正することができる。さらに、テクスチャは、クライアントおよび/または非クライアント領域、あるいはクライアントおよび/または非クライアント領域の一部のピクセルシェーディングに使用するビットマップを含むことができる。例えば、例示されている一実施形態では、このビットマップは、すりガラスの外観を与えることができる。図5は、すりガラスフレーム503で描画されたウィンドウ501を例示しており、ウィンドウフレーム503の背後のコンテンツからどのピクセルを表示するべきかを決定する際にガラスをシミュレートするため屈折率を指定することができる。グラフィックス描画エンジンの高度なテクスチャ機能、照明、および3D機能を活用し、適切なビットマップを使用することにより、CDWMは、3Dデスクトップ環境内のオプション指定された仮想光源からの光を反射するが、クライアントコンテンツが見えにくくならないように不透明のクライアントコンテンツ領域を有する、すりガラスの外観を有するフレーム503でウィンドウ501を合成することができる。
【0075】
デスクトップ描画モデル(無効化対合成(invalidation versus compositing))は、それぞれ、アプリケーションプログラムのウィンドウがデスクトップ上に適切に保持されるようにアプリケーションプログラムと対話するための固有のスキーマを持つ。例えば、無効化モデルでは、デスクトップ描画は、ウィンドウの「クリッピング領域」の管理および連続更新に依存する。クリッピングは、描画をウィンドウの該当する領域に制限するプロセスである。一方のウィンドウが他方のウィンドウで一部隠されると、クリッピング領域はその隠された領域の反転に対応する。下にあるウィンドウでそのコンテンツが描画される場合、描画メッセージに対する応答であろうと、要求に基づかない方法であろうと、無効化モデルDWMでは、そのクリッピング領域が出力に適用され、描画が上に載るウィンドウ内で必ず発生しないようにする。上に載るウィンドウが移動した場合、または下にあるウィンドウがZオーダの最上位に来た場合、下にあるウィンドウのクリッピング領域は、それに応じてDWMにより調整された後、描画メッセージをウィンドウに送り、新しく公開されたコンテンツを更新する。
【0076】
そのため無効化モデルDWMおよび合成モデルDWMは、デスクトップの描画のために異なる情報に依存する。例えば、無効化モデルでは、DWMはそれぞれのウィンドウのサーフェス全体のコピーをデスクトップ上に格納しないため、DWMはサイズ変更および再描画の間コンテンツをリフレッシュするためにアプリケーションと通信しなければならない。同様に、アプリケーションでは、DWMによりそうするよう要求されない限りそのコンテンツをリフレッシュする必要がないことを当てにしている(もちろん、コンテンツがユーザ入力の結果として更新されない場合)。アプリケーションが自コンテンツを独立して更新する必要がある場合、アプリケーションは自ウィンドウの一部を無効化するようDWMに依頼し、DWMから無効領域に対応する描画要求を受け取ることを当てにしている。合成デスクトップの場合、各ウィンドウを全部描画するのに十分な情報が、CDWMにより保持されるため、CDWMは、上述のようなイベントについてウィンドウ描画メッセージを送信する必要はない。言い換えると、このことは、無効化ステップを未然に防ぎ、つまり、アプリケーションは、単に内部イベントの指示通りにそれ自身の全部または一部を再描画するだけでよい。
【0077】
これらの基本的な相違点のため、それぞれのDWMおよび/またはCDWMは固有のAPIセットを有し、これにより、アプリケーションプログラムは、ウィンドウコンテンツが必ず最新に維持されるようにするためにDWMと通信することを期待される。結果として、無効化モデルDWMとともに使用するように元々プログラムされているアプリケーション、つまり、そのコンテンツを描画する描画メッセージに依存するアプリケーションは、必ずしも、合成モデルCDWMと連携しない。そこで、図4を参照すると、CDWMは、無効化モデルDWMで使用するために最初に開発されたアプリケーションをサポートすることができる。これらのアプリケーションは、本明細書ではレガシアプリケーションと呼び、後方互換性サポートは、本明細書ではレガシサポートと呼ぶことができる。レガシAPIは、レガシアプリケーションとの互換性を持つ無効化モデルDWMを使用したオペレーティングシステムの旧バージョンとともに使用するためのAPIを指す。レガシAPI 192b(図1B)では、アプリケーションは無効化モデルDWM(レガシDWM)192aと通信することができる。レガシDWMでは、別々のレガシAPI要素を使用して、アプリケーションの代わりにCDWMへのさまざまなレガシ通知を処理し、関連する状態情報をCDWMに転送し、入力およびフォーカスの決定についてレガシ座標空間とCDWM座標空間との間の変換を行うことができる。レガシDWMは、後述のように、CDWMにデータをリダイレクトするように修正することができる。
【0078】
図4は、本発明の例示されている一態様によるウィンドウ合成方法の一部を示す図である。ステップ401〜409は、ソース描画サーフェス(またはサーフェスを生成するために要求される命令があれば集合(set))が、レガシウィンドウマネージャ192aから取得されるレガシアプリケーションウィンドウと関連付けられたコンテンツの初期描画を表している(図1B)。ステップ411〜419は、合成を意識したアプリケーションプログラムにより作成されたウィンドウコンテンツの描画を例示している。
【0079】
ステップ401において、アプリケーションがそれのために設計された無効化モデルに従って、レガシアプリケーションがレガシAPI192bを呼び出してデスクトップ上にウィンドウ描画した結果として、CDWMは、レガシウィンドウマネージャから1次ウィンドウコンテンツの初期更新通知を受け取る。例えば、Microsoft(登録商標)Word(登録商標)XPは、レガシAPIを呼び出し、その結果レガシDWM192aが、ユーザにより入力されたテキストを描画することができる。ステップ403で、CDWMは、テーママネージャからコンテンツの既定のメッシュを取り出す。ステップ405で、CDWMは、レガシウィンドウマネージャからリダイレクトサーフェスを取り出す(または生成する)。このサーフェスは、コンテンツの拡散テクスチャとして使用することができる。ステップ407で、CDWMは、レガシテクスチャの所望の領域のみが保持され、レガシウィンドウフレーム、枠、および/またはキャプションを含む領域が描画されないようにする。これを都合よく実行する方法として、所望の領域のみがメッシュのxおよびy境界エクステントにマッピングされるように、メッシュのテクスチャマッピング座標を変換することによる方法がある。ステップ409で、CWDMは、コンテンツに対する既定のマテリアルプロパティを取り出す。レガシコンテンツを描画するために必要なリソースおよびパラメータはすでに集められている。
【0080】
ステップ411で、CDWMは、ウィンドウに関連付けられたコンテンツオブジェクトの描画を必要とするアプリケーションプログラムから情報を受け取る。コンテンツには、オプションにより、カスタムメッシュ、カスタムテクスチャ、および/またはカスタムマテリアルプロパティが随伴する。カスタムメッシュは、アプリケーションプログラム側で既存のコンテンツオブジェクトに対し非標準形状であるのが望ましいとしている場合だけ、提供することができる。注目しているコンテンツオブジェクトがウィンドウ基本コンテンツの場合、カスタムメッシュは、ウィンドウの形状を再定義する。カスタムテクスチャおよび/またはカスタムマテリアルプロパティは、アプリケーションプログラム側で非標準の外観(つまり、アクティブテーマにより指定されているもの以外)をシステム定義コンテンツオブジェクトに与えることを望ましいとしている場合だけ提供することができる。注目しているコンテンツオブジェクトがウィンドウ基本コンテンツの場合、カスタムテクスチャおよび/またはマテリアルプロパティは、その形状を修正せずにウィンドウの外観を再定義する。より一般的には、アプリケーションは、ゼロからコンテンツオブジェクトを作成し、そのメッシュ(一組の定義済みシステムメッシュから選択することができる)、テクスチャ、およびマテリアルプロパティ(一組の定義済みシステムマテリアルプロパティから選択することができる)を作成時に指定する。
【0081】
ステップ413で、CDWMは、カスタムコンテンツメッシュが指定されたかどうかを判別し、指定されていない場合、テーママネージャから既定のメッシュを取り出す(ステップ403)。ステップ415で、CDWMは、カスタムテクスチャが指定されたかどうかを判別し、指定されていない場合、テーママネージャから既定のテクスチャを取り出す。ステップ417で、CDWMは、カスタムマテリアルプロパティがアプリケーションにより指定されたかどうかを判別し、指定されていない場合、テーママネージャから既定の一組のマテリアルプロパティを取り出す。カスタムコンテンツを描画するために必要なリソースおよびパラメータはすでに集められている。
【0082】
ステップ419で、CDWMは、UCEプログラミングインターフェースを介して描画命令ブロックを組み立ててコンテンツを描画するが、その際に、適切なメッシュ、テクスチャ、およびマテリアルプロパティを参照する。描画命令ブロックは、UCEによる実行のためキューに入れられる。命令ブロックは、ターゲットデバイスの保留リフレッシュ間隔の期限切れ後に、UCE描画モデルにより実行される。
【0083】
CDWMおよびレガシDWMが組み込まれているオペレーティングシステムは、レガシサポートを提供することにより、本質的に無効化DWM(レガシDWM 192a)または合成DWM(CDWM 190)を使用してデスクトップを描画する機能を有する。つまり、レガシサポートを提供するため合成モデルのほかに無効化モデルDWMがオペレーティングシステムによりサポートされるということである。したがって、デスクトップ合成に要求される、プロセッサに負担のかかる計算を効率よく実行するのに必要なビデオハードウェアをもたないシステム(例えば、ビデオメモリが少ない、または3Dアクセラレーションハードウェアを備えていないシステム)では、CDWMおよび/またはオペレーティングシステム側で、合成描画モードを使用するのか、レガシ描画モードを使用するのかをユーザが選択できるようにする。この選択は、自動的にまたは手動で行うことができる。例えば、ユーザによって選択されたアクティブ化されたビジュアルスタイル(テーマ)により定義された描画モードに従って、マニュアルユーザコントロールを介して選択することができる。この選択は、それと別に、またはそれに加えて、節電条件に基づくようにもできる。例えば、携帯型装置がAC電源から切り離され、電池に切り替えられた場合、ビデオグラフィックス処理装置(GPU)の活動状態が低く、消費電力が小さいため、オペレーティングシステムはレガシ描画モードを強制することができる。
【0084】
上述の方法およびシステムを使用することにより、オペレーティングシステムは、高度な3Dグラフィックス機能を使用する物理的にモデル化されたグラフィカルユーザインターフェースを実現することができる。ウィンドウフレームは、少なくともある程度の透明性とその透明性の結果として見えるコンテンツの少なくともある程度のひずみを併せ持つシミュレートされたサーフェス外観を与えるすりガラスまたは他の何らかの複雑なマテリアルの外観だけでなく、その特性も獲得することができる。つまり、本発明では、ウィンドウフレームまたは枠をすりガラスのように見せるだけでなく、GUI環境でコンテンツを反映し、仮想光源を示すスペクトルハイライトを含み、「すりガラス」の枠の背後のコンテンツがそれに応じて少し補正され、ビットマップが1つまたは複数のピクセルシェーダを介して適用され下にあるコンテンツの歪みをもたらすようにガラスに似た屈折率をシミュレートするという点ですりガラスに似た挙動をウィンドウフレームがする。
【0085】
すりガラスまたは他のガラスに似た物理的にモデル化されたオブジェクトは、グラフィカルユーザインターフェースのユーザに多くの利点を提供する。例えば、ガラスの審美的外観は、GUIを強化し、ユーザに明るいオープンな感じを与えることによりエンドユーザにとって本発明のGUIが他のオペレーティングシステムのGUIよりも望ましいものとなるリッチなユーザエクスペリエンスを提供する。それと同時に、ガラスの真の特性またはそれに近い特性を持つ物理的にモデル化されたすりガラスは、機能的な利点も持つ。
【0086】
すりガラスの外観を持たせると、マルチウィンドウ環境でユーザがウィンドウのレイヤの順序を理解するのに役立つ。シェーディング、反射、および鏡面ハイライトは、デスクトップ上の深さとレイヤのより強い感覚を引き起し、ユーザがデスクトップ上のさまざまなウィンドウのZオーダを判別することを助ける。いくつかの知られているシステムでは、一様な透明性をウィンドウ全体に適用しているが、これだとユーザは注目しているウィンドウ内にどのようなコンテンツがあるのか、ウィンドウの背後にどのようなコンテンツがあるのかを容易に認識できないであろう。この一様なピクセル毎の透明性をZオーダの関数として変化させることにより、問題を改善することが可能であるが、その方法は不自然であり直感的ではない。むしろ、本発明では、それぞれのデスティネーションピクセルを生成する過程で複数の囲んでいるソースピクセルをサンプリングする調節可能なぼかしアルゴリズムをピクセルシェーダに組み込み、このシェーダをウィンドウフレームを描画するプロセスで実行することにより、現実世界のすりガラスの材質の欠陥から生じる光散乱挙動をモデル化する。ユーザが背景と前景のコンテンツとを瞬時に区別できるようにするのは、背景のこの物理的にモデル化された歪みである。また、この効果は累積的なので、重なり合うすりガラスウィンドウフレームは、前景から背景へと徐々に歪んでゆく。したがって、ユーザはすりガラスウィンドウフレームの複数のレイヤの下にある背景コンテンツを直感的に区別することができる。
【0087】
すりガラスは、より太い枠線を使用して、例えば、ユーザがウィンドウの移動またはサイズ変更を行うためにウィンドウの枠をマウスで掴み、しかも、(ガラスは透明または半透明であるため)ウィンドウの下にあるコンテンツを遮らないことを容易にすることにより、GUIを用いたユーザの対話操作を容易にする。さまざまなすりガラス効果を利用することにより、アクティブなウィンドウ状態と非アクティブなウィンドウ状態とをユーザが簡単に区別するようにできる。さらに、すりガラスにより、ユーザはいつでもより広い画面領域を見ることができ(すりガラスは半透明または透明なので)、デスクトップはガラスが表示画面上で邪魔にならない要素なのであまり散らかっているようには見えないため、ユーザは容易に画面上のコンテンツを読み、かつ/または見ることができる。
【0088】
当業者であれば、図はすりガラスの特定の例を示しているが、本発明はそれらに限られないことは理解されるであろう。すりガラスの外観は、異なるビットマップおよび/または異なるピクセルシェーダを外観の描画に適用することにより容易に変えることができる。さらに、異なる環境変数を適用する(例えば、反射および鏡面ハイライトに影響を及ぼす、光源を別のものにする)か、またはガラスの仮想物理特性(例えば、屈折率、反射率など)を変えて、すりガラスの外観にも影響を及ぼす。本発明は、他のテクスチャおよび複合物、例えば、金属、プラスチック、紙、コットン、ならびにその他の天然および合成材料をシミュレートすることにも使用できることは理解されるであろう。
【0089】
本発明は、本発明を実施するこの好ましい方法を含む特定の実施例に関して説明してきたが、当業者であれば、上述のシステムおよび技術のさまざまな変更形態および置換があることを理解されよう。そこで、本発明の精神および範囲は、添付の特許請求の範囲で規定されているとおり広い意味で解釈すべきである。
【図面の簡単な説明】
【0090】
【図1A】本発明の例示的な実施形態の1つまたは複数の態様に使用できる動作環境を示す図である。
【図1B】合成デスクトッププラットフォームの例示的な実施形態におけるコンポーネント間の機能およびサービスの分配を示す図である。
【図2】本発明の例示的な態様による合成方法を示す図である。
【図3】本発明の例示的な態様によるウィンドウを示す図である。
【図4】本発明の例示的な態様によるウィンドウ合成方法の一部を示す図である。
【図5】本発明の例示的な態様により描画されるすりガラスフレーム付きのウィンドウを示す図である。
【図6】動的なウィンドウ構造をもつウィンドウを示す図である。
【図7】メッシュのサイズ変更の間に使用される領域を示す図である。
【符号の説明】
【0091】
120 処理装置
121 システムバス
130 システムメモリ
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムジュール
137 プログラムデータ
140 固定の、不揮発性メモリインターフェース
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 取り外し可能の、不揮発性メモリインターフェース
160 ユーザ入力インターフェース
170 ネットワークインターフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
182 リモートアプリケーションプログラム
183 ビデオアダプタ
184 モニタ
185 デジタイザ
187 出力周辺インターフェース
188 プリンタ
189 スピーカ
190 合成デスクトップウィンドウマネージャ
190a アプリケーションプログラミングインターフェース
190b サブシステムプログラミングインターフェース
190c UIオブジェクトマネージャ
191 アプリケーションソフトウェア
192 レガシグラフィカルユーザインターフェースサブシステム
192a レガシウィンドウマネージャ
192b レガシグラフィックスデバイスインターフェース
193 テーママネージャ
194 ユニバーサル合成エンジン(UCE)
194a プログラミングインターフェース
194b リソースマネージャ
194c 要求キュー
194d 描画モジュール
195 3Dグラフィックスインターフェース(Direct3D、OpenGLなど)
196 ビデオドライバデバイスオブジェクト
197 表示装置

【特許請求の範囲】
【請求項1】
オペレーティングシステムのシェルのグラフィカルユーザインターフェースでデスクトップウィンドウを描画するためのコンピュータによって実施される方法であって、
前記グラフィカルユーザインターフェース内のウィンドウに表示するアプリケーションコンテンツを受け取ることと、
半透明のフレーム部分を有する前記ウィンドウの不透明コンテンツ部分内に前記アプリケーションコンテンツの少なくとも一部を表示することとを備えることを特徴とする方法。
【請求項2】
前記表示するステップは、ピクセルシェーダがビットマップを前記フレーム部分に適用し、描画される前記フレーム部分の下のコンテンツを歪ませることを含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項3】
前記ビットマップは、ガラスに似た外観を含むことを特徴とする請求項2に記載のコンピュータによって実施される方法。
【請求項4】
前記ビットマップは、すりガラスに似た外観を含むことを特徴とする請求項2に記載のコンピュータによって実施される方法。
【請求項5】
前記受け取るステップは、レガシアプリケーションプログラムのインスタンスに由来するアプリケーションコンテンツ情報を受け取ることを含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項6】
受け取ることは、
合成デスクトップウィンドウマネージャ(CDWM)が前記アプリケーションコンテンツを受け取ることを含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項7】
表示することは、
前記CDWMがテクスチャをメッシュに適用することにより前記ウィンドウを物理的にモデル化することを含むことを特徴とする請求項6に記載のコンピュータによって実施される方法。
【請求項8】
前記メッシュは、現在のビジュアルスタイルにより定義されることを特徴とする請求項7に記載のコンピュータによって実施される方法。
【請求項9】
前記メッシュは、前記アプリケーションコンテンツ情報で提供されることを特徴とする請求項7に記載のコンピュータによって実施される方法。
【請求項10】
前記テクスチャは、現在のビジュアルスタイルにより定義されることを特徴とする請求項7に記載のコンピュータによって実施される方法。
【請求項11】
前記テクスチャは、前記アプリケーションコンテンツ情報で提供されることを特徴とする請求項7に記載のコンピュータによって実施される方法。
【請求項12】
前記レガシアプリケーションプログラムの前記インスタンスがレガシウィンドウコンテンツをレガシデスクトップウィンドウマネージャ(DWM)に供給することと、
前記レガシウィンドウコンテンツからアプリケーションコンテンツを取り去ることと、
前記アプリケーションコンテンツを前記アプリケーションコンテンツのグラフィック表現に変換することとをさらに備えることを特徴とする請求項5に記載のコンピュータによって実施される方法。
【請求項13】
既定のデスクトップウィンドウマネージャとして前記CDWMと前記レガシDWMとを切り替えることをさらに備えることを特徴とする請求項12に記載のコンピュータによって実施される方法。
【請求項14】
前記レガシDWMは、前記アプリケーションコンテンツを前記CDWMにリダイレクトすることを特徴とする請求項12に記載のコンピュータによって実施される方法。
【請求項15】
前記切り替えは、現在のビジュアルスタイルに基づくことを特徴とする請求項13に記載のコンピュータによって実施される方法。
【請求項16】
前記切り替えは、現在の電源設定に基づくことを特徴とする請求項13に記載のコンピュータによって実施される方法。
【請求項17】
前記フレームは、仮想光源に基づくスペクトルハイライトを含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項18】
前記フレームは、前記ウィンドウから分離された前記グラフィカルユーザインターフェース内の他のコンテンツに基づく反射コンテンツを含むことを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項19】
前記フレーム部分は、前記ウィンドウが入力フォーカスを持つとき半透明であることを特徴とする請求項1に記載のコンピュータによって実施される方法。
【請求項20】
前記ウィンドウのサイズを変更するユーザ入力を受け取ることと、
前記メッシュをメッシュ次元毎に3つの領域に分割することと、
領域毎に、前記領域を前記ウィンドウの境界ボックスで囲む任意の次元のメッシュの頂点のオフセットを保持し、前記領域を前記ウィンドウの前記境界ボックスで囲まない任意の次元のメッシュの頂点を拡大縮小することとをさらに備えることを特徴とする請求項7に記載のコンピュータによって実施される方法。
【請求項21】
オペレーティングシステムのシェルのグラフィカルユーザインターフェースでデスクトップウィンドウを描画するための方法をコンピュータに実行させるコンピュータ実行可能命令を格納するコンピュータ読み取り可能な媒体であって、前記方法は、
前記グラフィカルユーザインターフェース内のウィンドウに表示するアプリケーションコンテンツを受け取ることと、
半透明のフレーム部分を有する前記ウィンドウの不透明コンテンツ部分内に前記アプリケーションコンテンツの少なくとも一部を表示することとを備えることを特徴とするコンピュータ読み取り可能な媒体。
【請求項22】
前記表示するステップは、ピクセルシェーダがビットマップを前記フレーム部分に適用し、描画される前記フレーム部分の下のコンテンツを歪ませることを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項23】
前記ビットマップは、ガラスに似た外観を含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
【請求項24】
前記ビットマップは、すりガラスに似た外観を含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
【請求項25】
前記受け取るステップは、レガシアプリケーションプログラムのインスタンスに由来するアプリケーションコンテンツ情報を受け取ることを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項26】
受け取ることは、
合成デスクトップウィンドウマネージャ(CDWM)が前記アプリケーションコンテンツを受け取ることを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項27】
表示することは、
前記CDWMが、テクスチャをメッシュに適用することにより前記ウィンドウを物理的にモデル化することを含むことを特徴とする請求項26に記載のコンピュータ読み取り可能な媒体。
【請求項28】
前記メッシュは、現在のビジュアルスタイルにより定義されることを特徴とする請求項27に記載のコンピュータ読み取り可能な媒体。
【請求項29】
前記メッシュは、前記アプリケーションコンテンツ情報で提供されることを特徴とする請求項27に記載のコンピュータ読み取り可能な媒体。
【請求項30】
前記テクスチャは、現在のビジュアルスタイルにより定義されることを特徴とする請求項27に記載のコンピュータ読み取り可能な媒体。
【請求項31】
前記テクスチャは、前記アプリケーションコンテンツ情報で提供されることを特徴とする請求項27に記載のコンピュータ読み取り可能な媒体。
【請求項32】
前記レガシアプリケーションプログラムの前記インスタンスがレガシウィンドウコンテンツをレガシデスクトップウィンドウマネージャ(DWM)に供給することと、
前記レガシウィンドウコンテンツからアプリケーションコンテンツを取り去ることと、
前記アプリケーションコンテンツを前記アプリケーションコンテンツのグラフィック表現に変換することとをさらに備えるを特徴とする請求項25に記載のコンピュータ読み取り可能な媒体。
【請求項33】
さらに、既定のデスクトップウィンドウマネージャとして前記CDWMと前記レガシDWMとを切り替えることをさらに備えることを特徴とする請求項32に記載のコンピュータ読み取り可能な媒体。
【請求項34】
前記レガシDWMは、前記アプリケーションコンテンツを前記CDWMにリダイレクトすることを特徴とする請求項32に記載のコンピュータ読み取り可能な媒体。
【請求項35】
前記切り替えは、現在のビジュアルスタイルに基づくことを特徴とする請求項33に記載のコンピュータ読み取り可能な媒体。
【請求項36】
前記切り替えは、現在の電源設定に基づくことを特徴とする請求項33に記載のコンピュータ読み取り可能な媒体。
【請求項37】
前記フレームは、仮想光源に基づくスペクトルハイライトを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項38】
前記フレームは、前記ウィンドウから分離された前記グラフィカルユーザインターフェース内の他のコンテンツに基づく反射コンテンツを含むことを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項39】
前記フレーム部分は、前記ウィンドウが入力フォーカスを持つとき半透明であることを特徴とする請求項21に記載のコンピュータ読み取り可能な媒体。
【請求項40】
前記ウィンドウのサイズを変更するユーザ入力を受け取ることと、
前記メッシュをメッシュ次元毎に3つの領域に分割することと、
領域毎に、前記領域を前記ウィンドウの境界ボックスで囲む任意の次元のメッシュの頂点のオフセットを保持し、前記領域を前記ウィンドウの前記境界ボックスで囲まない任意の次元のメッシュの頂点を拡大縮小することとをさらに備えることを特徴とする請求項27に記載のコンピュータ読み取り可能な媒体。
【請求項41】
オペレーティングシステムのシェルのグラフィカルユーザインターフェースでデスクトップウィンドウを描画するためのコンピュータによって実施される方法であって、
ウィンドウ内に表示するアプリケーションコンテンツを受け取ることと、
フレーム部分を有する前記ウィンドウのコンテンツ部分内に前記アプリケーションコンテンツの少なくとも一部を表示することとを備え、前記表示することはさらに、仮想光源に基づいて前記フレーム部分にスペクトルハイライトを描画することを含むことを特徴とする方法。
【請求項42】
オペレーティングシステムのシェルのグラフィカルユーザインターフェースでデスクトップウィンドウを描画するためのコンピュータによって実施される方法であって、
ウィンドウ内に表示するアプリケーションコンテンツを受け取ることと、
フレーム部分を有する前記ウィンドウのコンテンツ部分内に前記アプリケーションコンテンツの少なくとも一部を表示することとを備え、前記表示することはさらに、グラフィカルユーザインターフェース内の前記ウィンドウから分離された他の別個のコンテンツに基づいて前記フレーム上に反射コンテンツを描画することを含むことを特徴とする方法。
【請求項43】
オペレーティングシステムのシェルのグラフィカルユーザインターフェースでデスクトップウィンドウを描画するためのコンピュータによって実施される方法であって、
ウィンドウ内に表示するアプリケーションコンテンツを受け取ることと、
フレーム部分を有する前記ウィンドウのコンテンツ部分内に前記アプリケーションコンテンツの少なくとも一部を表示することとを備え、前記表示することはさらに、グラフィカルユーザインターフェース内の前記ウィンドウの背後にある他の別個のコンテンツに基づいて前記フレーム部分上に屈折コンテンツを描画することを含むことを特徴とする方法。
【請求項44】
合成デスクトップ描画モデルを使用するコンピュータオペレーティングシステムにおいて、無効化デスクトップ描画モデルとのみ互換性のあるアプリケーションに対するレガシサポートを提供する方法であって、
レガシアプリケーションプログラムのインスタンスがレガシウィンドウ情報をレガシデスクトップウィンドウマネージャ(DWM)に供給することと、
前記レガシウィンドウ情報からクライアントコンテンツを取り去ることと、
前記クライアントコンテンツを前記クライアントコンテンツのラスタ画像に変換することと、
合成デスクトップウィンドウマネージャ(CDWM)がバッファメモリにウィンドウを描画することとを備え、前記CDWMはテクスチャをメッシュに適用することにより前記ウィンドウを描画し、前記テクスチャは前記クライアントコンテンツのラスタ画像および既定の非クライアント情報を含むことを特徴とする方法。
【請求項45】
一部メッシュにより定義されるウィンドウのサイズ変更を行うための方法であって、
前記メッシュをメッシュ次元毎に3つの領域に分割することと、
領域毎に、前記領域を前記ウィンドウの境界ボックスで囲む任意の次元のメッシュの頂点のオフセットを保持し、前記領域を前記ウィンドウの前記境界ボックスで囲まない任意の次元のメッシュの頂点を拡大縮小することとを備えることを特徴とする方法。
【請求項46】
前記領域は、等しいサイズであることを特徴とする請求項45に記載の方法。
【請求項47】
前記領域は、等しいサイズでないことを特徴とする請求項45に記載の方法。
【請求項48】
前記境界ボックスによって囲まれる前記領域は、拡大縮小すべきでないマテリアルを包含するのに必要なだけ小さいことを特徴とする請求項45に記載の方法。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2007−510202(P2007−510202A)
【公表日】平成19年4月19日(2007.4.19)
【国際特許分類】
【出願番号】特願2006−536546(P2006−536546)
【出願日】平成16年7月21日(2004.7.21)
【国際出願番号】PCT/US2004/018940
【国際公開番号】WO2005/045736
【国際公開日】平成17年5月19日(2005.5.19)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】