(57)【特許請求の範囲】
【請求項１】
複数の描画タスクを実行し、かつ１つのウィンドウ内に該描画タスクに基づく描画を行なうウィンドウ処理装置であって、
ピクセルの集まりからなるタスクの描画領域を有し、各タスクの固有識別値を、各ピクセルにステンシルピクセル値として格納可能なステンシルバッファと、
ピクセルの集まりからなるタスクの描画領域を有し、各タスクの各ピクセルの色値を、描画領域の各ピクセルにカラーピクセル値として格納可能なカラーバッファと、
前記ステンシルバッファ及び前記カラーバッファの描画領域のピクセルに格納されるステンシルピクセル値及びカラーピクセル値を、描画対象の描画タスクに基づき書き換える３次元描画エンジンと、
前記ステンシルバッファのステンシルピクセル値が、複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件に適合した場合、前記カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値を格納するよう、前記３次元描画エンジンを制御するステンシル優先度制御部と、
を備え、
前記複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件は条件式によって記述され、当該条件式は、
描画対象の描画タスクの固有識別値に対する前記ステンシルバッファに格納済のステンシルピクセル値の関係が、「固有識別値＜ステンシルピクセル値」、「固有識別値＜＝ステンシルピクセル値」、「固有識別値＞ステンシルピクセル値」、「固有識別値＞＝ステンシルピクセル値」のうち選択されたいずれか１つによって表現される関数と、
選択された関数が成立した場合、既存のステンシルピクセル値を当該固有識別値によって書き換える動作と、を含むウィンドウ処理装置。
【請求項２】
請求項１記載のウィンドウ処理装置であって、
前記ステンシル優先度制御部が、前記動作を前記３次元描画エンジンに実行させるウィンドウ処理装置。
【請求項３】
請求項１記載のウィンドウ処理装置であって、
前記条件式は、前記選択された関数が成立しない場合、既存のステンシルピクセル値を維持する動作を含むウィンドウ処理装置。
【請求項４】
複数の描画タスクを実行し、かつ１つのウィンドウ内に該描画タスクに基づく描画を行なうウィンドウ処理装置の制御方法であって、
ピクセルの集まりからなるタスクの描画領域を有したステンシルバッファに、各タスクの固有識別値を、各ピクセルにステンシルピクセル値として格納するステップと、
ピクセルの集まりからなるタスクの描画領域を有したカラーバッファに、各タスクの各ピクセルの色値を、描画領域の各ピクセルにカラーピクセル値として格納するステップと、
前記ステンシルバッファ及び前記カラーバッファの描画領域のピクセルに格納されるステンシルピクセル値及びカラーピクセル値を、描画対象の描画タスクに基づき書き換えるステップと、
前記ステンシルバッファのステンシルピクセル値が、複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件に適合した場合、前記カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値を格納するステップと、
を備え、
前記複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件は条件式によって記述され、当該条件式は、
描画対象の描画タスクの固有識別値に対する前記ステンシルバッファに格納済のステンシルピクセル値の関係が、「固有識別値＜ステンシルピクセル値」、「固有識別値＜＝ステンシルピクセル値」、「固有識別値＞ステンシルピクセル値」、「固有識別値＞＝ステンシルピクセル値」のうち選択されたいずれか１つによって表現される関数と、
選択された関数が成立した場合、既存のステンシルピクセル値を当該固有識別値によって書き換える動作と、を含むウィンドウ処理装置の制御方法。
【請求項５】
請求項４記載のウィンドウ処理装置の制御方法であって、
前記条件式は、前記選択された関数が成立しない場合、既存のステンシルピクセル値を維持する動作を含むウィンドウ処理装置の制御方法。
【請求項６】
複数の描画タスクを実行し、かつ１つのウィンドウ内に該描画タスクに基づく描画を行なうウィンドウ処理装置を制御するためのプログラムであって、当該プログラムはピクセルの集まりからなるタスクの描画領域を有したステンシルバッファに、各タスクの固有識別値を、各ピクセルにステンシルピクセル値として格納する手順と、
ピクセルの集まりからなるタスクの描画領域を有したカラーバッファに、各タスクの各ピクセルの色値を、描画領域の各ピクセルにカラーピクセル値として格納する手順と、
前記ステンシルバッファ及び前記カラーバッファの描画領域のピクセルに格納されるステンシルピクセル値及びカラーピクセル値を、描画対象の描画タスクに基づき書き換える手順と、
前記ステンシルバッファのステンシルピクセル値が、複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件に適合した場合、前記カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値を格納する手順と、
を備え、
前記複数のタスクの各描画領域間の重ね合わせの優先順位に基づき決定された条件は条件式によって記述され、当該条件式は、
描画対象の描画タスクの固有識別値に対する前記ステンシルバッファに格納済のステンシルピクセル値の関係が、「固有識別値＜ステンシルピクセル値」、「固有識別値＜＝ステンシルピクセル値」、「固有識別値＞ステンシルピクセル値」、「固有識別値＞＝ステンシルピクセル値」のうち選択されたいずれか１つによって表現される関数と、
選択された関数が成立した場合、既存のステンシルピクセル値を当該固有識別値によって書き換える動作と、を含むプログラム。
【請求項７】
請求項６記載のプログラムであって、
前記条件式は、前記選択された関数が成立しない場合、既存のステンシルピクセル値を維持する動作を含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウィンドウシステムに適用され、３次元描画処理を行なうウィンドウ処理装置、及びその制御方法に関する。
【背景技術】
【０００２】
現在のコンピュータにおいては、ウィンドウシステムにより種々の表示、操作がなされることが主流となっている。ウィンドウシステムにおいては、ウィンドウと呼ばれる矩形形状等の所定の領域を表示し、そこで種々の処理を行なう。また、複数のウィンドウを表示することにより、複数の処理を同時に行うことが可能となる。
【０００３】
複数のウィンドウを表示する場合において、各ウィンドウには異なるアプリケーションの表示を行うことができる。複数のウィンドウを画面に表示する際に、各ウィンドウのアプリケーションの重なり順が規定され、この重なりに順に合わせた画面表示が行なわれる。
【０００４】
ところで、このような、ウィンドウシステム上において起動される３次元グラフィックスの分野においては、描画する図形等のオブジェクトのマスク処理を行うため、ステンシルバッファというバッファが使用される。ステンシルバッファとは、３次元グラフィックスにおいて、物体の重ね合わせなどにより描画しなくても良い領域を効率よく判定するために用意されたバッファ領域である。ポリゴンを描画する際にステンシルバッファを参照し、ピクセル単位で描画を禁止したり許可したりすることができる。
【０００５】
そして、３次元グラフィックスにおいて、描画される各オブジェクトは異なるアプリケーションで描画されるのが一般的である。このような背景から、３次元グラフィックスで使用するステンシルバッファを、単一のアプリケーションではなく、ウィンドウシステムと連携した複数のアプリケーションが利用することで、複数のアプリケーションにより描画されたオブジェクトの重ね合わせを実現する。
【特許文献１】特許３４１３２０１号
【非特許文献１】論文「Window Clipping Methods in Graphics Accelerators」、出典「Computer Graphics and Applications, IEEE , Volume: 11 , Issue: 3 , May 1991」
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述のような構成では、各描画オブジェクトのアプリケーション毎に描画メモリを確保し、最後に各オブジェクトを合成することとなる。このような方法下では、各アプリケーション毎に実際に表示される画像を確保するカラーバッファが必要となり、そのために必要なメモリの量が増大することとなる。また、オブジェクトを合成するための専用の装置が必要となる。
【０００７】
本発明は、ウィンドウシステムと協同して、簡易な構成にて３次元描画を実現可能なウィンドウ処理装置を提供する。
【課題を解決するための手段】
【０００８】
本発明は、複数の描画タスクを実行し、かつ１つのウィンドウ内に該描画タスクに基づく描画を行なうウィンドウ処理装置を提供する。該装置は、ピクセルの集まりからなるタスクの描画領域を有し、各タスクの固有識別値を、各ピクセルにステンシルピクセル値として格納可能なステンシルバッファと、ピクセルの集まりからなるタスクの描画領域を有し、各タスクの各ピクセルの色値を、描画領域の各ピクセルにカラーピクセル値として格納可能なカラーバッファと、前記ステンシルバッファ及び前記カラーバッファの描画領域のピクセルに格納されるステンシルピクセル値及びカラーピクセル値を、描画対象の描画タスクに基づき書き換える３次元描画エンジンと、前記ステンシルバッファのステンシルピクセル値が設定された条件に適合した場合のみ、前記カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値を格納するよう、前記３次元描画エンジンを制御するステンシル優先度制御部と、を備える。
【０００９】
本発明によれば、ステンシルバッファにおいて、現実の画像を実現するためのカラーバッファの所定領域に描画対象としてタスクが格納される否かの情報が設定され（マスクの作成）、当該情報を利用して単一のカラーバッファ上に最終的な表示画像の色情報が設定される。したがって、タスク毎にカラーバッファを用意する必要がなくなり、結果的に省メモリにて３次元の描画装置を提供することが可能となる。
【００１０】
前記設定された条件が条件式によって記述される場合、当該条件式は、前記ステンシルピクセル値と実際に描画される描画タスクの固有識別値が等しいという関数と、前記ステンシルバッファに格納されたステンシルピクセル値は、他の描画タスクの固有識別値によって書き換えられないという動作と、を含む。
【００１１】
この構成下においては、各タスクを合成するための別の装置を盛り込む必要がなくなる。
【００１２】
また、前記設定された条件が条件式によって記述される場合、当該条件式は、描画対象の描画タスクの固有識別値に対する前記ステンシルバッファに格納済のステンシルピクセル値の関係が、「固有識別値＜ステンシルピクセル値」、「固有識別値＜＝ステンシルピクセル値」、「固有識別値＞ステンシルピクセル値」、「固有識別値＞＝ステンシルピクセル値」のうち選択されたいずれか１つによって表現される関数と、選択された関数が成立した場合、既存のステンシルピクセル値を当該固有識別値によって書き換える動作と、を含む。この場合、前記ステンシル優先度制御部が、前記動作を前記３次元描画エンジンに実行させる。また、前記条件式は、前記選択された関数が成立しない場合、既存のステンシルピクセル値を維持する動作を含むものである。
【００１３】
この構成下においては、ステンシルバッファに格納された固有識別値が優先順位を表現する役割を果たし、当該値を参照することにより、描画順序の制約をなくすことが可能となり、高速化が可能となる。
【００１４】
さらに本発明は、複数の描画タスクを実行し、かつ１つのウィンドウ内に該描画タスクに基づく描画を行なうウィンドウ処理装置の制御方法をも提供する。該方法は、ピクセルの集まりからなるタスクの描画領域を有したステンシルバッファに、各タスクの固有識別値を、各ピクセルにステンシルピクセル値として格納するステップと、ピクセルの集まりからなるタスクの描画領域を有したカラーバッファに、各タスクの各ピクセルの色値を、描画領域の各ピクセルにカラーピクセル値として格納するステップと、前記ステンシルバッファ及び前記カラーバッファの描画領域のピクセルに格納されるステンシルピクセル値及びカラーピクセル値を、描画対象の描画タスクに基づき書き換えるステップと、前記ステンシルバッファのステンシルピクセル値が設定された条件に適合した場合のみ、前記カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値を格納するステップと、を備える。このような方法をコンピュータに実行させるプログラムも本発明に含まれる。
【発明の効果】
【００１５】
本発明によれば、省メモリかつ簡易な構成にて３次元の描画装置を提供することが可能となり、３次元描画処理を高速化することも可能となる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明によるウィンドウ描画処理システムの構成例の一つを示すブロック図である。このウィンドウ描画処理システム１００は、操作部１と、タスク保存部３と、ウィンドウシステム５と、ステンシル優先度制御部７と、３次元描画エンジン９と、フレームバッファ１１と、表示制御部１３と、表示部１５とを備えている。ウィンドウ描画処理システム１００内にて、特にステンシル優先度制御部７と、３次元描画エンジン９と、フレームバッファ１１が、ウィンドウシステム５と協調して３次元描画処理を行なうウィンドウ処理装置を構成する。
【００１７】
操作部１は、ユーザが、ウィンドウ描画処理システム１００に種々の操作を入力する部分であり、キーボード、マウス、音声入力装置等により構成される。この実施形態では、操作部１は後述するタスク保存部３の各タスクを操作する役割を果たす。
【００１８】
タスク保存部３は、所定の画像（オブジェクト、背景等を含む）を描画する各種の描画タスク（以下、「タスク」という）を保存している。この実施形態では３種類のタスク３ａ，３ｂ，３ｃが保存されている。ここでいう「タスク」とは、コンピュータのＯＳ（オペレーティングシステム）から見た処理の実行単位をいう。通常はスレッドが実行単位となるが、ＯＳによってはプロセス（複数のスレッドを含むプログラム全体）を1つの実行単位としてみる場合もある。
【００１９】
一つのアプリケーションソフトが行なっている作業全体を一つのタスクと扱う場合が多く、この場合は「プロセス」に近い意味合いになる。同じアプリケーション内で実行されていても、同時に実行できない作業単位を一つのタスクと扱うようなこともあり、この場合は「スレッド」と似た意味合いになる。
【００２０】
特に本発明においては、「タスク」という場合、アプリケーションとほぼ同等の意味を有する。しかしながらとくにその意味は限定はされない。
【００２１】
ウィンドウシステム５は、ディスプレイ上に画像、文字、図形、記号等の種々の情報、ユーザの入力した操作を表示する、現在のコンピュータにおいて主流のシステムである。ウィンドウシステム５は、ウィンドウと呼ばれる矩形形状等の所定の領域を表示部１５上に表示し、この領域内で種々表示がなされ、ユーザが所定の操作を入力する対象となる。また、複数のウィンドウを表示することにより、複数の処理を同時に行うことが可能となる。Windows（登録商標）やMacintosh（登録商標）は、このしくみを利用した操作環境を持つ。
【００２２】
複数のウィンドウを表示する場合において、各ウィンドウには異なるアプリケーションの表示を行うことができる。複数のウィンドウを画面に表示する際に、各ウィンドウのアプリケーションの重なり順が規定され、この重なりに順に合わせた画面表示が行なわれる。本実施形態では、タスク保存部３に保存されたタスク３ａ、タスク３ｂ、タスク３ｃが所定の順で重ねられた上で描画され、最終的に表示部１５上に表示される。
【００２３】
ステンシル優先度制御部７は、ＣＰＵ（Central Processing Unit）等の一般的な演算処理装置、該演算処理装置により実行されるプログラム等を記憶したメモリ等を含んで構成され、後述するように、ウィンドウシステム５を参照して、各タスクの描画優先度を抽出し、３次元描画エンジン９に設定するものである。すなわちステンシル優先度制御部７は、前述したプログラムの記述による処理の下、３次元描画エンジン９を制御する。
【００２４】
３次元描画エンジン９は、ＣＰＵ、ＤＳＰ（Digital Signal Processor）等の一般的な演算処理装置より構成され、後述するように、フレームバッファ１１のステンシルバッファ１１ｃに予め設定されたステンシルピクセル値と、前述した描画優先度を所定の比較関数の下で比較し、カラーバッファ１１ａに優先度に沿った各タスクのオブジェクトを書き込む。
【００２５】
フレームバッファ１１は、３次元描画エンジン９により描画されたグラフィックスイメージを保持するメモリ領域より構成される。図２に示すように、フレームバッファ１１は、カラーバッファ１１ａと、デプスバッファ（Ｚバッファ）１１ｂと、ステンシルバッファ１１ｃとを含む。各バッファ１１ａ〜１１ｃは、一般的に同じメモリ容量をもつが、メモリ容量は異なってもよい。
【００２６】
カラーバッファ１１ａは、表示画像の所定のピクセル（画素）の色情報（カラーピクセル値）を保持するバッファである。本実施形態のカラーピクセル値は、３原色であるＲ（赤）Ｇ（緑）Ｂ（青）各々の階調度と、アルファ値によって表現される不透明度を持つ。
【００２７】
デプスバッファ１１ｂは、表示画像の所定のピクセルの奥行き情報（Ｚ値）を保持するバッファである。３次元グラフィックスにおける隠面消去（視線の手前にある物体で隠される物体や面を検出して描画しないようにする処理）では、画像を構成する各ピクセルに色情報のほかに奥行きに関する情報を持たせ、描画の際には同じ座標のピクセルの奥行き情報を比較して、最も手前にあるものだけを画面に書き込む。デプスバッファ１１ｂは、このZピクセル値を保持する。
【００２８】
ステンシルバッファ１１ｃは、表示画像の所定のピクセルのマスク情報（ステンシルピクセル値）を保持するバッファである。マスクバッファ、ウィンドウＩＤバッファ等とも呼ばれ、３次元グラフィックスにおいて、物体の重ね合わせなどにより描画しなくても良い領域（マスク領域）を判定するために用意されるバッファである。ポリゴンを描画する際にステンシルバッファ１１ｃを参照し、ピクセル単位で描画を禁止したり許可したりすることが可能となる。デプスバッファ１１ｂに似ているが、デプスバッファは物体のＺ値（奥行き）に関する情報を保持するに対し、ステンシルバッファには任意の値を設定することができる。
【００２９】
ステンシルバッファでの描画の禁止、許可の判定には上述した比較関数が用いられる。比較関数には、「＝（等しい）」、「／＝（等しくない）」、「＜（より小さい）」、「＞（より大きい）」、「＜＝（より小さいか等しい；以下）」、「＞＝（より大きいか等しい；以上）」等がある。この比較関数は、ステンシルバッファ１１ｃの各ピクセル毎に記述されたステンシルピクセル値（例えば左辺）と、描画対象であるタスクに個別に与えられた固有識別値（例えば右辺）を比較し、いずれが優先するかを判定するための基準としての役割を果たす。すなわち、前述した描画優先度の判定基準としての役割を果たす。
【００３０】
表示制御部１３は、フレームバッファ１１のカラーバッファ１１ａから得られたカラーピクセル値の情報に基づき、表示部１５の各ピクセルを駆動し、発光させるための回路であり、種々のドライブ回路、スイッチング回路等を備えている。表示部１５は液晶表示ディスプレイ等より構成され、種々の画像情報を表示する。
【００３１】
（第１の実施形態）
本発明のウィンドウ処理装置によるウィンドウ描画処理の一実施形態を、図３を用いて説明する。本実施形態は、予めステンシルバッファに各タスク固有の識別値を格納する。言い換えると、ステンシルバッファ上に該固有識別値によるマスクを作成して、ＷＩＤ（ウィンドウＩＤ；Window ID）のように使用することにより、少ないメモリ容量で、かつ一般的な３次元描画エンジンのみで複数タスクを重ね合わせる処理を行なう。
【００３２】
図３の例では、タスクＡ、タスクＢ、タスクＣという３つのタスクが描画される描画対象タスクであり（図１のタスク３ａ〜３ｃに対応）、各々のタスクにＩＤ＝１、ＩＤ＝２、ＩＤ＝３という固有のＷＩＤが予め付与されている。ＷＩＤとは、各タスクのウィンドウ毎に付与された固有識別値（ＩＤ）のことをいい、ウィンドウシステム５において予め付与される。
【００３３】
図３（ａ）は、ステンシルバッファ１１ｃ上のピクセル（ステンシルピクセル）の集まりからなる描画領域に、各タスク固有のＷＩＤが格納された状態を示す。すなわち、描画領域の各ステンシルピクセル値は、当該タスクの固有ＷＩＤとなる。
【００３４】
この結果、図３（ｂ）において斜線で示すように、各タスクのＷＩＤが格納された領域以外の領域には、あたかもマスクがなされるかのような処置が施される、すなわち、各タスクの描画領域以外の領域の各ピクセルには、当該タスクのカラーピクセル値を書き込むことはできない。図の例では、ステンシルバッファ上で「ＩＤ＝１」が付与された領域では、ＩＤが１のタスクＡの書き込み作業がなされ、それ以外の斜線領域はマスクされる。同様に、ステンシルバッファ上で「ＩＤ＝２」が付与された領域では、ＩＤが２のタスクＢの書き込み作業がなされ、それ以外の斜線領域はマスクされる。「ＩＤ＝３」が付与された領域では、ＩＤが３のタスクＣの書き込み作業がなされ、それ以外の斜線領域はマスクされる。
【００３５】
図３（ｃ）は、上述のような作業を経て、カラーバッファ１１ａに生成された最終画像を示す。この画像が、表示制御部１３を経て表示部１５に表示される。
【００３６】
本実施形態においては、描画されるタスクの重なり順位に基づき、ＷＩＤを用いて描画対象領域以外の領域を適切にマスクすることが必要になる。また、使用される比較関数は「＝（等しい）」（同値）であり、ステンシルバッファに格納されたステンシルピクセル値と各タスクのＷＩＤが一致した場合のみ、当該タスクを表示する。また、ステンシルバッファに格納されたステンシルピクセル値は変更されることはない（不変動作；KEEP）。すなわち、ステンシルバッファに格納されたステンシルピクセル値が予め設定された条件に適合した場合のみ、カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値が格納される。このような操作は、ステンシル優先度制御部７が、３次元描画エンジン９を制御することによって行なう。
【００３７】
上述したような予め設定された条件は条件式によって記述される。本実施形態においては、当該条件式は、ステンシルピクセル値と実際に描画される描画タスクの固有識別値が等しいという関数（同値関数）と、ステンシルバッファに格納されたステンシルピクセル値は、他の描画タスクの固有識別値によって書き換えられないという動作（不変動作）とを含む。このような関数と動作を含む条件式は、３次元グラフィックスの分野では一般的に用いられるものである。
【００３８】
以下、上述の実施形態のウィンドウ描画処理の手順を、図４のフローチャートを用いて説明する。前提として、ユーザが操作部１を介して各タスクを生成しており、この際、各タスクごとに付与された描画領域、ＷＩＤ等の属性情報を含むウィンドウ定義情報が与えられる。このようなウィンドウ定義情報は、ウィンドウシステム５に格納されている。
【００３９】
まず、ステンシル優先度制御部７が、ウィンドウシステム５から、ウィンドウ定義情報を取得し、タスク毎の「描画領域」と「ＷＩＤ」を抽出する。そしてステンシル優先度制御部７は、３次元描画エンジン９に対し、フレームバッファ１１のステンシルバッファ１１ｃ上の描画領域を、「ステンシルピクセル値＝ＷＩＤ」で塗潰すよう命令を発行する（ステップＳ１０１）。
【００４０】
さらにステンシル優先度制御部７は、ウィンドウシステム５を参照して、描画するタスク数をカウントする。ここで、描画する対象のタスクを変数ｉとし、変数ｉ＝０として、カウントを開始する（ステップＳ１０２）。
【００４１】
カウントの対象となったタスクｉは、描画開始の旨の信号をステンシル優先度制御部７に送信する（ステップＳ１０３）。ここから各タスク毎の描画処理に入る（ステップＳ１１１まで）。
【００４２】
描画開始の旨の信号を受け、ステンシル優先度制御部７は、比較される２つの数値が「同値」の場合のみ所定の動作を行なう比較関数（EQUAL「＝」）を３次元描画エンジン９に設定する。ここで、比較される２つの数値とは、ステップＳ１０１でステンシルバッファ１１ｃに設定されたステンシルピクセル値と、タスクｉのＷＩＤ（参照値ｒｅｆ）である。さらにステンシル優先度制御部７は、比較成立時すなわち２つの数値が同値の場合の所定動作として、「変更無し」を３次元描画エンジン９に設定する（ステップＳ１０４）。
【００４３】
比較関数及び動作が設定されると、３次元描画エンジン９は、タスクｉの描画を開始する。ここでは、描画対象となるピクセルを変数ｊで表現し、ｊ＝０から描画を開始する（ステップＳ１０５）。また、３次元描画エンジン９は、ピクセルｊに対応するステンシルバッファ上のステンシルピクセル値をｓｐと定義する（ステップＳ１０６）。
【００４４】
３次元描画エンジン９は、ステップＳ１０４で設定した参照値ｒｅｆと、ステンシルピクセル値ｓｐが等しくなるか（ｒｅｆ＝ｓｐ）否かを判定する（ステップＳ１０７）。そしてこの条件が満たされたと判定すると（ステップＳ１０７；ＹＥＳ）、３次元描画エンジン９は、ピクセルｊをカラーバッファ１１ａに格納し（ステップＳ１０８）、カラーピクセル値として設定する。満たされないと判定した場合（ステップＳ１０７；ＮＯ）、ピクセルｊをカラーバッファ１１ａに格納しない。
【００４５】
そして、３次元描画エンジン９は、ピクセルｊがタスクｉにおいて描画される最後のピクセルか否かを判定する（ステップＳ１０９）。最後のピクセルであると判定されなかった場合（ステップＳ１０９；ＮＯ）、３次元描画エンジン９は、対象を次のピクセルに移し（ステップＳ１１０）、再びステップＳ１０６以降の処理が行なわれる。
【００４６】
また、３次元描画エンジン９が、ステップＳ１０９でピクセルｊが最後の描画対象ピクセルであると判定した場合（ステップＳ１０９；ＹＥＳ）、描画対象となっているタスクｉ自身が、描画終了の旨の信号をステンシル優先度制御部７に送信する（ステップＳ１１１）。
【００４７】
この信号を受けたステンシル優先度制御部７は、描画対象のタスクｉが描画する最終タスクか否か判定する（ステップＳ１１２）。最終タスクであると判定された場合（ステップＳ１１２；ＹＥＳ）、総ての処理が終了し、以後表示制御部１３、表示部１５により実際の画像表示が行なわれる。一方、最終タスクであると判定されなかった場合（ステップＳ１１２；ＮＯ）、対象を次のタスクに移し（ステップＳ１１３）、再びステップＳ１０３以降の処理が行なわれる。
【００４８】
従来の３次元グラフィックスにおいては、タスク毎にカラーバッファを用意し、各カラーバッファ上において個別に生成された各タスクの画像を、ウィンドウシステムで管理された重ね合わせ情報に基づき合成することにより最終画像を生成していた。一方、上述した本発明の実施形態によれば、ステンシルバッファ上に各タスクの描画領域を指定しており、各タスクに共有された単一のカラーバッファ上で描画を行なうこととしたため、必要なメモリ容量を削減することができる。
【００４９】
また、従来の３次元グラフィックスにおいては、３次元描画エンジンとは別に、各タスクの合成用の装置（２次元描画エンジン等）が必要であったが、ステンシルバッファにタスクＩＤを格納することにより、そのような別の装置を省略することができ、より簡易かつ安価なシステムにて３次元グラフィックスを実現することができる。
【００５０】
（第２の実施形態）
次に、本発明のウィンドウ描画処理システムにおけるウィンドウ描画処理の他の実施形態を、図５及び図６を用いて説明する。第１の実施形態においては、ステンシルバッファに格納されたステンシルピクセル値は不変であった。本実施形態は、ステンシルバッファのステンシルピクセル値に、ウィンドウの重なり順またはタスク優先度を適用する。言い換えると、不等号等の比較関数により、既存のステンシルピクセル値と描画対象であるタスクの固有識別値を比較し、条件成立時に更新する。この構成により、少ないメモリ容量で、かつ一般的な３次元描画エンジンのみで複数タスクの優先順位を考慮しつつ、重ね合わせ処理を行なうものである。
【００５１】
本実施形態では、タスクＡ、タスクＢという２つのタスクが描画され、各々のタスクにＩＤ＝１、ＩＤ＝２という固有のＷＩＤが予め付与されている。また、これらタスク以外の領域、すなわち背景領域にはＩＤ＝９というＩＤが予め与えられている。
【００５２】
また、本実施形態においては、比較関数として、「＜＝（より小さいか等しい；以下）」（LEQUAL；Less Than Equal）が用いられる。そして当該比較関数の条件が満たされたとき実行される動作として、「上書き（置き換え）」（REPLACE）が用いられる。そして、ＩＤの最大値を９、最小値を１に設定し、最大値９により、ステンシルバッファはクリアされる。すなわち最大値９が設定された領域には描画されるタスクはない。
【００５３】
図５は、タスクＡ、タスクＢのうち、タスクＡの描画の準備が先に完了した場合の描画手順を説明する。図５（ａ）は、表示部に表示される画像そのものを表現する色値を格納したカラーバッファ１１ａ、最大値ＩＤである９が予め格納された（最大値９をステンシル値に設定することによりクリアされた）ステンシルバッファ１１ｃを示す。また、表示画像の所定のピクセルの奥行き情報（Ｚ値）を保持するデプスバッファ１１ｂも別途用意されている。
【００５４】
次に、図５（ｂ）に示すように、タスクＡのＩＤは２であり、ステンシルバッファのクリア値ＩＤ＝９より小さく、比較関数LEQUAL下では、タスクＡのＩＤがクリア値９より優先するため（２＜９）、動作REPLACEが発動され、ステンシルバッファにおけるタスクＡの描画領域にはＩＤ＝２のステンシルピクセル値が設定される。連動してタスクＡのカラーピクセル値がカラーバッファの対応領域に格納される。
【００５５】
また、タスクＢのＩＤは１であり、タスクＡのＩＤ＝２、ステンシルバッファのクリア値ＩＤ＝９より小さい。この場合、比較関数LEQUAL下では、タスクＢのＩＤがタスクＡのＩＤ＝２、ステンシルバッファのクリア値９より優先するため（１＜２，１＜９）、動作REPLACEが発動され、ステンシルバッファにおけるタスクＢの描画領域にはＩＤ＝１が設定される。連動してタスクＢのカラーピクセル値がカラーバッファの対応領域に格納される。
【００５６】
この結果、図５（ｃ）に示すように、ステンシルピクセル値が１の領域に対応するカラーバッファの領域にはタスクＢが描画され、ステンシル値が２の領域に対応するカラーバッファの領域にはタスクＡが描画される。最終的なカラーバッファ、ステンシルバッファは、図５（ｄ）に示すようになり、タスクＢ（ＩＤ＝１）の図形が、タスクＡ（ＩＤ＝２）の図形の手前に配置された描画がなされる。この画像が、表示制御部１３を経て表示部１５に表示される。
【００５７】
図６は、タスクＡ、タスクＢのうち、タスクＢの描画の準備が先に完了した場合の描画手順を説明する。図６（ａ）は図５（ａ）と同じ状態を示す。
【００５８】
次に、図６（ｂ）に示すように、タスクＢのＩＤは１であり、ステンシルバッファのクリア値ＩＤ＝９より小さく、比較関数LEQUAL下では、タスクＢのＩＤがステンシルピクセル値のＩＤより優先するため（１＜９）、動作REPLACEが発動され、ステンシルバッファにおけるタスクＢの描画領域にはＩＤ＝１のステンシルピクセル値が設定される。連動してタスクＢのカラーピクセル値がカラーバッファの対応領域に格納される。
【００５９】
また、タスクＡのＩＤは２であり、タスクＢのＩＤ＝１より大きい。この場合、比較関数LEQUAL下では、タスクＢのＩＤがタスクＡのＩＤより優先するため、動作REPLACEが発動されず、既にタスクＢが描画されている領域においてはＩＤ＝１が維持され、ＩＤ＝２のタスクＡで上書き描画されることはない。
【００６０】
一方、タスクＡのＩＤは２であり、ステンシルバッファのクリア値ＩＤ＝９より小さく、比較関数LEQUAL下では、タスクＡのＩＤがステンシルバッファのクリア値９より優先するため（２＜９）、動作REPLACEが発動され、ステンシルバッファにおけるタスクＡの描画領域にはＩＤ＝２が設定される。連動してタスクＡのカラーピクセル値がカラーバッファの対応領域に格納される。
【００６１】
この結果、図６（ｃ）に示すように、ステンシル値が１の領域、すなわちタスクＢが描画される領域には、ステンシルピクセル値ＩＤ＝１によるマスクが施され、タスクＡは描画されない。一方それ以外の領域において、タスクＡが描画されるべき領域は、ステンシルピクセル値が２となり、タスクＡが描画される。最終的なカラーバッファ、ステンシルバッファは、図５（ｄ）と同じく図６（ｄ）に示すようになり、タスクＢの図形が、タスクＡの図形の手前に配置された描画がなされる。この画像が、表示制御部１３を経て表示部１５に表示される。
【００６２】
すなわち、優先順位の高いＩＤをもつタスクで描いた領域は、より優先順位の低いＩＤのタスクで上書きすることはできないため、意図した重ね合わせの描画を実現することができる。
【００６３】
本実施形態では、比較関数に「＜＝」（LEQUAL）を用いるとともに、ステンシルバッファのクリアを最大値（本例では９）で行うことにした。もちろん、比較関数に「＞＝（より大きいか等しい；以上）」（MEQUAL；More Than Equal）を用い、ステンシルバッファのクリアを最小値（例えば０）で行うように制御してもよい。
【００６４】
以下、上述の実施形態のウィンドウ描画処理の手順を、図７のフローチャートを用いて説明する。前提として、ユーザが操作部１を介して各タスクを生成しており、この際、各タスクごとに付与された描画領域、ＷＩＤ等の属性情報を含むウィンドウ定義情報が与えられる。このようなウィンドウ定義情報は、ウィンドウシステム５に格納されている。
【００６５】
まず、ステンシル優先度制御部７が、３次元描画エンジン９に対し、ステンシルピクセル値の最大値でフレームバッファ１１のステンシルバッファ１１ｃをクリアするよう命令を発行する（ステップＳ２０１）。
【００６６】
さらにステンシル優先度制御部７は、ウィンドウシステム５を参照して、描画するタスク数をカウントする。ここで、描画する対象のタスクを変数ｉとし、変数ｉ＝０として、カウントを開始する（ステップＳ２０２）。
【００６７】
カウントの対象となったタスクｉは、描画開始の旨の信号をステンシル優先度制御部７に送信する（ステップＳ２０３）。ここから各タスク毎の描画処理に入る（ステップＳ２１２まで）。
【００６８】
描画開始の旨の信号を受け、ステンシル優先度制御部７は、ウィンドウシステム５から参照値ｒｅｆとしてのタスクｉの重ね合わせの優先度（タスクのＩＤ）を取得する。さらにステンシル優先度制御部７は、比較関数「＜＝」と、比較成立時すなわち２つの数値の関係が「＜＝」の場合の所定動作として、「上書き」を３次元描画エンジン９に設定する（ステップＳ２０４）。
【００６９】
比較関数及び動作が設定されると、３次元描画エンジン９は、タスクｉの描画を開始する。ここでは、描画対象となるピクセルを変数ｊで表現し、ｊ＝０から描画を開始する（ステップＳ２０５）。また、３次元描画エンジン９は、ピクセルｊに対応するステンシルバッファ上のステンシルピクセル値をｓｐと定義する（ステップＳ２０６）。
【００７０】
３次元描画エンジン９は、ステップＳ２０４で設定した参照値ｒｅｆと、ステンシルピクセル値ｓｐが比較関数の条件（ｒｅｆ＜＝ｓｐ）を満たすか否かを判定する（ステップＳ２０７）。そしてこの条件が満たされたと判定すると（ステップＳ２０７；ＹＥＳ）、３次元描画エンジン９は、ピクセルｊをカラーバッファ１１ａに格納し（ステップＳ２０８）、カラーピクセル値として設定する。ただし、デプスバッファ使用時はデプステストの結果による。そして、３次元描画エンジン９は、ステンシルピクセル値ｓｐを参照値ｒｅｆ（タスクのＩＤ）で上書きする（ステップＳ２０９）。一方、ステップＳ２０７で条件が満たされないと判定した場合（ステップＳ２０７；ＮＯ）、ピクセルｊをカラーバッファ１１ａに格納しない。
【００７１】
そして、３次元描画エンジン９は、ピクセルｊがタスクｉにおいて描画される最後のピクセルか否かを判定する（ステップＳ２１０）。最後のピクセルであると判定されなかった場合（ステップＳ２１０；ＮＯ）、３次元描画エンジン９は、対象を次のピクセルに移し（ステップＳ２１１）、再びステップＳ２０６以降の処理が行なわれる。
【００７２】
また、３次元描画エンジン９が、ステップＳ２１０でピクセルｊが最後の描画対象ピクセルであると判定した場合（ステップＳ２１０；ＹＥＳ）、描画対象となっているタスクｉ自身が、描画終了の旨の信号をステンシル優先度制御部７に送信する（ステップＳ２１２）。
【００７３】
この信号を受けたステンシル優先度制御部７は、描画対象のタスクｉが描画する最終タスクか否か判定する（ステップＳ２１３）。最終タスクであると判定された場合（ステップＳ２１３；ＹＥＳ）、総ての処理が終了し、以後表示制御部１３、表示部１５により実際の画像表示が行なわれる。一方、最終タスクであると判定されなかった場合（ステップＳ２１３；ＮＯ）、対象を次のタスクに移し（ステップＳ２１４）、再びステップＳ２０３以降の処理が行なわれる。
【００７４】
第２の実施形態においても、ステンシルバッファに格納されたステンシルピクセル値が予め設定された条件に適合した場合のみ、カラーバッファの描画領域のピクセルに、当該条件に適合したステンシルピクセル値に対応する描画タスクの対応するピクセルのカラーピクセル値が格納される。このような操作は、ステンシル優先度制御部７が、３次元描画エンジン９を制御することによって行なう。
【００７５】
上述したような予め設定された条件は条件式によって記述される。本実施形態においては、当該条件式は、描画対象の描画タスクの固有識別値に対する前記ステンシルバッファに格納済のステンシルピクセル値の関係が「固有識別値＜＝ステンシルピクセル値」で表現される関数と、当該関数が成立した場合、既存のステンシルピクセル値を当該固有識別値によって書き換える動作と、を含む。ただし関数には、「固有識別値＜ステンシルピクセル値」、「固有識別値＜＝ステンシルピクセル値」、「固有識別値＞ステンシルピクセル値」、「固有識別値＞＝ステンシルピクセル値」で表現されるものも含めることができる。このような関数と動作を含む条件式は、３次元グラフィックスの分野では一般的に用いられるものである。
【００７６】
従来の３次元グラフィックスにおいては、タスク毎にカラーバッファを用意し、各カラーバッファ上において個別に生成された各タスクの画像を合成することにより最終画像を生成していた。一方、上述した本発明の実施形態によれば、ステンシルバッファ上に重ね合わせの優先順位（＝タスクのＩＤ）を用いる一方、カラーバッファを共有することとしたため、必要なメモリ容量を削減することができる。
【００７７】
また、上述した従来の合成においては、下の画像の描画の後、上の画像を重ねつつ描画する場合、上の画像のある領域の色を透明とみなし、重なっている下の画像の色を上書きしない操作（カラーキーともいう）が必要であり、一方、上の画像の描画の後、下の画像を描画していく場合、マスクが必要であった。本実施形態においては、ステンシルバッファに格納された優先順位（＝タスクのＩＤ）を参照することにより、描画順序の制約をなくすことが可能となり、カラーキー、マスクの演算を省略することも可能となり、高速化が可能となる。
【００７８】
例えば、図５及び図６を用いて説明したように、複数のタスクがある場合、先に描画の準備ができた方から描画を始めることが可能となり、かつ同じ描画結果を得ることが可能となる。特に３次元描画エンジンは、全体システムと非同期である事が多いため、高速化が可能となる。
【００７９】
図１に示したウィンドウ描画処理システムは、一体のパーソナルコンピュータにて実現することが可能である。また、各部分をネットワーク上に分散配置することも可能である。
【００８０】
以上、本発明の各種実施形態を説明したが、本発明は前記実施形態において示された事項に限定されず、明細書の記載、並びに周知の技術に基づいて、当業者がその変更・応用することも本発明の予定するところであり、保護を求める範囲に含まれる。
【産業上の利用可能性】
【００８１】
本発明を適用することにより、３次元グラフィックスにおいて、装置に必要なメモリ容量を削減するとともに、装置構成を簡略化し、かつ描画の高速化が実現される。
【図面の簡単な説明】
【００８２】
【図１】本発明のウィンドウ描画処理システムの構成例を示すブロック図。
【図２】フレームバッファの構成を示すブロック図。
【図３】第１の実施形態のウィンドウ描画処理の説明図。
【図４】第１の実施形態のウィンドウ描画処理の手順を示すフローチャート。
【図５】第２の実施形態のウィンドウ描画処理の説明図。
【図６】第２の実施形態のウィンドウ描画処理の説明図。
【図７】第２の実施形態のウィンドウ描画処理の手順を示すフローチャート。
【符号の説明】
【００８３】
１      操作部
３      タスク保存部
５      ウィンドウシステム
７      ステンシル優先度制御部
９      ３次元描画エンジン
１１    フレームバッファ
１１ａ  カラーバッファ
１１ｂ  デプスバッファ（Ｚバッファ）
１１ｃ  ステンシルバッファ
１３    表示制御部
１５    表示部
１００  ウィンドウ描画処理システム
【図１】
0004761900.tif 000002
【図２】
0004761900.tif 000003
【図３】
0004761900.tif 000004
【図４】
0004761900.tif 000005
【図５】
0004761900.tif 000006
【図６】
0004761900.tif 000007
【図７】
0004761900.tif 000008