(57)【要約】【課題】  ネットワークを介して画像表示装置に画像を転送する際の転送スピードを向上させる技術を提供する。【解決手段】  フック処理モジュール４００は、アプリケーションプログラム１２２によって発行される特定の描画命令をフックして先取りし、取得した描画命令に従ってＲＡＭ１０６内の画像データ格納領域１０６ｂに画像を描画する。ＶＮＣサーバ１３０は、画像データ格納領域１０６ｂから画像を取得するとともに、取得した画像をネットワークを介してプロジェクタに転送する。フック処理モジュール４００は、ＶＮＣサーバによって設定される転送フラグ１０６ｃがオンのときには処理を開始せず、オフになるまで待機する。【選択図】  図６
2005352796.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置であって、
画像の描画命令を発行可能なアプリケーションプログラムと、
前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールと、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りし、取得した描画命令に従って汎用メモリ内の特定の転送用画像格納領域に画像を描画する処理を実行するフック処理モジュールと、
前記転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する画像転送処理モジュールと、
を備え、
前記フック処理モジュールは、前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機することを特徴とする画像供給装置。
【請求項２】
請求項１記載の画像供給装置であって、
前記画像転送処理モジュールは、前記画像転送用処理の実行中は前記汎用メモリ内にある転送フラグをオン状態に設定するとともに、前記画像転送用処理の終了後に前記転送フラグをオフ状態に設定し、
前記フック処理モジュールは、前記転送フラグがオンのときには前記転送フラグがオフされるまで前記描画命令に応じた処理を開始せずに待機する、画像供給装置。
【請求項３】
請求項１又は２記載の画像供給装置であって、
前記フック処理モジュールは、前記転送用画像格納領域の中で前記描画命令に応じて画像が描画される領域である変化領域を示す変化領域情報を前記汎用メモリ内に書き込む機能を有しており、
前記画像転送処理モジュールは、
（ｉ）前記画像転送用処理において、前記汎用メモリ内に格納されている前記変化領域情報を参照して前記転送用画像格納領域に格納されている前記画像変化領域内の画像部分を取得し、
（ｉｉ）取得した画像部分を前記変化領域情報とともに前記ネットワークを介して前記画像表示装置に転送する、画像供給装置。
【請求項４】
請求項１ないし３のいずれかに記載の画像供給装置であって、
前記画像転送処理モジュールは、
前記画像転送処理モジュールの起動時に前記フック処理モジュールを前記アプリケーションプログラムにロードし、前記画像転送処理モジュールの実行終了時に前記フック処理モジュールを前記アプリケーションプログラムからアンロードするように構成されている、画像供給装置。
【請求項５】
ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置において利用されるフック処理モジュールであって、
前記画像供給装置は、画像の描画命令を発行可能なアプリケーションプログラムと、前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールと、汎用メモリ内の転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する画像転送処理モジュールと、を備えており、
前記フック処理モジュールは、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りし、取得した描画命令に従って前記転送用画像格納領域に画像を描画する処理を実行する機能を有するとともに、
前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機することを特徴とするフック処理モジュール。
【請求項６】
ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置において利用される画像転送処理モジュールであって、
前記画像供給装置は、画像の描画命令を発行可能なアプリケーションプログラムと、前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールとを備えており、
前記画像転送処理モジュールは、汎用メモリ内の転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する機能を有しており、
前記画像転送処理モジュールは、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りするフック処理モジュールを、前記画像転送処理モジュールの起動時に前記アプリケーションプログラムにロードし、前記画像転送処理モジュールの実行終了時に前記フック処理モジュールを前記アプリケーションプログラムからアンロードするように構成されており、
前記フック処理モジュールは、
前記フックによって取得した描画命令に従って前記転送用画像格納領域に画像を描画する処理を実行する機能を有するとともに、
前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機する、画像転送処理モジュール。
【請求項７】
ネットワークを介して画像表示装置に画像を供給して表示させる方法であって、
（ａ）アプリケーションプログラムによって発行された特定の描画命令に応じて、汎用メモリ内の特定の転送用画像格納領域に画像を描画する処理を実行する工程と、
（ｂ）前記転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する工程と、
を備え、
前記工程（ａ）は、
前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理が実行されているか否かを判定する工程と、
前記画像転送用処理が実行されているときには、前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機する工程と、
を含むことを特徴とする画像供給方法。
【請求項８】
ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置において利用されるフック処理モジュールを記録したコンピュータ読取可能な記録媒体であって、
前記画像供給装置は、画像の描画命令を発行可能なアプリケーションプログラムと、前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールと、汎用メモリ内の転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する画像転送処理モジュールと、を備えており、
前記フック処理モジュールは、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りし、取得した描画命令に従って前記転送用画像格納領域に画像を描画する処理を実行する機能と、
前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機する機能と、
をコンピュータに実現させることを特徴とする記録媒体。
【請求項９】
ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置において利用される画像転送処理モジュールを、記録したコンピュータ読取可能な記録媒体であって、
前記画像供給装置は、画像の描画命令を発行可能なアプリケーションプログラムと、前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールとを備えており、
前記画像転送処理モジュールは、汎用メモリ内の転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する機能をコンピュータに実現させるものであり、
前記画像転送処理モジュールは、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りするフック処理モジュールを、前記画像転送処理モジュールの起動時に前記アプリケーションプログラムにロードし、前記画像転送処理モジュールの実行終了時に前記フック処理モジュールを前記アプリケーションプログラムからアンロードすることをコンピュータに実現させるように構成されており、
前記フック処理モジュールは、
前記フックによって取得した描画命令に従って前記転送用画像格納領域に画像を描画する処理を実行する機能を有するとともに、
前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機する、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続された画像供給装置と画像表示装置とを含む画像表示システムに関する。
【背景技術】
【０００２】
画像を投写表示するプロジェクタの一種として、ネットワークを介してパーソナルコンピュータから供給された画像を投写表示することができるプロジェクタ（以下、「ネットワークプロジェクタ」とも呼ぶ）が提案されている(例えば特許文献１)。また、このようなネットワークプロジェクタに、ネットワークを介してパーソナルコンピュータから画像を供給するために、ＶＮＣ（Virtual Network Computing）とよばれる技術が利用されている。
【０００３】
【特許文献１】国際公開第０１／０９３５８３号パンフレット
【０００４】
しかしながら、ＶＮＣを利用する場合には、コンピュータ内のＶＲＡＭ（フレームメモリ）からＲＡＭ（システムメモリ）に画像を一旦転送し、その後、ＲＡＭから画像を取得してネットワークを介してプロジェクタに転送している。ＶＲＡＭからＲＡＭへの画像データの転送にはかなりの時間が掛かるため、全体として十分な転送速度が得られない場合があった。このような問題は、ネットワークプロジェクタシステムに限らず、一般に、ネットワークを介して画像供給装置から画像表示装置に画像を供給して表示させるシステムに共通する問題であった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、ネットワークを介して画像表示装置に画像を転送する際の転送スピードを向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記した目的の少なくとも一部を達成するために、本発明による画像供給装置は、ネットワークを介して画像表示装置に画像を供給して表示させるための画像供給装置であって、
画像の描画命令を発行可能なアプリケーションプログラムと、
前記アプリケーションプログラムによって発行される描画命令を処理するための描画モジュールと、
前記アプリケーションプログラムによって発行される特定の描画命令をフックして先取りし、取得した描画命令に従って汎用メモリ内の特定の転送用画像格納領域に画像を描画する処理を実行するフック処理モジュールと、
前記転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する画像転送処理モジュールと、
を備え、
前記フック処理モジュールは、前記画像転送処理モジュールが前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理を実行しているときには前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機することを特徴とする。
【０００７】
この画像供給装置によれば、特定の描画命令が発行された場合には、描画モジュールの代わりにフック処理モジュールがその描画命令をフックして取得し、汎用メモリ内の画像を描画するので、従来のようにＶＲＡＭからＲＡＭ（汎用メモリ）に画像を転送する場合に比べて転送処理全体のスピードを向上させることができる。また、フック処理モジュールは、画像転送処理モジュールによる画像転送用処理が実行されているときにはその処理が終了するまで描画命令に応じた処理を開始せずに待機するので、転送用画像格納領域内にある画像が、転送前に、フック処理モジュールによる再描画によって変更されてしまうという不具合を防止することができる。
【０００８】
なお、前記画像転送処理モジュールは、前記画像転送用処理の実行中は前記汎用メモリ内にある転送フラグをオン状態に設定するとともに、前記画像転送用処理の終了後に前記転送フラグをオフ状態に設定し、
前記フック処理モジュールは、前記転送フラグがオンのときには前記転送フラグがオフされるまで前記描画命令に応じた処理を開始せずに待機するようにしてもよい。
【０００９】
この構成によれば、画像転送処理モジュールとフック処理モジュールとの処理のタイミングを容易に調整することができる。
【００１０】
前記フック処理モジュールは、前記転送用画像格納領域の中で前記描画命令に応じて画像が描画される領域である変化領域を示す変化領域情報を前記汎用メモリ内に書き込む機能を有しており、
前記画像転送処理モジュールは、
（ｉ）前記画像転送用処理において、前記汎用メモリ内に格納されている前記変化領域情報を参照して前記転送用画像格納領域に格納されている前記画像変化領域内の画像部分を取得するとともに、
（ｉｉ）取得した画像部分を前記変化領域情報とともに前記ネットワークを介して前記画像表示装置に転送するようにしてもよい。
【００１１】
この構成によれば、変化領域情報もフック処理モジュールによって汎用メモリ内に書き込まれるので、描画モジュールを用いて変化領域情報を書き込む場合に比べて、変化領域情報の書込処理を高速化することができる。また、画像転送処理モジュールが変化領域の画像部分と変化領域情報とを転送するので、画面全体の画像データを転送する場合に比べて転送されるデータ量を削減することができ、転送速度を向上させることができる。
【００１２】
なお、前記画像転送処理モジュールは、
前記画像転送処理モジュールの起動時に前記フック処理モジュールを前記アプリケーションプログラムにロードし、前記画像転送処理モジュールの実行終了時に前記フック処理モジュールを前記アプリケーションプログラムからアンロードするように構成されていてもよい。
【００１３】
この構成によれば、画像転送処理が行われる場合にのみフック処理モジュールが働くので、フック処理が不要な場合にフック処理モジュールが望ましくフック処理を実行してしまうことを防止することができる。
【００１４】
本発明による方法は、ネットワークを介して画像表示装置に画像を供給して表示させる方法であって、（ａ）アプリケーションプログラムによって発行された特定の描画命令に応じて、汎用メモリ内の特定の転送用画像格納領域に画像を描画する処理を実行する工程と、（ｂ）前記転送用画像格納領域から画像を取得するとともに、取得した画像を前記ネットワークを介して前記画像表示装置に転送する工程と、を備え  前記工程（ａ）は、前記転送用画像格納領域から画像を取得する処理を少なくとも含む所定の画像転送用処理が実行されているか否かを判定する工程と、前記画像転送用処理が実行されているときには、前記画像転送用処理が終了するまで前記描画命令に応じた処理を開始せずに待機する工程と、を含むことを特徴とする。
【００１５】
この方法によれば、特定の描画命令が発行された場合に汎用メモリ内に画像を描画するので、従来のようにＶＲＡＭからＲＡＭ（汎用メモリ）に画像を転送する場合に比べて転送処理全体のスピードを向上させることができる。また、画像転送用処理が実行されているときにはその処理が終了するまで描画命令に応じた処理を開始せずに待機するので、転送用画像格納領域内にある画像が、転送前に、再描画によって変更されてしまうという不具合を防止することができる。
【００１６】
なお、本発明は種々の形態で実現することが可能であり、例えば、画像表示システム、画像表示システムを構成する画像供給装置及び画像表示装置、画像供給装置に利用されるフック処理モジュール及び画像転送処理モジュール、画像供給方法、それらの方法又は装置を実現するためのコンピュータプログラム、それらのコンピュータプログラムを記録した記録媒体などの種々の態様で実現することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を以下の順序で説明する。
Ａ．実施例：
Ｂ．変形例：
【００１８】
Ａ．実施例：
図１は本発明の一実施例として画像表示システムの構成を示す説明図である。本実施例の画像表示システム１０は、画像供給装置としてのパーソナルコンピュータ１００と、画像表示装置としてのプロジェクタ２００と、コンピュータ１００とプロジェクタ２００とをつなぐネットワーク３００と、を備えている。コンピュータ１００は、ネットワーク３００を介して画像をプロジェクタ２００供給して、プロジェクタ２００に画像を投写させて投写表示画面７０に表示させる機能を有している。
【００１９】
図２は、コンピュータ１００とプロジェクタ２００の内部構成を示すブロック図である。コンピュータ１００は、ＣＰＵ１０２と、ＲＯＭ１０４と、汎用メモリ（「システムメモリ」とも呼ぶ）としてのＲＡＭ１０６と、ハードディスクドライブ１０８と、キーボードやポインティングデバイスなどで構成される入力部１１０と、ネットワークインタフェース部１１２と、フレームメモリとしてのＶＲＡＭ１１４と、グラフィックコントローラ１１６と、液晶ディスプレイなどの表示デバイス１１８と、これら各要素を接続するバス１２０と、を備えている。
【００２０】
ＲＡＭ１０６には、アプリケーションプログラム１２２と、グラフィカルデバイスインタフェース（ＧＤＩ：Graphics Device Interface）１２４と、ディスプレイドライバ１２６と、プロジェクタドライバ１２８と、画像転送処理モジュールとしてのＶＮＣサーバ１３０と、を含む各種コンピュータプログラムが格納されている。なお、ＧＤＩ１２４と、ディスプレイドライバ１２６と、プロジェクタドライバ１２８は、オペレーティングシステムの一部として機能する。なお、本実施例においては、オペレーティングシステムとして、マイクロソフト社によって提供されるWindows（登録商標）を想定している。このような各種コンピュータプログラムは、フレキシブルディスクやＣＤ−ＲＯＭ等の、コンピュータ読み取り可能な記録媒体に記録された形態で提供される。
【００２１】
プロジェクタ２００は、ＣＰＵ２０２と、ＲＯＭ２０４と、ＲＡＭ２０６と、各種の操作ボタンを含む入力部２１０と、ネットワークインタフェース部２１２と、画像処理部２１４と、光源ランプと液晶パネルと投写光学系を含む投写部２１６と、これら各要素を接続するバス２１８と、を備えている。ＲＯＭ２０４には、画像処理ドライバ２２８と、ＶＮＣクライアント２３０とを含む各種コンピュータプログラムが格納されている。
【００２２】
以下ではまず、実施例におけるコンピュータ１００の機能を説明する前に、比較例として、ＶＮＣサーバを用いた従来のコンピュータの機能を説明する。
【００２３】
図３は、比較例におけるコンピュータのソフトウェアとハードウェアの階層構造を示す説明図である。アプリケーションプログラム１２２とＶＮＣサーバ１３０は、アプリケーションプログラム層（「ユーザアプリケーションプログラム層」とも呼ぶ）に属する。ＧＤＩ１２４とディスプレイドライバ１２６とプロジェクタドライバ１２８は、カーネル層に属する。また、汎用メモリとしてのＲＡＭ１０６と、ネットワークインタフェース部１１２と、ＶＲＡＭ１１４と、グラフィックコントローラ１１６と、表示デバイス１１８は、ハードウェア層に属する。
【００２４】
本実施例では、アプリケーションプログラム１２２としてプレゼンテーションプログラム（例えばマイクロソフト社のPowerPoint）を使用した場合について説明する。
【００２５】
アプリケーションプログラム１２２は、ＧＤＩ１２４に対して各種の描画要求を発行する。ＧＤＩ１２４は、表示装置（コンピュータ１００の表示デバイス１１８やプロジェクタ２００）や印刷装置（図示せず）などへの描画を統一的に管理しているコンピュータプログラムである。良く知られているように、ＧＤＩ１２４は、「ＧＤＩ関数」と呼ばれる描画に関するアプリケーションプログラムインタフェース（ＡＰＩ：Application Program Interface）を各種のアプリケーションプログラムに対して提供している。なお、ＡＰＩとは、一般に、アプリケーションプログラムがオペレーティングシステムの持つ様々な機能を利用するための手続きの集まりを言う。
【００２６】
アプリケーションプログラム１２２は、ＧＤＩ１２４に対して、例えばプレゼンテーションファイルに含まれているプレゼンテーションシートの画像の描画要求を発行する。通常は、描画要求には、画像の出力先に関する情報（即ち、画像を表示装置に出力するか、印刷装置に出力するかを指定する情報）も含まれている。
【００２７】
なお、ＧＤＩ１２４の代わりに、他の汎用の描画用ＡＰＩを使用することも可能である。「汎用の描画用ＡＰＩ」とは、多数のアプリケーションプログラムに対して共通に使用されるＡＰＩを意味している。
【００２８】
ＧＤＩ１２４と、ディスプレイドライバ１２６と、プロジェクタドライバ１２８の全体は、描画命令に従って描画処理を実行する描画モジュールとして機能する。具体的には、ＧＤＩ１２４は、アプリケーションプログラム１２２から出された描画要求を受け取り、その描画要求に基づいて画像の出力先をチェックし、その出力先が表示装置であれば、ディスプレイドライバ１２６とプロジェクタドライバ１２８のそれぞれに対して描画要求を渡す。
【００２９】
ディスプレイドライバ１２６は、受け取った描画要求に従ってＶＲＡＭ１１４内に画像データを描画する。なお、よく知られているように、描画要求としては、画面の全体を描画するものに限らず、画面の一部を描画するものも多用される。画面の一部を描画する描画命令を受けた場合には、ディスプレイドライバ１２６は、ＶＲＡＭ１１４内で描画対象となっている領域（「変化領域」とも呼ぶ）の画像部分のみを描画する。グラフィックコントローラ１１６は、ＶＲＡＭ１１４内に描画された画像データ（即ち、ビットマップデータ）に基づいて、表示デバイス１１８に画像を表示する。一方、プロジェクタドライバ１２８は、ＧＤＩ１２４から受け取った描画要求に従って、ＶＲＡＭ１１４内の描画対象領域（すなわち変化領域）の位置及びサイズを表す変化領域情報１０６ａをＲＡＭ１０６内に書き込む。
【００３０】
図４（Ａ）〜（Ｃ）は、ＲＡＭ１０６内の変化領域情報１０６ａと画像データ格納領域１０６ｂの例を示す説明図である。ここでは、顔の画像が図４（Ａ）〜図４（Ｃ）のように順次左に移動してゆく例を想定する。このような画像の移動は、例えばプレゼンテーションプログラムで予め用意されているアニメーション効果を用いて実現される。後述するように、比較例では、画像データ格納領域１０６ｂには、ＶＮＣサーバ１３０によってＶＲＡＭ１１４から転送された画像データが格納される。
【００３１】
図４（Ｂ）に示す変化領域Ｒａは、図４（Ａ）から図４（Ｂ）の状態に画像が移動する際の描画命令によって描画される画像部分の領域である。この変化領域Ｒａに関する変化領域情報１０６ａは、変化領域Ｒａの基準点（通常は左上点）のｘ座標Ｘａ及びｙ座標Ｙａと、変化領域Ｒａの幅Ｗａ及び高さＨａとを含んでいる。なお、基準点の座標（Ｘａ，Ｙａ）は、変化領域Ｒａの位置を示すデータであり、幅Ｗａと高さＨａは変化領域Ｒａのサイズを示すデータである。
【００３２】
図４（Ｃ）に示す変化領域Ｒｂは、図４（Ｂ）から図４（Ｃ）の状態に画像が移動する際の描画命令によって描画される画像部分の領域である。この変化領域Ｒｂの変化領域情報１０６ａも、変化領域Ｒｂの位置を示すデータＸｂ，Ｙｂと、サイズを示すデータＷｂ，Ｈｂとで構成されている。
【００３３】
例えば、図４（Ｂ）に示す時刻ｔ２の状態では、ＶＮＣサーバ１３０は、ＲＡＭ１０６内の変化領域情報１０６ａを参照して、変化領域Ｒａの画像データを、ＶＲＡＭ１１４からＲＡＭ１０６内の画像データ格納領域１０６ｂに転送する。この画像データ格納領域１０６ｂは、例えばコンピュータ１００又はプロジェクタ２００の表示解像度に等しいサイズのメモリ領域である。ＶＮＣサーバ１３０は、さらに、画像データ格納領域１０６ｂから変化領域Ｒａの画像データを読み出して、変化領域Ｒａの変化領域情報１０６ａと画像データとを含む画面更新メッセージを作成する。図４（Ｃ）の時刻ｔ３でも同様な処理が実行される。
【００３４】
図５は、画面更新メッセージの構造を示す説明図である。この画面更新メッセージは、ＶＮＣプロトコルに規定されているフレームバッファアップデート「FramebufferUpdate」の構造に準じている。画面更新メッセージは、メッセージの種類を示すメッセージヘッダ部と、メッセージのパラメータを示すパラメータ部とを有している。
【００３５】
メッセージヘッダ部には、メッセージの種類を示すメッセージタイプ(１バイト)と、変化領域の数を示す変化領域数（２バイト）とが含まれる。画面更新メッセージを示すメッセージタイプのデータ値は「０」である。変化領域数のデータ値は通常は「１」に設定される。但し、ＲＡＭ１０６内に複数の変化領域に関する変化領域情報１０６ａが未処理で残っている場合には、画面更新メッセージがそれらの複数の変化領域に関する情報（変化領域情報及び画像データ）を含むように画面更新メッセージを構成することも可能である。なお、メッセージタイプデータと変化領域数データとは１バイトのパディングを介して区分されている。
【００３６】
パラメータ部には、変化領域の基準点のｘ座標（２バイト）及びｙ座標(２バイト)と、変化領域の幅（２バイト）及び高さ（２バイト）と、変化領域の画像データの転送時のエンコーディング形式（４バイト）と、変化領域の画像データ（ｎバイト）と、が含まれている。エンコーディング形式としては、ＪＰＥＧ形式(データ値「７」)等の予め定められた形式が使用される。
【００３７】
ＶＮＣサーバ１３０は、こうして作成した画面更新メッセージをネットワークインタフェース部１１２を介してプロジェクタ２００に転送する。
【００３８】
このように、図３に示す比較例では、一旦ＶＲＡＭ１１４に格納された画像データを汎用メモリであるＲＡＭ１０６に転送した後で、ＲＡＭ１０６内にある画像データをプロジェクタ２００に転送している。このため、ＶＲＡＭ１１４からＲＡＭ１０６に転送するためにかなりの時間を要してしまい、十分な転送速度が得られない場合があった。
【００３９】
図６は、本実施例におけるコンピュータのソフトウェアとハードウェアの階層構造を示す説明図である。図３に示した比較例との違いは、アプリケーションプログラム１２２とＧＤＩ１２４との間に、フック処理モジュール４００が追加されている点と、ＲＡＭ１０６内に転送フラグ１０６ｃが設定されている点であり、他の構成は図３と同じである。フック処理モジュール４００は、アプリケーションプログラム１２２が発行する特定の描画命令をフックして先取りし、後述する処理を実行する。他の描画命令は通常通りＧＤＩ１２４によって処理される。なお、フック処理モジュール４００は、アプリケーションプログラム１２２に応じた適切な特定の描画命令のみをフックするように、各アプリケーションプログラム専用に構成されることが好ましい。
【００４０】
なお、フック処理モジュール４００も一種の描画用ＡＰＩと考えることも可能であるが、ＧＤＩ１２４のような汎用の描画用ＡＰＩとは区別される。すなわち、フック処理モジュール４００は、典型的には特定の描画命令のみを処理するように構成されているのに対して、ＧＤＩ１２４はすべての描画命令を処理するように構成されている点で相違する。
【００４１】
フック処理モジュール４００は、例えばＤＬＬ（ダイナミックリンクライブラリ）としてアプリケーションプログラム１２２にロード（インストール）される。一般に、アプリケーションプログラムは「プロセス」という単位で動作している。また、アプリケーションプログラムの実行中は、そのプロセス内に複数のモジュール（GDI32.DLLやKernel32.DLLなど）がロードされており、アプリケーションプログラムはそれらのモジュール内の関数を利用することによって各種の動作を行っている。フック処理モジュール４００の「ロード」とは、アプリケーションプログラム１２２のプロセス内に、フックプロシージャが実装されているモジュール４００を組み込むすることを意味している。
【００４２】
フック処理モジュール４００がロードされる際には、アプリケーションプログラム１２２から発行される特定の描画命令の関数アドレスが、フック処理モジュール４００内に実装されている独自機能を実行するための別の関数のアドレスに差し替えられる。この独自機能の関数内では、変化情報と画像データのＲＡＭへの書き込み処理（後述する）が実行され、その後、通常のＧＤＩ関数が実行される。フック処理モジュール４００をアンロードする際には、ロード時に差し替えられていた関数アドレスを元に戻した後に、プロセス内にロードされていたフック処理モジュール４００がアンロードされる。
【００４３】
なお、フック処理モジュール４００は、必要に応じていつでもアプリケーションプログラム１２２にロードしたり、アンロードしたりすることが可能である。但し、ＶＮＣサーバ１３０が起動する際に、動作中の特定のアプリケーションプログラム１２２（本実施例ではプレゼンテーションプログラム）にフック処理モジュール４００をロードし、また、ＶＮＣサーバ１３０を終了するときにフック処理モジュール４００をアンロードするように、ＶＮＣサーバ１３０を構成することが好ましい。こうすれば、ＶＮＣサーバ１３０が実行中の期間にのみフック処理モジュール４００を動作させることができるので、コンピュータ１００上でＶＮＣサーバ１３０が実行されていない（起動していない）ときに描画命令をフックしてしまい、望ましくない結果が生じることを回避することができる。なお、本明細書において、「コンピュータ１００上でＶＮＣサーバ１３０が実行されている」という文言は、ＶＮＣサーバ１３０のプロセスが起動されていることを意味している。
【００４４】
図７は、本実施例におけるフック処理モジュール４００とＶＮＣサーバ１３０の動作を示すフローチャートである。ステップＳ１００〜Ｓ１４０はフック処理モジュール４００によって実行され、ステップＳ２００〜Ｓ２５０はＶＮＣサーバ１３０によって定期的に実行される。
【００４５】
フック処理モジュール４００は、アプリケーションプログラム１２２から特定の描画命令が発行されたときに、ステップＳ１００においてその描画命令をフックして、ＧＤＩ１２４の代わりにその描画命令を取得する。なお、フック処理モジュール４００がフックする描画命令は、すべての描画命令ではなく、限られた特定の描画命令のみに限定することが好ましい。この理由は、アプリケーションプログラム１２２が発行する描画命令には多数のものがあるので、そのすべてをフックするようにすると、却って処理速度を低下させたり、所望の描画を行えなかったりする可能性があるからである。
【００４６】
ステップＳ１１０では、ＲＡＭ１０６内の転送フラグ１０６ｃ（図６）がオフ状態にあるか否かが判定される。この転送フラグ１０６ｃは、ＶＮＣサーバ１３０が所定の画像転送用処理（後述するステップＳ２１０〜Ｓ２３０）を実行中であるときにオン状態に設定されるフラグである。転送フラグ１０６ｃがオン状態にあるときには、フック処理モジュール４００は転送フラグ１０６ｃがオフになるまで待機する。この待機中は、フック処理モジュール４００が一定時間内に転送フラグ１０６ｃを確認する。転送フラグ１０６ｃがオフ状態になると、ステップＳ１２０移行の処理が開始される。
【００４７】
ステップＳ１２０では、取得した描画命令に応じて変化領域情報を登録する処理が実行される。具体的には、フック処理モジュール４００が、描画命令に従って描画が行われる領域（例えば図４（Ｂ）の変化領域Ｒａ）の位置とサイズを取得し、その変化領域を表す変化領域情報１０６ａをＲＡＭ１０６に直接書き込む処理を実行する。
【００４８】
ステップＳ１３０では、変化領域の画像データの書込処理が実行される。具体的には、図４（Ｂ）に示す時刻ｔ２では、フック処理モジュール４００が、描画命令に従って変化領域Ｒａ内の画像データを展開して、その画像データをＲＡＭ１０６内の画像データ格納領域１０６ｂに直接書き込む処理を実行する。
【００４９】
ステップＳ１４０では、フック処理モジュール４００が、ステップＳ１００で取得した描画命令に従って通常のＧＤＩ関数を呼び出して描画処理を実行させる。なお、ディスプレイドライバ１２６とプロジェクタドライバ１２８（図６）は、図３に示した比較例と同様に、ＧＤＩ１２４から受け取った描画命令に従ってそれぞれの処理を実行する。但し、本実施例では、ＶＮＣサーバ１３０が、プロジェクタドライバ１２８によって作成された変化領域情報を使用しないように構成されている。図６において、プロジェクタドライバ１２８の前後にある矢印が破線で描かれているのは、このことを意味している。
【００５０】
一方、ＶＮＣサーバ１３０は、まず、ステップＳ２００において転送フラグ１０６ｃをオン状態に切り換えて、以下に説明するステップＳ２１０〜Ｓ２３０の処理（「画像転送用処理」と呼ぶ）を開始する。
【００５１】
ＶＮＣサーバ１３０は、ステップＳ２１０において、プロジェクタ２００に転送すべき画像データの領域（「画面更新領域」と呼ぶ）を決定する。具体的には、例えば図４（Ｂ）の時刻ｔ２の状態では、ＶＮＣサーバ１３０は、ＲＡＭ１０６内の変化領域情報１０６ａを取得して、変化領域Ｒａを画面更新領域として決定する。但し、ＲＡＭ１０６内に複数の変化領域に関する未処理の変化領域情報１０６ａが存在する場合には、複数の変化領域の和領域に相当する領域が画面更新領域として決定される。
【００５２】
図８は、複数の変化領域と画面更新領域との関係を示す説明図である。ここでは、図８（Ａ）に示すように互いに重なる２つの変化領域Ｒ１，Ｒ２が存在する場合を考える。このときには、まず、図８（Ｂ）に示すように、変化領域Ｒ１，Ｒ２の和領域を、互いに重ならない隣接する矩形領域Ｒ１１〜Ｒ１３に分割する。そして、これらの矩形領域Ｒ１１〜Ｒ１３の集合を、画面更新領域として採用する。このような画面更新領域Ｒ１１〜Ｒ１３を使用すれば、変化領域Ｒ１，Ｒ２が重なった部分の画像データを繰り返して転送することを回避できるので、データ転送量を削減することが可能である。なお、複数の変化領域が互いに重なっていない場合には、それらがそのまま画面更新領域として使用される。
【００５３】
ステップＳ２２０では、ＲＡＭ１０６の画像データ格納領域１０６ｂの中で、画面更新領域に相当する画像部分の画像データが取得される。そして、ステップＳ２３０では、予め設定されているエンコーディング形式に従ってその画像データが変換される。
【００５４】
ステップＳ２１０〜Ｓ２３０における画像転送用処理が終了すると、ステップＳ２４０において、ＶＮＣサーバ１３０が転送フラグ１０６ｃをオフ状態に切り換える。そして、ステップＳ２５０では、変換された画像データと変換領域情報とを含む画面更新メッセージ（図５）が作成され、ネットワークインタフェース部１１２を介してプロジェクタ２００に転送される。
【００５５】
ＶＮＣサーバ１３０によってステップＳ２１０〜Ｓ２３０の画像転送用処理が実行されている間は、転送フラグ１０６ｃがオン状態に維持されているので、フック処理モジュール４００が描画命令に応じた処理（ステップＳ１２０〜Ｓ１４０）を実行することができず、待機している状態になる。この利点については後述する。
【００５６】
プロジェクタ２００のネットワークインタフェース部２１２（図２）は、ネットワーク３００を介して供給された通信データを受信すると、この通信データに含まれている画面更新メッセージを取り出して、ＶＮＣクライアント２３０に渡す。ＶＮＣクライアント２３０は、画面更新メッセージに含まれる画像データを画像処理ドライバ２２８に渡す。画像処理ドライバ２２８は、この画像データに従って画像処理部２１４を制御し、画像処理部２１４によって画像処理部２１４内の表示メモリ（図示せず）に画像データを展開させる。この結果、プロジェクタ２００は、図１に示すように、投写表示画面７０に画像を表示することができる。
【００５７】
図７の手順において、転送フラグ１０６ｃを用いてフック処理モジュール４００とＶＮＣサーバ１３０の処理を調停している理由は以下の通りである。図９は、転送フラグ１０６ｃを利用しない場合の不具合の例を示している。ここでは、ＶＮＣサーバ１３０が、図４（Ｂ）に示す時刻ｔ２の変化領域情報１０６ａ（変化領域Ｒａの情報）を取得し、その後、ＶＮＣサーバ１３０が画像データ格納領域１０６ｂから画像データを取得する前に、フック処理モジュール４００によって画像データ格納領域１０６ｂ内の画像が図４（Ｃ）に示すものに書き換えられていた状態を想定している。転送フラグ１０６ｃを利用せず、フック処理モジュール４００とＶＮＣサーバ１３０とがそれぞれ非同期に処理を実行する場合には、このような事態が生じうる。ＶＮＣサーバ１３０は、画像データ格納領域１０６ｂから変化領域Ｒａの画像データを取得するが、このとき、画像データ格納領域１０６ｂ内の画像データは図４（Ｃ）のように書き換えられている。従って、ＶＮＣサーバ１３０によって取得されプロジェクタ２００に転送されて投写表示画面７０上に表示される画像は、図９に示すようなものとなる。時刻ｔ２の変化領域情報１０６ａに従って本来表示すべき画像は、図４（Ｂ）に示すものであり、図９の画像は望ましくないものであることが理解できる。
【００５８】
このように、転送フラグ１０６ｃを利用しない場合には、フック処理モジュール４００とＶＮＣサーバ１３０とが非同期に（すなわち互いに独立に）処理を実行しているので、本来転送されるべき画像部分と異なる画像部分が転送されてしまうという不具合が生じる可能性がある。これに対して、図７に示した処理手順によれば、ＶＮＣサーバ１３０が画像転送用処理を実行している間は転送フラグがオン状態に維持されており、フック処理モジュール４００によって画像データ格納領域１０６ｂ内の画像データが書き換えられることが無い。従って、上述した不具合の発生を防止することが可能である。
【００５９】
このように、本実施例では、フック処理モジュール４００が、特定の描画命令をフックして先取りし、変化領域の画像データをＲＡＭ１０６に直接書き込む処理を実行するようにしている。この結果、図３に示した比較例においてＶＲＡＭ１１４からＲＡＭ１０６への画像データの転送に要していた時間を節約することができる。この結果、プロジェクタ２００に画像データを転送する場合の転送速度を十分に速くすることができるという利点がある。また、転送フラグ１０６ｃを用いてフック処理モジュール４００とＶＮＣサーバ１３０との処理を同期させるようにしたので、誤った画像部分を転送してしまうことを防止することができる。
【００６０】
なお、一般に使用されているパーソナルコンピュータでは、ＲＡＭ１０６からＶＲＡＭ１１４へのデータ転送は非常に高速に実行できるのに対して、ＶＲＡＭ１１４からＲＡＭ１０６へのデータ転送はその数倍低速でしか実行できないアーキテクチャとなっていることが多い。実施例では、低速なＶＲＡＭからＲＡＭへのデータ転送を削減できるので、プロジェクタ２００に画像データを転送するために要する時間を大幅に削減することが可能である。
【００６１】
Ｂ．変形例：
なお、本発明は上記した実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能であり、例えば以下のような変形が可能である。
【００６２】
Ｂ１．変形例１：
コンピュータ１００からプロジェクタ２００に供給される画面更新メッセージとしては、上記実施例で使用したもの以外の種々のものを使用することが可能である。例えば、画面更新メッセージとして、少なくとも画像データを含むものを使用することができる。具体的には、例えば、画面全体の画像データを転送する場合には、変化領域情報を転送する必要は無い。
【００６３】
また、画面更新メッセージとしては、変化領域の位置及びサイズを示す情報と、変化領域内の画像データとを少なくとも含むことが好ましい。この理由は、変化領域に関するデータ（変化領域情報及びその画像データ）のみを転送すれば、転送すべきデータ量が少なくなるからである。
【００６４】
Ｂ２．変形例２：
上記実施例では、転送フラグ１０６ｃを用いてフック処理モジュール４００とＶＮＣサーバ１３０との間の処理を調停していたが、転送フラグ１０６ｃ以外の他の構成を用いて両者の調停を行うことも可能である。例えば、ＶＮＣサーバ１３０からフック処理モジュール４００に、画像転送用処理を実行中であるか否かを示すメッセージを伝えるように両者を構成してもよい。この場合にも、フック処理モジュール４００は、ＶＮＣサーバ１３０が画像転送用処理を実行している間は、描画命令に応じた処理を開始せずに待機することができる。
【００６５】
Ｂ３．変形例３：
転送フラグ１０６ｃがオンに維持されるべき画像転送用処理としては、図７のステップＳ２１０〜Ｓ２３０からステップＳ２３０（画像データ変換処理）を除外してもよく、あるいは、逆にステップＳ２１０〜Ｓ２３０にステップＳ２５０（画像データ転送処理）を追加するようにしてもよい。但し、画面更新領域が全画面でない場合（変化領域情報を利用する場合）には、画像転送用処理としては、画面領域決定処理（ステップＳ２１０）と、画面更新領域の画像データ取得処理（ステップＳ２２０）とを少なくとも含むことが好ましい。一方、画面更新領域が全画面である場合には、画像転送用処理は画像データ取得処理（ステップＳ２２０）を少なくとも含んでいればよい。
【００６６】
Ｂ４．変形例４：
上記実施例においては、画像供給装置としてパーソナルコンピュータを用いていたが、この代わりに、他の種類のコンピュータ（モバイルコンピュータ、ハンドヘルドコンピュータ、ワークステーションなど）を用いるようにしても良い。また、これらコンピュータの他に、ネットワークに接続可能であって、コンピュータと同様な機能を有する機器を用いるようにしても良い。そのような機器には、例えば、情報携帯端末や、携帯電話機や、メール端末や、ゲーム機や、セットトップボックスなどが含まれる。また、画像表示装置としては、プロジェクタ以外の種々の表示装置を使用することが可能である。
【００６７】
Ｂ５．変形例５：
ネットワークとしては、ローカルエリアネットワーク（ＬＡＮ）の他、ワイドエリアネットワーク（ＷＡＮ）や、インターネットや、イントラネットなど、各種ネットワークを適用することができる。また、ネットワークは、有線で構成されていても良く、あるいは無線で構成されていても良い。
【００６８】
Ｂ６．変形例６：
上記実施例においてソフトウェアで実現されている機能の一部をハードウェアで実現してもよく、あるいは、ハードウェアで実現されている機能の一部をソフトウェアで実現してもよい。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施例として画像表示システムの構成を示す説明図である。
【図２】コンピュータとプロジェクタの内部構成を示すブロック図である。
【図３】比較例におけるコンピュータのソフトウェアとハードウェアの階層構造を示す説明図である。
【図４】実施例における変化領域情報と画像データ格納領域の例を示す説明図である。
【図５】画面更新メッセージの構造を示す説明図である。
【図６】実施例におけるコンピュータのソフトウェアとハードウェアの階層構造を示す説明図である。
【図７】実施例におけるフック処理モジュールとＶＮＣサーバの動作を示すフローチャートである。
【図８】複数の変化領域と画面更新領域との関係を示す説明図である。
【図９】転送フラグ１０６ｃを利用しない場合の不具合の例を示す説明図である。
【符号の説明】
【００７０】
１０…画像表示システム
６０…表示画面
７０…投写表示画面
１００…コンピュータ
１０２…ＣＰＵ
１０４…ＲＯＭ
１０６…ＲＡＭ
１０６ａ…変化領域情報
１０６ｂ…画像データ格納領域
１０６ｃ…転送フラグ
１０８…ハードディスクドライブ
１１０…入力部
１１２…ネットワークインタフェース部
１１４…ＶＲＡＭ
１１６…グラフィックコントローラ
１１８…表示デバイス
１２０…バス
１２２…アプリケーションプログラム
１２４…ＧＤＩ（グラフィックスデバイスインタフェイス）
１２６…ディスプレイドライバ
１２８…プロジェクタドライバ
１３０…ＶＮＣサーバ
２００…プロジェクタ
２０２…ＣＰＵ
２０４…ＲＯＭ
２０６…ＲＡＭ
２１０…入力部
２１２…ネットワークインタフェース部
２１４…画像処理部
２１６…投写部
２１８…バス
２２８…画像処理ドライバ
２３０…ＶＮＣクライアント
３００…ネットワーク
４００…フック処理モジュール
【図１】
2005352796.tif 000003
【図２】
2005352796.tif 000004
【図３】
2005352796.tif 000005
【図４】
2005352796.tif 000006
【図５】
2005352796.tif 000007
【図６】
2005352796.tif 000008
【図７】
2005352796.tif 000009
【図８】
2005352796.tif 000010
【図９】
2005352796.tif 000011