(57)【特許請求の範囲】
【請求項１】
画面に表示する表示情報を表示画素単位で保持するフレームバッファと、
各描画状態を定める少なくとも１の描画パラメータで構成される描画パラメータ群に付与した整数値の描画状態番号を表示画素毎に描画状態番号情報として記憶する描画状態番号記憶手段と、
描画処理命令を受けて、グラフィカルユーザインタフェースの部品を表示する表示画素に対応する前記描画状態番号記憶手段の記憶領域に当該グラフィカルユーザインタフェース部品に応じた前記描画パラメータ群に付与された前記描画状態番号を書き込む少なくとも１のグラフィカルユーザインタフェース部品描画処理手段と、
描画実行命令を受けて、前記描画状態番号記憶手段に記憶された前記描画状態番号に対応する前記描画パラメータ群を構成する各描画パラメータを設定し、この設定に応じた表示情報を前記描画状態番号記憶手段で同じ描画状態番号の表示画素に対応する前記フレームバッファの記憶領域に一括して書き込む描画実行手段と、
描画時に前記グラフィカルユーザインタフェース部品描画処理手段に対して描画処理命令を発行し、その後、前記描画実行手段に描画実行命令を発行するウィンドウ管理手段と、
を有することを特徴とするグラフィカルユーザインタフェース表示情報作成システム。
【請求項２】
前記描画状態番号と前記描画パラメータ群との対応関係を記憶する番号・描画状態対応記憶手段を有し、
前記グラフィカルユーザインタフェース部品描画処理手段は、同じ組み合わせの描画パラメータを持つ描画パラメータ群が前記番号・描画状態対応記憶手段になければ、新しい描画状態番号を採番し、この描画状態番号と前記描画パラメータ群との対応関係を前記番号・描画状態対応記憶手段に追加して書き込み、
前記描画実行手段は、前記番号・描画状態対応記憶手段の情報に基づき前記描画状態番号に対応する前記描画パラメータ群を抽出し、この描画パラメータ群の中の各描画パラメータを設定し、この設定に応じた表示情報を前記描画状態番号記憶手段で同じ描画状態番号の表示画素に対応する前記フレームバッファの記憶領域に書き込むことを特徴とする請求項１記載のグラフィカルユーザインタフェース表示情報作成システム。
【請求項３】
前記描画状態番号記憶手段は、ある画素が描画対象か否かを表示画素単位で制御するために用意されるステンシルバッファ上に構築されることを特徴とする請求項２記載のグラフィカルユーザインタフェース表示システム。
【請求項４】
前記グラフィカルユーザインタフェース部品描画処理手段は、再描画時において前回の描画時から前記グラフィカルユーザインタフェース部品の状態が変化していない場合に描画状態番号記憶手段を更新しないことを特徴とする請求項３記載のグラフィカルユーザインタフェース表示情報作成システム。
【請求項５】
前記フレームバッファの表示情報は、前記ウィンドウ管理手段を介して読み書きされることを特徴とする請求項１ないし４のいずれかに記載のグラフィカルユーザインタフェース表示情報作成システム。
【請求項６】
前記描画状態番号記憶手段の描画状態番号情報は、前記ウィンドウ管理手段を介して読み書きされることを特徴とする請求項１ないし５のいずれかに記載のグラフィカルユーザインタフェース表示情報作成システム。
【請求項７】
グラフィカルユーザインタフェースを有する計算機を、
画面に表示する表示情報を表示画素単位で保持するフレームバッファと、
各描画状態を定める少なくとも１の描画パラメータで構成される描画パラメータ群に付与した整数値の描画状態番号を表示画素毎に描画状態番号情報として記憶する描画状態番号記憶手段と、
描画処理命令を受けて、グラフィカルユーザインタフェースの部品を表示する表示画素に対応する前記描画状態番号記憶手段の記憶領域に当該グラフィカルユーザインタフェース部品に応じた前記描画パラメータ群に付与された前記描画状態番号を書き込む少なくとも１のグラフィカルユーザインタフェース部品描画処理手段と、
描画実行命令を受けて、前記描画状態番号記憶手段に記憶された前記描画状態番号に対応する前記描画パラメータ群を構成する各描画パラメータを設定し、この設定に応じた表示情報を前記描画状態番号記憶手段で同じ描画状態番号の表示画素に対応する前記フレームバッファの記憶領域に一括して書き込む描画実行手段と、
描画時に前記グラフィカルユーザインタフェース部品描画処理手段に対して描画処理命令を発行し、その後、前記描画実行手段に描画実行命令を発行するウィンドウ管理手段と、
として機能させるためのグラフィカルユーザインタフェース表示情報作成プログラム。
【請求項８】
前記描画状態番号と前記描画パラメータ群との対応関係を記憶する番号・描画状態対応記憶手段を有し、
前記グラフィカルユーザインタフェース部品描画処理手段は、同じ組み合わせの描画パラメータを持つ描画パラメータ群が前記番号・描画状態対応記憶手段になければ、新しい描画状態番号を採番し、この描画状態番号と前記描画パラメータ群との対応関係を前記番号・描画状態対応記憶手段に追加して記憶し、
前記描画実行手段は、前記番号・描画状態対応記憶手段の前記対応関係情報に基づき前記描画状態番号に対応する前記描画パラメータ群を抽出し、この描画パラメータ群の中の各描画パラメータを設定し、この設定に応じた表示情報を前記描画状態番号記憶手段で同じ描画状態番号の表示画素に対応する前記フレームバッファの記憶領域に書き込むように機能させるための請求項７記載のグラフィカルユーザインタフェース表示情報作成プログラム。
【請求項９】
前記描画状態番号記憶手段は、ある画素が描画対象か否かを表示画素単位で制御するために用意されるステンシルバッファ上に構築されることを特徴とする請求項８記載のグラフィカルユーザインタフェース表示情報作成プログラム。
【請求項１０】
前記グラフィカルユーザインタフェース部品描画処理手段は、再描画時において前回の描画時から前記グラフィカルユーザインタフェース部品の状態が変化していない場合に描画状態番号記憶手段を更新しないことを特徴とする請求項９記載のグラフィカルユーザインタフェース表示情報作成プログラム。
【請求項１１】
前記フレームバッファは、前記ウィンドウ管理手段を介して読み書きされることを特徴とする請求項７ないし１０のいずれかに記載のグラフィカルユーザインタフェース表示情報作成プログラム。
【請求項１２】
前記描画状態番号記憶手段は、前記ウィンドウ管理手段を介して読み書きされることを特徴とする請求項７ないし１１のいずれかに記載のグラフィカルユーザインタフェース表示情報作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビットマップディスプレイの表示内容を作成する計算機において、グラフィカルユーザインタフェースを持つシステムを構築する技術分野に関する。
【背景技術】
【０００２】
従来のエンジニアリングワークステーション、パソコンのウィンドウ管理システムにおいては、ウィンドウまたはその一部が露出することになったとき、その再描画に関してアプリケーションプログラムが責任を負うことになっている。ウィンドウまたはその一部の再描画が必要になったとき、ウィンドウ管理システムは特定のイベントを使ってアプリケーションプログラムにそれを通知する。例えば、Ｘウィンドウシステムにおいては、Exposeイベントを使ってアプリケーションにそれを通知する。このExposeイベントはアプリケーションプログラム自身、ウィンドウ管理システム、又は同じ計算機で動作している他のアプリケーションプログラムからのリクエストにより生成され、アプリケーションプログラムに対して描画すべきタイミングを知らせるものである（非特許文献１参照）。ここでウィンドウ管理システムとは、計算機に接続された表示装置上に表示するウィンドウの表示・非表示、表示内容等をユーザの操作、計算結果などに応じて変更するためのシステムである（非特許文献１）。
【０００３】
上記ウィンドウ管理システムにおけるグラフィカルユーザインタフェース（以下GUIと呼ぶ）部品の描画は、GUI部品の描画関数がウィンドウ管理システムの提供するグラフィックライブラリの描画命令関数(例えば、非特許文献１のＸ  ＷｉｎｄｏｗにおけるXlib)を呼び出すことにより行われる。この描画命令関数はＧＵＩ部品の描画関数からの描画命令をウィンドウ管理システム（例えば、非特許文献１のXサーバ）に伝える。ウィンドウ管理システムは描画命令に基づきグラフィックプロセッサを制御して、ＧＵＩ部品の関数が要求する描画をフレームバッファに対して表示情報を書き込むことにより行う。ここでＧＵＩとはボタン、アイコン、メニューなど入力用表示対象であるＧＵＩ部品を画面に表示し、この表示されたＧＵＩ部品に対して操作することで計算機に入力を行うインタフェースである。また描画命令関数とは、線、円弧、及び矩形などの図形描画、並びに色などの表示属性（描画状態）の設定をウィンドウ管理システムにＧＵＩ部品の描画関数などからの描画命令として伝える関数である。フレームバッファとはビットマップディスプレイの表示画素に表示するための情報を表示画素単位で記憶する記憶装置をいう。ここで画面の表示画素とは、表示の最小単位でありピクセルと呼ばれるものに相当する。
【０００４】
他方、装置などを制御する組み込み型システムにおけるウィンドウ管理システム、ＧＵＩツールキットでは、１つのシステム向けに開発したアプリケーションプログラムを他のシステムに容易に変更できるように、種類の異なる複数のグラフィックプロセッサ上で動作するようにしている。組み込み型システムのグラフィックプロセッサを制御するサブルーチンやライブラリは、上記エンジニアリングワークステーション、パソコンのウィンドウ管理システムのものより低レベルであるため、ＧＵＩ部品の描画処理を行う描画関数が直接グラフィックプロセッサのハードウェアを制御して、またはグラフィックプロセッサを使用するためのライブラリを用いて、適切なデータをフレームバッファに書き込む構成となっている。このようなシステムでは複数のＧＵＩ部品を描画する処理の実行順は、ウィンドウ管理システムが決める。このため、同じ描画状態を設定する複数のＧＵＩ部品を連続して描画する状況でも、ＧＵＩ部品の描画関数の呼び出し毎に同じ描画状態を設定する処理を実行するため、ホストＣＰＵのリソースを無駄に消費するという問題があった。
【０００５】
組み込み型システムのウィンドウ管理システム、ＧＵＩツールキットにおける上記グラフィックプロセッサのハードウェア制御が可能である特性を利用すると、上記問題の改良方式として以下の方式が考えられる。ＧＵＩ部品を描画するＧＵＩ部品描画処理部での描画状態の設定命令と図形描画処理命令とを命令列として情報記憶装置上の適当なバッファに保存しておき、全てのＧＵＩ部品描画関数の実行が終了した後、バッファ内の命令列を描画状態の設定回数が最小になるように並び替えて実行する方式が考えられる。ここで描画状態とは、描画時に設定される状態をいう。この状態には、描画色、フォント、テクスチャ、シェーダプログラムなどの種類があり、この種類はシステムで定められる。描画状態は、一般にレンダリングステートとも呼ばれる。
【０００６】
【非特許文献１】Ｏｌｉｖｅｒ  Ｊｏｎｅｓ著、西村  亨監修、三浦明美・ドキュメントシステム訳「Ｘ  Ｗｉｎｄｏｗハンドブック」アスキー出版局（１９９０）（ｐ．１９１  ５．４  Ｅｘｐｏｓｅイベント）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記エンジニアリングワークステーション、パソコンのウィンドウ管理システムを用いたＧＵＩ表示システムは、ウィンドウを描画するイベントを受け取ったときに複数のＧＵＩ部品を描画する処理の実行順序は、ＧＵＩ部品を管理するウィンドウ管理システムが決定する。このため、同じ描画状態を設定する複数のＧＵＩ部品を連続して描画する状況でも、ＧＵＩ部品の描画関数の呼び出し毎に同じ描画状態を設定する処理を実行するため、ホストＣＰＵのリソースを無駄に消費するという問題があった。
【０００８】
上記で説明した組み込み型システムにおける「描画関数での描画状態の設定と描画処理を命令列として適当なバッファに保存しておき、全ウィンドウに存在する全ＧＵＩ部品の描画関数の実行が終わってから、上記バッファ内の命令列を描画状態の設定回数が最少になるように並び替えて実行する」という実現方法は、バッファに格納できる命令列の最大長から、一度に描画できるＧＵＩ部品の最大数に制約を生じるという問題や、命令列の並び替えにホストＣＰＵに負荷をかけるという問題がある。
【０００９】
本発明は、上記の問題点を解決するためになされたものであり、ホストＣＰＵの資源を効率良く利用して処理が高速であり、かつ全てのウィンドウで描画するＧＵＩ部品の総数に制約が無い描画が可能なＧＵＩ表示システムを得ることを目的としている。
【課題を解決するための手段】
【００１０】
この発明に係るＧＵＩ表示システムは、ビットマップ表示情報を表示画素単位で記憶するフレームバッファと、描画状態を定める描画パラメータ群に付与した整数値の描画状態番号を表示画素毎に記憶する描画状態番号記憶手段と、ＧＵＩ部品を表示する表示画素に対応する描画状態番号記憶手段の記憶領域に、前記描画状態番号を書き込むＧＵＩ部品描画処理手段と、描画時に前記GUI部品描画処理手段に対して描画処理命令を発行するウィンドウ管理手段と、前記描画状態番号記憶手段に記憶された前記描画状態番号に対応する前記描画パラメータを設定し前記フレームバッファの記憶領域に出力する描画実行手段とを備えたものである。
【発明の効果】
【００１１】
本発明は、以上説明したように構成されているので、以下に記載されるような効果を奏する。
【００１２】
描画状態番号記憶手段は固定長であるため、全ウィンドウに表示するＧＵＩ部品の最大数の制限がないという従来にない顕著な効果を奏するものである。
【００１３】
また、ＧＵＩ部品描画処理手段の実行順とは無関係に、描画状態の設定回数が最小となる順序でフレームバッファへの描画を行えるため、ホストＣＰＵの資源の消費を軽減した効率的な描画ができ、全体の描画処理を高速化できる。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
図４は本発明の実施の形態ハードウェア構成図である。４０１は、主に演算処理を行うホストＣＰＵ、４０２はホストＣＰＵ４０１の演算処理の結果を受けて主に描画処理を行うグラフィックプロセッサ、４０５はホストＣＰＵ４０１及びグラフィックプロセッサ４０２で使用する情報を記憶する情報記憶装置である。
【００１５】
図４は、ホストＣＰＵ４０１とグラフィックプロセッサ４０２で情報記憶装置４０５を共有するハードウェア構成図である。これは、ＰＣ、自動車用ナビゲーションシステム、携帯電話など多数がこの構成を採る。
【００１６】
図１は本発明の実施の形態１によるビットマップディスプレイ部を有する計算機上に構築されるＧＵＩ表示システムの構成図である。
【００１７】
１０２はビットマップ表示情報を表示画素単位で記憶するフレームバッファ、１０１は描画色、文字フォント、テクスチャなどの描画状態を定めるための設定値である描画パラメータ群に付与した描画状態番号（整数値）を表示画素毎に記憶する描画状態番号記憶手段、１１０は描画状態番号と前記描画パラメータとの関係を記憶する番号・描画状態対応記憶手段である。これら描画状態番号記憶手段１０１と番号・描画状態対応記憶手段１１０とは、計算機ハードウェアの情報記憶装置４０５上に構築される。ここで描画状態とは、描画時に設定される状態をいう。この状態には、描画色、フォント、テクスチャ、シェーダプログラムなどの種類があり、この種類はシステムで定められる。また描画状態は、一般にレンダリングステートとも呼ばれる。この描画状態は、１または複数の描画パラメータ（描画パラメータ群）により決まる。この描画パラメータとは、描画状態を決める状態の種類の１つについての設定値である。例えば、描画色であればＲ，Ｇ，Ｂの輝度、フォントであれば「細明朝体」などのフォント名称となる。この描画パラメータの種類として（描画状態の種類に同じ）、表示色、テクスチャ、フォント、シェーダプログラムなどがある。ここでシェーダプログラムとは、画面表示内容の表現力の向上をグラフィックプロセッサで行わせ、処理の高速化を図るプログラムであり、具体的には頂点などのジオメトリ処理を行う頂点シェーダ、領域の塗りつぶし処理を行うピクセルシェーダなどがある。また描画パラメータ群とは、ある時点までに設定された描画状態の各種類に対する描画パラメータの集合をいい、この描画パラメータ群により１つの描画状態が決まることになる。なお、ある描画状態について、描画パラメータが複数回設定された場合は、最後に設定された描画パラメータが有効となり、最後に設定された描画パラメータだけが描画状態として記憶されることになる。描画状態番号とは、描画パラメータ群が同じである描画状態を識別するために付与した１つの整数値のことである。
【００１８】
１０３は描画状態番号記憶手段１０１、フレームバッファ１０２の入出力を管理するウィンドウ管理手段、１０５，１０６，１０７はウィンドウ管理手段１０３からの描画処理命令を受けＧＵＩ部品に応じた描画内容を描画状態番号として描画状態番号記憶手段１０１へ記憶させるＧＵＩ部品描画処理手段、１０４は、ウィンドウ管理手段１０３からの描画実行指令を受け描画状態番号記憶手段１０１と番号・描画状態対応記憶手段１１０とに記憶されている情報を元にフレームバッファ１０２へ画面表示情報の出力を行う描画実行手段である。ウィンドウ管理手段１０３は上記記憶手段の入出力管理を行うとともに、ＧＵＩ部品描画処理手段１０５，１０６，１０７に描画処理命令（プログラム上は描画イベント）を通知し、全てのＧＵＩ部品描画処理手段の描画処理が終了した後、描画実行手段１０４を実行するように構成する。
【００１９】
ＧＵＩ部品描画処理手段１０５，１０６，１０７と、ウィンドウ管理手段１０３と描画実行手段１０４とは計算機のホストＣＰＵ４０１上に構築される。また、描画状態番号記憶手段１０１、フレームバッファ１０２、番号・描画状態対応記憶手段１１０は計算機の情報記憶部４０５上に構築される。このような構成とすることで、情報記憶装置４０５は、固定長である描画状態番号記憶手段１０１およびフレームバッファ１０２、並びに情報量が少ない番号・描画状態対応記憶手段１１０で構成されるので、ＧＵＩ部品の数が増加しても記憶すべき情報量は大きくならず、実質上ＧＵＩ部品の最大数に制限がなくなる。また、ＧＵＩ部品描画処理手段１０５，１０６，１０７の実行順とは無関係に、描画状態の設定回数が最小となる順でフレームバッファ１０２へ書き込みができる。
【００２０】
上記の演算処理は全てホストＣＰＵで実行するように説明したが、描画実行手段１０４、ウィンドウ管理手段１０３の全部または一部をグラフィックプロセッサ４０２上に構成することにより、演算処理を分散することができ、さらに総合的な実行速度を上げる効果がある。
【００２１】
以下、各構成部分について説明する。
【００２２】
フレームバッファ１０２は、描画実行手段１０４がウィンドウ管理手段１０３を通して読み書き可能な情報記憶装置上のバッファメモリであり、計算機接続された表示装置に出力する画面イメージが記憶される。
【００２３】
描画状態番号記憶手段１０１はウィンドウ管理手段１０３を通して読み書き可能な情報記憶装置上４０５のバッファメモリであり、フレームバッファの各表示画素に対応する整数値が記憶される記憶領域からなる。描画状態番号記憶手段１０１の１個の整数値記憶領域には、１個の描画状態番号が記憶される。描画状態番号は、同じ描画状態に対して割り当てられる整数値の番号である。描画状態番号記憶手段１０１における描画状態番号の並びにより、フレームバッファ上に書き込むＧＵＩ部品の形状が記憶される。
【００２４】
ウィンドウ管理手段１０３が有する描画状態番号記憶手段１０１およびフレームバッファ１０２を読み書きするための機能として、計算機を動作させるプログラムは、他のプログラムから呼び出すためのインタフェースを持つ。上記プログラムのうち、フレームバッファ１０２を読み書きするための機能として計算機を動作させるものは、グラフィックライブラリと呼び、描画パラメータで定まる描画状態を設定する描画状態設定関数、および描画状態に基づきフレームバッファにデータを書き込む描画命令関数から成る。
【００２５】
さらにウィンドウ管理手段１０３は指定された描画状態と描画状態番号記憶手段１０１とに保持された部品の形状に従いフレームバッファ１０２に部品の外観を描画する。ウィンドウ管理システム１０３は、画面の再描画が必要になったことを検知した上で、ＧＵＩ部品描画処理手段１０５，１０６，１０７に描画処理命令（プログラム上は描画イベント）を通知し、描画実行手段１０４にフレームバッファ１０２へ表示情報を書き込む処理の実行を描画実行命令を通知することにより指示する。なお、計算機をウィンドウ管理手段１０３として機能させるためのプログラムのうち描画状態番号記憶手段１０１及びフレームバッファ１０２を読み書きするプログラムは、グラフィックプロセッサ上４０２で処理することもできる。
【００２６】
ＧＵＩ部品描画処理手段１０５，１０６，１０７は、ウィンドウ管理手段１０３から描画処理命令（プログラム上は描画イベント）の通知を受けると、ＧＵＩ部品の描画に使用する描画状態をあらわす描画状態番号を描画状態番号記憶手段１０１のＧＵＩ部品の形状に対応する記憶域に記憶させる。
【００２７】
描画実行手段１０４は、ウィンドウ管理手段１０３からの描画実行命令を受けると、描画状態番号記憶手段１０１に保持されている描画状態番号から１の描画状態番号を選択し、この描画状態番号に対応する描画パラメータを番号・描画状態対応記憶手段１１０から求め、求めた描画パラメータを描画状態として設定した後、描画状態番号記憶手段１０１に保持された上記描画状態番号を持つ表示画素に対応するフレームバッファ１０２の記憶域に上記設定された描画状態に応じた表示情報を書き込む。
番号・描画状態対応記憶手段１１０は、描画状態番号に対応する描画パラメータの情報を記憶する。
【００２８】
図２は本発明の実施の形態１による番号・描画状態対応記憶手段に記憶される番号・描画状態対応表をより詳細に示す構成図である。
【００２９】
番号・描画状態対応表は、描画状態番号毎に描画状態を示す描画パラメータ群を対応付ける。描画状態は描画状態番号によって一意に識別される。ここでは描画パラメータ群として描画色、フォント、テクスチャ、シェーダプログラムをシステムが設定しているものとした。各描画状態番号に対応する描画状態を決定する描画パラメータ群の種類は、描画状態ごとに異なる場合もありうる（設定されていない場合もあり、この場合は「−」で表示されている）。左側の欄は描画状態番号欄である。左から２番目の欄は描画色欄であり、ＧＵＩ部品の描画に使用する色を指定する。左から３番目の欄はフォント欄であり、ＧＵＩ部品の描画に使用するフォントを指定する。左から４番目の欄はテクスチャ欄であり、ＧＵＩ部品の描画に使用する画像データを指定する。左から５番目の欄はシェーダプログラム欄であり、ＧＵＩ部品の描画に使用するシェーダプログラムを指定する。
【００３０】
図３は本発明の実施の形態１によるＧＵＩ表示システムの動作手順を示すフローチャートである。
【００３１】
ステップ３０１では、ウィンドウ管理手段１０３が画面の再描画が必要になったことを検知する。この検知する手段については、上記非特許文献１に記載がある。例えば、各描画アプリケーション（ここではＧＵＩ部品描画処理手段１０５，１０６，１０７）が、再描画が必要になったことをウィンドウ管理手段１０３に通知する関数を実行し、この通知を受けたウィンドウ管理手段１０３は、画面の再描画が必要になったことを検知することができる。
【００３２】
ステップ３０２では、ウィンドウ管理手段１０３がＧＵＩ部品描画処理手段１０５，１０６，１０７のうちの一つを任意の順番で選択し、描画処理命令を通知して、各ＧＵＩ部品描画処理手段の描画処理を実行する。
【００３３】
ステップ３０３では、選択されたＧＵＩ部品描画処理手段１０５，１０６，１０７は、ウィンドウ管理手段１０３の機能を用いて、ＧＵＩ部品の形状に相当する表示画素に対応する描画状態番号記憶手段１０１の記憶領域に、ＧＵＩ部品のプロパティに設定された描画状態番号を書き込む。なお、表示画素と、その表示画素に対応する描画状態番号記憶手段１０１の記憶領域とは一対一に対応する。
【００３４】
ステップ３０４では全てのＧＵＩ部品について描画処理を実行したかどうかをウィンドウ管理手段１０３が判定する。未実行のＧＵＩ部品が残っている場合はステップ３０２に戻る。全てのＧＵＩ部品について処理の実行を完了した場合はステップ３０５に進む。
【００３５】
ステップ３０５では、全てのＵＩ部品の上記判定で全てのＧＵＩ部品について描画処理を実行したと判定された場合に、ウィンドウ管理手段１０３が描画実行手段１０４へ描画実行命令を通知して描画実行手段１０４の処理を開始する。描画実行手段１０４は、描画状態番号記憶手段１０１に保持された描画状態番号の一つを注目描画状態番号とする。そして描画実行手段１０４は、注目描画状態番号をキーとして、番号・描画状態対応表１１０から１の描画状態の描画パラメータ群を取得する。
【００３６】
ステップ３０６では、描画実行手段１０４は取得した描画パラメータ群の各描画パラメータを現在の描画状態として設定する。具体的には、ステップ３０５で取得した各描画パラメータをウィンドウ管理手段１０３が設定する。このときプログラムとしては、グラフィックライブラリの描画状態設定関数が計算機をウィンドウ管理手段１０３として機能させ、描画状態を設定する。この設定により、以後描画される描画状態が定まる。
【００３７】
ステップ３０７では、描画実行手段１０４はウィンドウ管理手段１０３の機能を用いて設定された描画状態と、描画状態番号記憶手段１０１に保持された注目する描画状態番号が記憶された表示画素に対応する記憶領域とから、フレームバッファ１０２内の対応する記憶領域に表示情報を書き込むことにより、ＧＵＩ部品外観を描画する。このときプログラムとしては、グラフィックライブラリの描画命令関数が、計算機をウィンドウ管理手段１０３として機能させ、フレームバッファ１０２に描画状態に対応した表示情報を書き込む。
【００３８】
ステップ３０８では、ＧＵＩ部品描画処理手段１０５、１０６、１０７が描画状態番号記憶手段１０１への描画に使用した全ての描画状態番号について、描画状態の取得と部品外観のフレームバッファへの書き込みが完了したかを判定する。未処理の描画状態番号が残っている場合はステップ３０５に戻る。全ての描画状態番号の処理を完了した場合は、処理を終了する。
【００３９】
ＧＵＩ部品描画処理手段１０５，１０６，１０７で、描画状態を設定して描画状態番号記憶手段１０１に書き込む前に、番号・描画状態対応記憶手段１１０に、同じ描画状態（同じ描画パラメータの組み合わせを持つもの）が無ければ、新たな描画状態番号を設定し、この番号と、当該描画状態の描画パラメータ群を関係付けて番号・描画状態対応記憶手段１１０に追加して記憶することができる。次に、上記同じ描画状態があった場合は、その描画状態番号を、また同じ描画状態が無く新たな描画状態番号を設定した場合は、その新たな描画状態番号をＧＵＩ部品のプロパティとして記憶する。
【００４０】
描画状態番号記憶手段は固定長であるため、画面に表示するＧＵＩ部品の最大数の制限がないという従来にない顕著な効果を奏するものである。
【００４１】
表示画素対応の記憶領域に描画状態を保存することで、ＧＵＩ部品描画処理手段１０５，１０６，１０７の実行順とは無関係に、描画状態の設定回数が最小となる順序で描画を行えるため、ホストＣＰＵの資源の消費を軽減でき、描画処理を高速化できる。
【００４２】
描画パラメータ群と描画状態との関係を記憶する番号・描画状態対応記憶手段１１０を用いることによって、表示画素対応の記憶領域に描画状態を書き出した番号から容易に描画パラメータ群を求めることができので、Ｓ／Ｗの開発工数を少なくできる。
また、フレームバッファの表示情報、および描画状態番号記憶手段の描画状態番号情報は、前記ウィンドウ管理手段を介して読み書きされる構成としたので、ウィンドウ管理手段の機能を使え、Ｓ／Ｗ開発工数を削減できる。
【００４３】
メニュー、ボタン、アイコンなどＧＵＩ部品の数が多いアプリケーションに適用するとより効果を奏する。例えば、多数の監視設備対象をアイコン等で表示するとＧＵＩ部品の数が多くなるプラント監視システムなどである。また、CPUリソースが貧弱で、メモリ容量の少ない計算機に適用するとより効果を奏する。例えば、携帯電話、携帯端末などが考えられる。
【００４４】
実施の形態２．
上記の実施の形態は、フレームバッファ１０２への読み書き、および描画状態番号記憶手段１０１への読み書きをする機能をウィンドウ管理手段１０３が有し、これらの機能の実行はウィンドウ管理手段１０３を介して行っていたが、このどちらか一方または両方の機能をウィンドウ管理手段１０３が有していなくても、実現できる。以下、フレームバッファ１０２、描画状態番号記憶手段１０１への読み書きをＧＵＩ部品描画処理手段１０５，１０６，１０７、および描画実行手段１０４から直接指令する構成について説明する。
【００４５】
図１２は、フレームバッファ１０２への読み書き、および描画状態番号記憶手段１０１への読み書きをウィンドウ管理手段１０３を介さずに直接実行するＧＵＩ表示システム構成図である。以下、実施の形態１と異なる点を説明する。
【００４６】
１０３は描画時にＧＵＩ部品描画処理手段１０５，１０６，１０７に描画処理命令を発行し、描画処理完了後描画実行手段１０４に描画実行命令を発行するウィンドウ管理手段、１０５，１０６，１０７はウィンドウ管理手段１０３からの描画指令を受けＧＵＩ部品に応じた描画内容を描画状態番号として描画状態番号記憶手段１０１へ記憶させるＧＵＩ部品描画処理手段、１０４は、ウィンドウ管理手段１０３の指令を受け描画状態番号記憶手段１０１と番号・描画状態対応記憶手段１１０とに記憶されている情報を元にフレームバッファ１０２へ画面表示情報の出力を行う描画実行手段である。ウィンドウ管理手段１０３は、ＧＵＩ部品描画処理手段１０５，１０６，１０７に描画イベントを通知し、全てのＧＵＩ部品描画処理手段の描画処理が終了した後、描画実行手段１０４を実行するように構成する。
【００４７】
フレームバッファ１０２は、描画実行手段１０４が読み書き可能な情報記憶装置上のバッファメモリであり、計算機接続された表示装置に出力する画面イメージが記憶される。
【００４８】
描画状態番号記憶手段１０１は情報記憶装置上４０５のバッファメモリであり、フレームバッファの各表示画素に対応する整数値が記憶される記憶領域からなる。
【００４９】
ＧＵＩ部品描画処理手段１０５，１０６，１０７、および描画実行手段１０４が行う描画状態番号記憶手段１０１への読み書き機能は、計算機にこの読み書き機能を実行させるプログラムとして構成できる。
また、描画実行手段１０４が行うフレームバッファ１０２を読み書きするための機能として、計算機を動作させるプログラムは、実施の形態１と同じグラフィックライブラリと呼び、描画パラメータで定まる描画状態を設定する描画状態設定関数、および描画状態に基づきフレームバッファにデータを書き込む描画命令関数から成る。
【００５０】
以上のように構成することで、ウィンドウ管理手段１０３が、描画状態番号記憶手段１０１、およびフレームバッファへの読み書きをする機能を持たない場合も、ホストＣＰＵの資源の消費を軽減した効率的な描画ができ、全体の描画処理を高速化できる。
【００５１】
実施の形態３．
上記の実施の形態は、図４のハードウェア構成を前提に説明したが、他のハードウェア構成でも実現できる。実施の形態３では、グラフィック専用の情報記憶装置、すなわちグラフィックメモリを有するハードウェアによる実施の形態について説明する。
【００５２】
図５は、グラフィックプロセッサ４０２が、専用のグラフィックメモリを有するハードウェア構成図である。これは、高性能ＰＣ、ゲーム機なでで採用される構成である。この場合、描画処理以外の情報処理をホストＣＰＵ４０１で行うと考えられ、そのための記憶容量を情報記憶装置に多くとり、描画処理を行うグラフィックプロセッサ４０２からのアクセスが早いグラフィックメモリにフレームバッファ１０２、描画状態番号記憶手段１０１を構成することにより、実行速度が向上する効果がある。なお演算処理は、上記図４の場合と同様である。
【００５３】
実施の形態４．
上記の実施の形態とは別のハードウェア構成として、グラフィック専用のグラフィックメモリを有し、かつグラフィックプロセッサ４０２が情報記憶装置４０５をもワークエリアとして使用できるハードウェア構成がある。以下このハードウェア構成による実施の形態について説明する。
【００５４】
図６は、上記グラフィックプロセッサ４０２が、専用のグラフィックメモリを有するパターンの派生版で、グラフィックプロセッサがワークエリアとして情報記憶装置を使用できるハードウェア構成図である。この場合、図６のように情報記憶装置４０５上にフレームバッファ１０２、グラフィックメモリ４０６上に描画状態番号記憶手段１０１を構成することができる。また逆に、情報記憶装置４０５上に描画状態番号記憶手段１０１、グラフィックメモリ４０６上にフレームバッファ１０２を構成することによって、実行速度が向上する効果がある。演算処理は、上記図４の場合と同様である。
【００５５】
実施の形態５．
以上は、描画状態番号記憶手段１０１を通常の記憶装置上に構築することを前提に説明したが、描画対象か否かを表示画素単位で制御するためのステンシルバッファを用いて描画状態番号記憶手段１０１を構築することができる。ここで、ステンシルバッファとは、物体の重ね合わせなどにより描画しなくても良い領域を効率よく判定するために用意された特殊なバッファ領域である。描画する際にステンシルバッファを参照し、表示画素単位で描画を禁止したり許可したりすることができるものである。ステンシルバッファは、各表示画素に対して数ビットで構成することが多いが、本発明の描画状態番号は整数値であるので、ステンシルバッファの表示画素に対応する記憶領域に記憶することができ、ステンシルバッファのメモリを有効活用することができる。
【００５６】
以下、描画状態番号記憶手段１０１をステンシルバッファとして説明する。通常ステンシルバッファに記憶される数値をステンシル番号と呼ぶが、ここでは上記の説明との対応から、描画状態番号と呼ぶ。なお、情報記憶装置上に描画状態番号記憶手段１０１を構成する場合は、ステンシルバッファを描画状態番号記憶手段１０１、ステンシル番号を描画状態番号と読み替えることができる。
【００５７】
図７は、ステンシルバッファとフレームバッファの対応関係を説明した図である。ステンシルバッファに記憶される数値(ここでは描画状態番号と呼ぶ)は、フレームバッファに格納される各画素の色を表す値(カラーコード)と一対一に対応する。具体的には、ステンシルバッファの特定の行と列の位置にある数値は、フレームバッファの同じ行と列の位置にある画素に対応する。
【００５８】
以下、ステンシルバッファ内の情報とフレームバッファ内の情報を図で示しながら、図３のステップの処理を説明する。
【００５９】
図８は、ステップ３０３の第１処理の説明図である。ステンシルバッファおよびフレームバッファのＧＵＩ部品の描画対象に対応する記憶エリアをクリアする。例えば、ステンシルバッファは0でクリアし、フレームバッファは背景色でクリアする。図８はバッファをクリアした後の状態を示している。
【００６０】
図９は、ステップ３０３の第２処理の説明図である。ＧＵＩ部品描画処理手段１０５，１０６，１０７はＧＵＩ部品に設定された描画状態番号を部品形状に相当する表示画素に対応するステンシルバッファの記憶領域に書き込む。図９は、描画状態番号３、４、５が、ＧＵＩ部品形状に相当する表示画素に対応するステンシルバッファの記憶領域に書き込まれた状態を示している。
【００６１】
ステップ３０４において、全てのＧＵＩ部品描画処理手段１０５，１０６，１０７を実行し終えたら、次のステップに進むが、全てのＧＵＩ部品描画処理手段１０５，１０６，１０７の実行を完了したことを検出する方法として、以下が考えられる。
【００６２】
（１）計算機をウィンドウ管理手段１０３として機能させるプログラムが、全てのＧＵＩ部品の描画完了(画面が更新されたことの通知)をイベント等で通知する機構を有する場合は、その通知を受け取るイベントハンドラ内で描画実行手段１０４に描画開始を要求する。ここでイベントは、オブジェクト指向プログラミングにおいて、オブジェクトに特定の現象（この場合は全ＧＵＩ部品の描画完了）が発生した時に発する信号であり、イベントハンドラとは、上記イベントが発生した時に実行するプログラムのことである。
【００６３】
（２）計算機をウィンドウ管理手段１０３として機能させるプログラムが、(１)の機構を有さない場合は、アプリケーションプログラム側の画面再描画イベントハンドラの末尾に、描画実行手段１０４に描画開始を要求する関数の呼び出しを追加する。(アプリケーション側の対応が必要)
図１０は、ステップ３０７を最初に処理する時の説明図である。描画実行手段１０４はステンシルバッファに保持された情報から、フレームバッファに表示情報を書き込む。ここでは、ステンシル番号3に対応する描画状態での書き込みを完了した時点でのフレームバッファの状態を示している。
【００６４】
図１１は、全てのＧＵＩ部品描画処理手段１０５，１０６，１０７を実行した時のステップ３０６の処理の説明図である。全ての描画状態番号(3, 4, 5の3つ)に対する書き込みを完了した時のフレームバッファの状態を示している。
【００６５】
なお、ＧＵＩ部品の形状が変化していない状態で再描画する場合に、図３のステップ３０３を省略する構成もありうる。この場合は描画状態番号記憶手段１０１（ステンシルバッファ）への描画処理がなくなるため、さらに効率的な描画ができる。
【００６６】
以上のように、描画状態番号記憶手段１０１をステンシルバッファにより実現すると、通常ステンシルバッファへの入出力を管理する機能をウィンドウ管理手段が有するため、この入出力管理を行うプログラムを新たに開発する必要がなく、開発上のメリットが発生する。なお、同じことは通常の情報記憶装置上でも同様の記憶領域を設定することで実現できる。
【００６７】
このような構成によれば、ウィンドウ管理手段１０３によるＧＵＩ部品１０５，１０６，１０７の描画命令関数の実行順序と、フレームバッファへのＧＵＩ部品外観の描画順序とを独立でき、フレームバッファへの書き込み順を最適化することができる。
【００６８】
このようにＧＵＩ部品の描画関数によるＧＵＩ部品形状のステンシルバッファへの描画処理と、描画部によるＵＩ部品外観のフレームバッファへの描画処理を独立させたことにより、ＧＵＩ部品描画処理手段１０５，１０６，１０７の実行順序とは無関係に、描画状態の設定回数が最少となる順序でフレームバッファへの描画を行えるため、ホストCPUの消費を軽減した効率的な描画ができ、かつメモリ容量によるGUI部品数の制限が無いＧＵＩ表示システムを実現できる。
【００６９】
描画状態番号記憶手段をステンシルバッファ上に構成したので、Ｈ／Ｗ資源メモリを有効利用できるとともに、メモリ管理に関する開発工数を削減できる。
【００７０】
また、再描画時において前回の描画時から前記GUI部品の状態が変化していない場合に描画状態番号記憶手段を更新しない構成としたので、再描画処理を高速化できる。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施の形態１によるＧＵＩ表示システムを示す構成図である。
【図２】本発明の実施の形態１による番号・描画状態対応表を示す図である。
【図３】本発明の実施の形態１によるＧＵＩ表示システムの動作手順を示すフローチャートである。
【図４】本発明の実施の形態１によるホストＣＰＵとグラフィックプロセッサが情報記憶装置を共有する場合のハードウェア構成図である。
【図５】本発明の実施の形態１によるグラフィックプロセッサが専用の記憶装置を有する場合のハードウェア構成図である。
【図６】本発明の実施の形態１によるグラフィックプロセッサがワークエリアとして情報記憶装置を使用できる場合のハードウェア構成図である。
【図７】ステンシルバッファ（描画状態番号記憶手段）とフレームバッファの対応関係を示す説明図である。
【図８】ステンシルバッファ（描画状態番号記憶手段）とフレームバッファのクリアの説明図である。
【図９】ステンシルバッファ（描画状態番号記憶手段）への描画状態番号の書き込みの説明図である。
【図１０】フレームバッファへの表示情報の書き込みの説明図である。
【図１１】全ての描画状態番号に関するフレームバッファへの書き込みが完了した時の状態を示す説明図である。
【図１２】本発明の実施の形態２によるＧＵＩ表示システムを示す構成図である。
【符号の説明】
【００７２】
１０１  描画状態番号記憶手段、１０２  フレームバッファ、１０３  ウィンドウ管理手段、１０４  描画実行手段、１０５，１０６，１０７  ＧＵＩ部品描画処理手段、１１０  番号・描画状態対応記憶手段。
【図１】
0004715435.tif 000002
【図２】
0004715435.tif 000003
【図３】
0004715435.tif 000004
【図４】
0004715435.tif 000005
【図５】
0004715435.tif 000006
【図６】
0004715435.tif 000007
【図７】
0004715435.tif 000008
【図８】
0004715435.tif 000009
【図９】
0004715435.tif 000010
【図１０】
0004715435.tif 000011
【図１１】
0004715435.tif 000012
【図１２】
0004715435.tif 000013