(57)【要約】【課題】  描画命令単位でレンダラの登録と制御が可能になり、且つグラフィックス描画を行う装置を低コストで拡張可能にするための技術を提供すること。【解決手段】  第１の描画命令に対応する第１のレンダラが、該描画命令より前に発行された第２の描画命令に対応する第２のレンダラと異なる場合、第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する。第１の描画命令から、該第１の描画命令に関連づけられている作成メソッドに従って、第１のレンダラに対するディスプレイリストを作成する。【選択図】  図１
2015121999.tif 000002
【特許請求の範囲】
【請求項１】
ディスプレイリストに従って描画処理を実行するレンダラを複数、有する画像処理装置であって、
アプリケーションから発行された第１の描画命令に関連づけられている第１のレンダラが、該第１の描画命令よりも前に発行された第２の描画命令に関連づけられている第２のレンダラとは異なる場合には、前記第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する制御手段と、
前記第１の描画命令から、該第１の描画命令に関連づけられている作成メソッドに従って、前記第１のレンダラに対するディスプレイリストを作成する作成手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記作成手段は、
前記第１の描画命令よりも後にアプリケーションから発行された第３の描画命令に関連づけられているレンダラが前記第１のレンダラである場合には、該第３の描画命令から、該第３の描画命令に関連づけられている作成メソッドに従ってディスプレイリストを作成し、該作成したディスプレイリストを、該第１のレンダラについて作成済みのディスプレイリストに追加登録することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記作成手段は、
前記第１の描画命令よりも後にアプリケーションから発行された第３の描画命令に関連づけられている第３のレンダラが前記第１のレンダラとは異なるレンダラである場合には、該第３の描画命令から、該第３の描画命令に関連づけられている作成メソッドに従って、前記第３のレンダラに対するディスプレイリストを作成することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
更に、
レンダラの識別子と、描画命令の識別子と、該描画命令からディスプレイリストを作成する作成メソッドと、該レンダラに該ディスプレイリストに従った描画処理の指示を発行する実行メソッドと、を含む命令を、レンダラごとに取得する手段と、
前記命令から、描画命令の識別子と、該描画命令からディスプレイリストを作成する作成メソッドと、のセットを重複することなく取得し、該取得したセットの第１のリストを作成する手段と、
レンダラごとの前記命令から、該レンダラの識別子と、該レンダラに対する描画命令の識別子と、を登録した第２のリストと、該レンダラの識別子と、該レンダラに対する実行メソッドと、を登録した第３のリストと、を作成する手段と、
前記第１のリスト、前記第２のリスト、前記第３のリストを管理する手段と
を備えることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記制御手段は、
前記第１のリストに前記第１の描画命令の識別子が登録されている場合には、該識別子に対応するレンダラの識別子を前記第２のリストから取得し、該取得した識別子が、前記第２のレンダラの識別子と異なる場合には、前記第２のレンダラの識別子に対応する実行メソッドを前記第３のリストから取得し、該取得した実行メソッドに従って、前記第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する
ことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
更に、
レンダラのタイプを示す識別子と、レンダラの識別子と、描画命令の識別子と、該描画命令からディスプレイリストを作成する作成メソッドと、該レンダラに該ディスプレイリストに従った描画処理の指示を発行する実行メソッドと、を含む命令を、レンダラごとに取得する手段と、
前記命令から、描画命令の識別子と、該描画命令からディスプレイリストを作成する作成メソッドと、のセットを重複することなく取得し、該取得したセットの第１のリストを作成する手段と、
レンダラごとの前記命令から、該レンダラのタイプを示す識別子と、該レンダラの識別子と、を登録した第２のリストと、該レンダラのタイプを示す識別子と、該レンダラに対応する実行メソッドと、を登録した第３のリストと、を作成する手段と、
前記第１のリスト、前記第２のリスト、前記第３のリストを管理する手段と
を備えることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項７】
前記制御手段は、
前記第１のリストに前記第１の描画命令の識別子が登録されている場合には、該第１の描画命令の実行が可能なレンダラのタイプを示す識別子を特定し、該特定した識別子と、前記第２の描画命令の実行が可能なレンダラのタイプを示す識別子と、が異なる場合には、前記第１の描画命令の実行が可能なレンダラのタイプを示す識別子に対応する該レンダラの識別子を前記第２のリストから取得し、該取得した識別子が、前記第２のレンダラの識別子と異なる場合には、前記第２のレンダラの識別子に対応する実行メソッドを前記第３のリストから取得し、該取得した実行メソッドに従って、前記第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する
ことを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記命令は、アプリケーションから発行されることを特徴とする請求項４乃至７の何れか１項に記載の画像処理装置。
【請求項９】
前記命令は、前記レンダラから発行されることを特徴とする請求項４乃至７の何れか１項に記載の画像処理装置。
【請求項１０】
前記レンダラは、ディスプレイリストに従って描画処理を行うと、該ディスプレイリストをクリアすることを特徴とする請求項１乃至９の何れか１項に記載の画像処理装置。
【請求項１１】
ディスプレイリストに従って描画処理を実行するレンダラを複数、有する画像処理装置が行う画像処理方法であって、
前記画像処理装置の制御手段が、アプリケーションから発行された第１の描画命令に関連づけられている第１のレンダラが、該第１の描画命令よりも前に発行された第２の描画命令に関連づけられている第２のレンダラとは異なる場合には、前記第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する制御工程と、
前記画像処理装置の作成手段が、前記第１の描画命令から、該第１の描画命令に関連づけられている作成メソッドに従って、前記第１のレンダラに対するディスプレイリストを作成する作成工程と
を備えることを特徴とする画像処理方法。
【請求項１２】
コンピュータを、請求項１乃至１０の何れか１項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画技術に関するものである。
【背景技術】
【０００２】
一般的なグラフィックス描画装置は、アプリケーションから、図形や文字などのグラフィックスオブジェクトを描画するための描画命令を受け取って、描画リスト（所謂ディスプレイリスト）を生成する。そしてグラフィックス描画装置は、アプリケーションが描画同期命令を発行すると、生成した描画リストに従ってレンダリングを行い、フレームバッファへラスタイメージを出力する。例えば、X-winodwシステムでは、アプリケーションが発行した描画命令をX-protocolと呼ばれる通信方式を介してX-serverへ伝送して蓄積する。そしてアプリケーションがフラッシュ命令を発行すると、X-serverが蓄積した描画命令群を実行して、レンダリングを行う。
【０００３】
このようなグラフィックス描画装置には、レンダラが固定的に組み込まれており、拡張性に乏しいという課題がある。レンダラの拡張性を増すための技術として、例えば特許文献１に記載された技術が公開されている。この従来技術では、グラフィックス描画装置が提供する全ての描画命令に対応可能な複数のレンダラを動的に登録できるようにし、アプリケーションがレンダラを指定することが可能となっている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2006-79638号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示されている技術では、どのようなレンダラが指定されてもグラフィックス描画装置が提供する全ての描画命令を処理しなければならない。そのため、登録されるレンダラが、原則として全ての描画命令に対応していなければならない。全ての描画命令に対応できないレンダラは、グラフィックス描画装置が規定する最低限の描画命令に対応する必要がある。そしてレンダラが対応できない描画命令が与えられた場合は、グラフィックス描画装置が描画命令を再構成してレンダラが対応可能な描画命令シーケンスに置き換える必要があった。
【０００６】
もし、レンダラが全ての描画命令に対応しようとすると、レンダラの実装コストが増加するという課題がある。また、全ての描画命令に対応できないレンダラを補助するためには、グラフィックス描画装置自身の実装コストが増加するという課題がある。更に、グラフィックス描画装置が規定する最低限の描画命令を実行可能とするために、レンダラの汎用性が制限されるという課題があった。
【０００７】
本発明はこのような問題に鑑みてなされたものであり、描画命令単位でレンダラの登録と制御が可能になり、且つグラフィックス描画を行う装置を低コストで拡張可能にするための技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一様態は、ディスプレイリストに従って描画処理を実行するレンダラを複数、有する画像処理装置であって、アプリケーションから発行された第１の描画命令に関連づけられている第１のレンダラが、該第１の描画命令よりも前に発行された第２の描画命令に関連づけられている第２のレンダラとは異なる場合には、前記第２のレンダラに対し、該第２のレンダラについて作成済みのディスプレイリストに従った描画処理を指示する制御手段と、前記第１の描画命令から、該第１の描画命令に関連づけられている作成メソッドに従って、前記第１のレンダラに対するディスプレイリストを作成する作成手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明の構成によれば、描画命令単位でレンダラの登録と制御が可能になり、且つグラフィックス描画を行う装置を低コストで拡張可能になる。
【図面の簡単な説明】
【００１０】
【図１】画像処理装置の機能構成例を示すブロック図。
【図２】登録命令の構成例を示す図。
【図３】画像処理装置が行う処理のフローチャート。
【図４】ステップＳ３０２における処理の詳細を示す図。
【図５】描画リスト作成メソッド情報の構成例を示す図。
【図６】ステップＳ３０３における処理の詳細を示すフローチャート。
【図７】レンダラ情報の構成例を示す図。
【図８】ステップＳ３０６における処理の詳細を示すフローチャート。
【図９】ステップＳ３０９における処理の詳細を示すフローチャート。
【図１０】ステップＳ８０８における処理の詳細を示すフローチャート。
【図１１】フレームバッファ書き込み部１０７の機能構成例を示すブロック図。
【図１２】図１に示した構成の変形例を示すブロック図。
【図１３】登録命令の構成例を示す図。
【図１４】レンダラタイプと描画命令との対応の一例を示す図。
【図１５】画像処理装置が行う処理のフローチャート。
【図１６】ステップＳ１５０２における処理の詳細を示すフローチャート。
【図１７】レンダラタイプ情報の構成例を示す図。
【図１８】ステップＳ１５０３における処理の詳細を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１２】
［第１の実施形態］
本実施形態に係るグラフィック描画装置として機能する画像処理装置の機能構成例について、図１のブロック図を用いて説明する。画像処理装置には、アプリケーション１０８がインストールされていると共に、該アプリケーション１０８からの様々な指示に応じてレンダラの機能登録やグラフィック描画等を行う画像処理部１００が備わっている。
【００１３】
アプリケーション１０８の機能及び画像処理部１００を構成する各機能部の機能については、図３のフローチャートに従った処理の説明の中で行うことにする（ここで、図１におけるＭは自然数である）。図３は、本実施形態に係る画像処理装置が行う処理のフローチャートである。
【００１４】
先ず、ステップＳ３０１では、アプリケーション１０８はレンダラ機能登録命令を呼び出して、レンダラ１０４，１０５，１０６のそれぞれに対する登録命令を、レンダラ機能登録部１０１に対して送出する。実際には、不図示の制御部が該アプリケーション１０８を実行することでレンダラ機能登録命令を呼び出し、レンダラ１０４，１０５，１０６のそれぞれに対する登録命令を、レンダラ機能登録部１０１に対して送出する。
【００１５】
ここで、１つのレンダラ（レンダラＸとする）に対する登録命令の構成例について、図２を用いて説明する。
【００１６】
レンダラ識別子２０１は、レンダラＸに固有の識別子であり、例えば登録命令２００がレンダラ１０４に対するものである場合には、レンダラ識別子２０１は、レンダラ１０４の識別子となる。
【００１７】
描画命令の数２０２は、レンダラＸについて登録しようとする描画命令に固有の識別子と、該描画命令から描画リスト（ディスプレイリスト）を作成するメソッドである描画リスト作成メソッドと、から成るセットの数である。図２では、描画命令識別子２０３と描画命令識別子２０３に対応する描画リスト作成メソッド２０４のセット、…、描画命令識別子２０５と描画命令識別子２０５に対応する描画リスト作成メソッド２０６のセット、の計Ｎセットが登録命令２００に含まれている。然るにこの場合、描画命令の数２０２＝Ｎとなる。
【００１８】
描画命令識別子２０３（２０５）は、画像処理装置が提供するそれぞれの描画命令に固有の識別子であり、レンダラＸについて登録しようとする描画命令の識別子である。例えば、矩形描画命令の描画命令識別子には「１」、円弧描画命令の描画命令識別子には「２」を割り当てる。
【００１９】
描画リスト作成メソッド２０４（２０６）は、描画命令識別子２０３（２０５）に対応する描画命令から描画リスト（ディスプレイリスト）を作成するメソッドである。描画リスト作成メソッドの形式は任意であり、例えば関数ポインタとして扱うことも可能であるし、メソッドの識別子であっても良い。ここでは、簡単のために関数ポインタであるとする。
【００２０】
描画実行メソッド２０７は、レンダラ識別子２０１が示すレンダラ（レンダラＸ）に、登録命令２００に含まれている描画命令識別子２０３（２０５）に対応する描画命令（描画リスト）に従って描画実行を指示するためのメソッドである。描画実行メソッド２０７の形式は任意であり、例えば関数ポインタとして扱うことも可能であるし、メソッドの識別子であっても良い。ここでは、簡単のために関数ポインタであるとする。
【００２１】
ここで、描画リスト作成メソッド２０４（２０６）に従って作成する描画リストは、レンダラＸがレンダリングを行うために必要な粒度まで分解されたプリミティブな命令を含んでいる。例えばベクタグラフィックスの規格として一般的に知られているOpenVGにおけるパスデータフォーマットなどが、それに相当する。なお、本実施形態では、各レンダラの描画リストのフォーマットは統一されている必要は無い。従って、レンダラごとに異なるフォーマットの描画リストが出力される場合もありえる。同様に、描画実行メソッド２０７の実行形式もレンダラに応じた様々な形態がありえる。例えば、実行指示をレンダラに送付するだけのものもあれば、描画リストに依存した制御シーケンスが必要なものもある。もし、描画リストに依存する場合は、描画リスト作成メソッドが必要な情報をデータベース化し、それを伝達できるように描画実行メソッドの仕様を考慮しておけば対応可能である。
【００２２】
このような登録命令２００は、例えば、図１の場合、レンダラ１０４，１０５，１０６のそれぞれについて、レンダラ機能登録部１０１に送出されることになる。
【００２３】
図３に戻って、ステップＳ３０１では更に、レンダラ機能登録部１０１は、アプリケーション１０８からレンダラごとの登録命令を受けると、それぞれの登録命令から描画命令識別子及び対応する描画リスト作成メソッドのセットを抽出する。そしてレンダラ機能登録部１０１は、抽出したそれぞれのセットを、描画命令識別子に従って（降順でも昇順でも良い）ソートし、該ソートしたセットのリストを保持する。なお、同じ描画命令識別子が複数の登録命令に含まれていた場合には、重複を避けてリストを作成する。重複を避けるための方式は任意である。例えば、単純に先登録優先或いは後登録優先とすることが出来る。または、レンダラの処理能力を考慮し、最も処理能力の高いレンダラについて優先的に描画命令識別子を採用する方式も考えられる。例えば、処理能力がレンダラ１０４＞レンダラ１０５＞レンダラ１０６であり、且つそれぞれのレンダラの登録命令に同じ描画命令識別子が含まれていたとする。この場合、レンダラ１０５の登録命令及びレンダラ１０６の登録命令から該描画命令識別子を含むセットを削除してから上記ソートを行って、上記リストを作成すればよい。
【００２４】
次に、ステップＳ３０２では、レンダラ機能登録部１０１は、ソートしたリストに含まれているそれぞれのセット（描画命令識別子及び描画リスト作成メソッドのセット）について、描画リスト作成メソッド情報を作成する。そしてレンダラ機能登録部１０１は、作成したそれぞれの描画リスト作成メソッド情報を、描画制御部１０２に対して送出するので、描画制御部１０２は、この送出されたそれぞれの描画リスト作成メソッド情報をテーブルに登録して管理する。
【００２５】
ステップＳ３０２における処理の詳細について、図４のフローチャートを用いて説明する。図４のフローチャートでは、ステップＳ４０１からステップＳ４０４の一連の処理を、上記リストに含まれているセットの数だけ繰り返して実行する。
【００２６】
ステップＳ４０２でレンダラ機能登録部１０１は、ソートしたリストから未選択のセット（描画命令識別子及び描画リスト作成メソッドのセット）を選択し、該選択したセットから、描画リスト作成メソッド情報を作成する。描画リスト作成メソッド情報の構成例を図５に示す。
【００２７】
図５の描画リスト作成メソッド情報５００には、描画命令識別子５０１と、描画リスト作成メソッドへのポインタ５０２と、が含まれている。描画命令識別子５０１は、選択したセットに含まれている描画命令識別子である。ポインタ５０２は、選択したセットに含まれている描画リスト作成メソッドに対するポインタである。
【００２８】
そしてレンダラ機能登録部１０１は、作成した描画リスト作成メソッド情報を、描画制御部１０２に対して送出するので、描画制御部１０２は、この送出されたそれぞれの描画リスト作成メソッド情報を受け取る（取得する）。
【００２９】
ステップＳ４０３では、描画制御部１０２は、受け取った描画リスト作成メソッド情報を、受け取った順に、テーブルに登録する。このテーブルは、例えば描画命令識別子順に対応する描画リスト作成メソッドへのポインタを並べた関数ポインタテーブルとなる。
【００３０】
図３に戻って、次に、ステップＳ３０３では、レンダラ機能登録部１０１は、レンダラごとの登録命令からレンダラ情報を作成し、該作成したレンダラ情報を描画同期判定部１０３に対して送出する。描画同期判定部１０３は、レンダラごとのレンダラ情報から、レンダラごとに後述するテーブルを作成する。
【００３１】
ステップＳ３０３における処理の詳細について、図６のフローチャートを用いて説明する。図６のフローチャートでは、ステップＳ６０１からステップＳ６０５の一連の処理を、それぞれのレンダラ（図１の場合、レンダラ１０４〜１０６）について実行する。
【００３２】
ステップＳ６０２では、レンダラ機能登録部１０１は、それぞれのレンダラの登録命令のうち未選択の登録命令を選択し、該選択した登録命令からレンダラ情報を作成する。レンダラ情報の構成例を図７に示す。図７に示す如く、レンダラ情報は、図２に示した登録命令から描画リスト作成メソッドを削除したものとなっている。そしてレンダラ機能登録部１０１は、作成したレンダラ情報を、描画同期判定部１０３に対して送出するので、描画同期判定部１０３は、この送出されたレンダラ情報を受け取る。
【００３３】
ステップＳ６０３では、描画同期判定部１０３は、レンダラ情報から、レンダラ識別子及びそれぞれの描画命令識別子を抽出し、該抽出した情報を登録したテーブルを作成する。
【００３４】
ステップＳ６０４では、描画同期判定部１０３は、レンダラ情報から、レンダラ識別子及び描画実行メソッドを抽出し、該抽出した情報を登録したテーブルを作成する。上述のように、本実施形態では、描画実行メソッドは関数ポインタとして登録される。
【００３５】
次に、ステップＳ３０４〜ステップＳ３０７の一連の処理は、グラフィックス要素ごとに行う。すなわち、この一連の処理は、描画するグラフィックス要素の数だけ繰り返して行うことになる。
【００３６】
ステップＳ３０５では、アプリケーション１０８が、未描画のグラフィックス要素に対応する描画命令を、描画制御部１０２に対して発行する。実際には、不図示の制御部が該アプリケーション１０８を実行することで、未描画のグラフィックス要素に対応する描画命令を、描画制御部１０２に対して発行する。
【００３７】
ステップＳ３０６では、描画制御部１０２は、この発行された描画命令を受けると、該描画命令に従って描画処理を実行する。ステップＳ３０６における処理の詳細について、図８のフローチャートを用いて説明する。
【００３８】
ステップＳ８０１では、描画制御部１０２は、アプリケーション１０８から発行された描画命令を受け取る。ここで、アプリケーション１０８による描画命令の呼び出し形式は任意である。例えば、関数コールであれば、描画命令識別子５０１に対応したAPIを引数と共に呼び出す。ここに、引数はその描画命令に依存したパラメータである。また、描画命令識別子とパラメータを送付する形式であっても良い。
【００３９】
次に、ステップＳ８０２では、描画制御部１０２は、上記のステップＳ３０２でテーブルに登録したそれぞれの描画リスト作成メソッド情報から、ステップＳ８０１で受け取った描画命令の識別子を含む描画リスト作成メソッド情報を検索する。この検索の結果、ステップＳ８０１で受け取った描画命令の識別子を含む描画リスト作成メソッド情報の検索に成功した場合には、処理はステップＳ８０３に進み、この検索に失敗した場合には、処理はステップＳ８０４に進む。
【００４０】
ステップＳ８０４では、描画制御部１０２は、アプリケーション１０８にエラーを返し、処理を中断する。なお、ステップＳ８０４におけるエラー処理では、他の処理を行うようにしても構わない。
【００４１】
一方、ステップＳ８０３では、描画制御部１０２は、ステップＳ８０２で検索した描画リスト作成メソッド情報に含まれている描画命令識別子（すなわち、ステップＳ８０１で受け取った描画命令の識別子）を、描画同期判定部１０３に対して送出する。
【００４２】
ステップＳ８０５では、描画同期判定部１０３は、ステップＳ８０３で描画制御部１０２から送出された描画命令識別子を受け取る。そして描画同期判定部１０３は、上記のステップＳ６０３で作成したテーブルから、この受け取った描画命令識別子に対応するレンダラ識別子（レンダラ識別子Ａとする）を特定する。また、描画同期判定部１０３は、上記のステップＳ６０３で作成したテーブルから、該描画命令識別子の１つ前（過去）に描画制御部１０２から受け取った描画命令識別子に対応するレンダラ識別子（レンダラ識別子Ｂとする）を特定する。
【００４３】
そして、描画同期判定部１０３は、レンダラ識別子Ａ＝レンダラ識別子Ｂであるか否かを判断する。即ち、ステップＳ８０１で受け取った描画命令に従って描画処理を行うレンダラが、該描画命令よりも１つ前の描画命令に従って描画処理を行ったレンダラから変わったのか、それとも同じであるのか、を判断する。
【００４４】
この判断の結果、レンダラ識別子Ａ＝レンダラ識別子Ｂである場合には、処理はステップＳ８０９に進み、レンダラ識別子Ａ≠レンダラ識別子Ｂである場合には、処理はステップＳ８０６に進む。
【００４５】
ステップＳ８０９では、描画同期判定部１０３は、使用するレンダラが変化しなかったことを示す応答（例えばＮＵＬＬ）を、描画制御部１０２に返す。一方、ステップＳ８０６では、描画同期判定部１０３は、上記のステップＳ６０４で作成したテーブルから、レンダラ識別子Ｂに対応する描画実行メソッドを特定する。そして描画同期判定部１０３は、この特定した描画実行メソッドを、描画制御部１０２に返す。
【００４６】
ステップＳ８０７では、描画制御部１０２は、描画同期判定部１０３から受け取った描画実行メソッド（レンダラ識別子Ｂに対応する描画実行メソッド）を呼び出す。そしてステップＳ８０８では、描画制御部１０２は、レンダラ識別子Ｂに対応するレンダラ（レンダラ１０４〜１０６の何れか）と、フレームバッファ書き込み部１０７と、を制御して、描画実行処理を行う。ステップＳ８０８における処理の詳細については、図１０のフローチャートを用いて後述する。
【００４７】
ステップＳ８１０では、描画制御部１０２は、上記のステップＳ４０３で作成したテーブルから、レンダラ識別子Ａに対応するポインタを特定する。そして描画制御部１０２は、該特定したポインタが示す描画リスト作成メソッドを呼び出すことで、ステップＳ８０１で受け取った描画命令から描画リストを作成し、該作成した描画リストを、レンダラ識別子Ａに対応するレンダラに対して送出する。
【００４８】
ステップＳ８１１では、レンダラ識別子Ａに対応するレンダラは、描画制御部１０２から送出された描画リストを受け取って保持する。なお、レンダラは、すでに描画リストを保持している場合には、描画制御部１０２から送出された描画リストを、このすでに保持している描画リストに追加登録する。
【００４９】
なお、ステップＳ８０７及びステップＳ８０８の処理と、ステップＳ８１０及びステップＳ８１１の処理と、は図８に示した順序で実行することに限るものではなく、並列に実行しても構わない。これは、それぞれの処理で対象となるレンダラは異なることに起因する。
【００５０】
図３に戻って、次に、ステップＳ３０８では、アプリケーション１０８が、描画制御部１０２に対して描画同期命令を発行する。実際には、不図示の制御部が該アプリケーション１０８を実行することで、描画制御部１０２に対して描画同期命令を発行する。
【００５１】
ステップＳ３０９では、描画制御部１０２は、アプリケーション１０８から発行された描画同期命令を受けると、描画同期命令処理を行い、フレームバッファ書き込み部１０７によって、グラフィックス描画結果が不図示のフレームバッファに出力される。
【００５２】
ステップＳ３０９における処理の詳細について、図９のフローチャートを用いて説明する。ステップＳ９０１では、描画制御部１０２は、アプリケーション１０８から発行された描画同期命令を受け取る。
【００５３】
ステップＳ９０２では、描画制御部１０２は、最後の描画命令から１つ前（過去）の描画命令の識別子に対応する描画実行メソッドを描画同期判定部１０３に問い合わせ、該問い合わせに応じて描画同期判定部１０３から送出された描画実行メソッドを受け取る。この描画実行メソッドは、最後に描画リストを保持したレンダラへの描画実行を指示するものとなる。
【００５４】
ステップＳ９０３では、描画制御部１０２は、ステップＳ９０２で受け取った描画実行メソッドを呼び出す。そしてステップＳ８０８では、描画制御部１０２は、最後に描画リストを保持したレンダラ（レンダラ１０４〜１０６の何れか）と、フレームバッファ書き込み部１０７と、を制御して、描画実行処理を行う。ステップＳ８０８における処理の詳細については、図１０のフローチャートを用いて後述する。
【００５５】
次に、上記のステップＳ８０８における処理の詳細について、図１０のフローチャートを用いて説明する。ここで、フレームバッファ書き込み部１０７の機能構成例を、図１１に示す。図１１に示した各部の動作については、図１０のフローチャートに従った処理の説明の中で行う。
【００５６】
ステップＳ１００１では、レンダラ１０４〜１０６のうち何れか１つが、描画制御部１０２が描画実行メソッドを呼び出したことで発行された描画実行命令を受け取る。以下では、描画実行命令を受け取ったレンダラを実行レンダラと呼称する。
【００５７】
ステップＳ１００２では、実行レンダラは、自身のレンダラ識別子と、バックバッファ１１０３のクリア指示と、をフレームバッファ書き込み部１０７に対して送出する。フレームバッファ書き込み部１０７内の書き込み制御部１１０１は、該クリア指示を受けると、バックバッファ１１０３をクリアする。更に、書き込み制御部１１０１は、実行レンダラから該実行レンダラのレンダラ識別子を受け取ると、セレクタ１１０２を操作して、該受け取ったレンダラ識別子に対応したチャネルをオープンする。
【００５８】
ステップＳ１００３〜ステップＳ１００５の一連の処理は、実行レンダラが保持する作成済みの描画リストに登録されている要素ごとに行う。すなわち、この一連の処理は、実行レンダラが保持する描画リストに登録されている要素の数だけ繰り返して行うことになる。これにより、実行レンダラは、自身が保持する描画リストに登録されているそれぞれの要素に従ってラスタライズを実行し、ラスタデータを、オープンにされたチャネルを介してバックバッファ１１０３に出力する。
【００５９】
描画リストに登録されている全ての要素に対する処理が終わると、処理はステップＳ１００６に進む。ステップＳ１００６では、実行レンダラは、自身の描画リストをクリアする。
【００６０】
ステップＳ１００７では、実行レンダラは、書き込み制御部１１０１に対して合成処理を依頼するので、書き込み制御部１１０１は合成部１１０４を制御する。この制御により、合成部１１０４は、フロントバッファ１１０５に書き込まれている描画結果の上に、バックバッファ１１０３に書き込まれている描画結果を合成した合成結果を生成し、該生成した合成結果を再び、フロントバッファ１１０５へと書き戻す。尚、この合成処理の方式は任意である。例えばただの上書きであっても良いし、透過合成であっても良い。或いは、Porter-Duff Blending modeとして一般的に知られているあらゆる合成モードの適用が可能である。
【００６１】
［第２の実施形態］
図１に示した構成の変形例を、図１２に示す。図１２において、図１に示した機能部と同じ機能部には同じ参照番号を付しており、この機能部に係る説明は省略する。図１２の構成は、レンダラ１０４，１０５，１０６のそれぞれに対する登録命令（図２）を、アプリケーション１０８が発行するのではなく、該レンダラが発行する点が、第１の実施形態と異なる。
【００６２】
［第３の実施形態］
本実施形態では、第１の実施形態と同様の画像処理装置を用いる。以下の本実施形態に係る説明では、第１の実施形態との相違点について重点的に説明し、第１の実施形態と同様の部分については基本的には説明を省略する。すなわち、以下で特に触れない限りは、第１の実施形態と同様であるとする。
【００６３】
本実施形態に係る画像処理装置が行う処理について、図１５のフローチャートを用いて説明する。図１５において、図３に示した処理ステップと同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００６４】
ステップＳ１５０１では、アプリケーション１０８はレンダラタイプ登録命令を呼び出して、レンダラ１０４，１０５，１０６のそれぞれに対する登録命令を、レンダラ機能登録部１０１に対して送出する。実際には、不図示の制御部が該アプリケーション１０８を実行することでレンダラタイプ登録命令を呼び出し、レンダラ１０４，１０５，１０６のそれぞれに対する登録命令を、レンダラ機能登録部１０１に対して送出する。
【００６５】
ここで、１つのレンダラ（レンダラＸとする）に対する登録命令の構成例について、図１３を用いて説明する。図１３において、図２に示した部分と同じ部分には同じ参照番号を付しており、該部分に係る説明は省略する。
【００６６】
レンダラタイプ登録命令は、図２に示したレンダラ機能登録命令に、レンダラタイプ識別子１３０１を追加した構成となっている。レンダラタイプとは、ある一群の描画命令群を処理するカテゴリとして定義されている。
【００６７】
図１４にレンダラタイプと描画命令との対応の一例を示す。図１４において、図形レンダラは矩形描画命令と円弧描画命令とを受け付け、これらの描画命令に従って矩形や円弧などを描画するレンダラとして定義されている。文字レンダラは文字描画命令を受け付け、該描画命令に従って文字や文字列を描画するレンダラとして定義されている。ブリッタはブリット命令を受け付け、該命令に従ってビットマップ転送に代表されるブリット処理を行うレンダラとして定義されている。つまり、レンダラタイプとは、そのレンダラが描画するグラフィックスオブジェクトの特性に着目して定義されている。従って、第１の実施形態や第２の実施形態とは異なり、本実施形態では、レンダラタイプを指定すれば、対応すべき描画命令が一義的に定まることになる。然るに、レンダラタイプ識別子１３０１は、それぞれのレンダラタイプに固有の値となっている。
【００６８】
レンダラ機能登録部１０１は、レンダラごとのレンダラタイプ登録命令を受けると、同じレンダラタイプ識別子ごとに、レンダラ識別子２０１、描画命令の数２０２、セット群（２０３〜２０６）、描画実行メソッド２０７を、関連づけて管理する。なお、第１の実施形態で説明したように、描画命令識別子及び対応する描画リスト作成メソッドのセットをソートしても良い。
【００６９】
次に、ステップＳ１５０２における処理の詳細について、図１６のフローチャートを用いて説明する。図１６のフローチャートでは、ステップＳ１６０１からステップＳ１６０５の一連の処理を、レンダラタイプごとに実行する。
【００７０】
ステップＳ１６０２でレンダラ機能登録部１０１は、未選択のレンダラタイプ識別子について管理している情報群から、レンダラタイプ識別子、レンダラ識別子、描画実行メソッド、を抽出し、該抽出した情報群をレンダラタイプ情報として作成する。レンダラタイプ情報は、図１７に例示するような構成を有する。図１７のレンダラタイプ情報１７００には、レンダラタイプ識別子１７０１、レンダラ識別子２０１、描画実行メソッド２０７が含まれている。そしてレンダラ機能登録部１０１は、この作成したレンダラタイプ情報を、描画同期判定部１０３に対して送出するので、描画同期判定部１０３は、このレンダラタイプ情報を受け取る。
【００７１】
ステップＳ１６０３では、描画同期判定部１０３は、レンダラタイプ情報から、レンダラタイプ識別子及びレンダラ識別子を抽出し、該抽出した情報を登録したテーブルを作成する。
【００７２】
ステップＳ１６０４では、描画同期判定部１０３は、レンダラタイプ情報から、レンダラタイプ識別子及び描画実行メソッドを抽出し、該抽出した情報を登録したテーブルを作成する。
【００７３】
次に、ステップＳ１５０３における処理の詳細について、図１８のフローチャートを用いて説明する。図１８において、図８と同じ処理ステップには同じステップ番号を付しており、該処理ステップに係る説明は省略する。
【００７４】
ステップＳ１８０１では、描画制御部１０２は先ず、図１４に例示したようなテーブル（予め作成され、画像処理部１００内に保持されている）を参照し、ステップＳ８０１で受け取った描画命令に対応するレンダラタイプを特定する。次に、描画制御部１０２は、該描画命令よりも１つ前（過去）に受け取った描画命令に対応するレンダラタイプを、図１４に例示したようなテーブルを参照することで特定する。そして描画制御部１０２は、特定したそれぞれのレンダラタイプの識別子を比較し、共に同じ識別子である場合には、処理はステップＳ８１０に進み、それぞれの識別子が互いに異なる場合には、処理はステップＳ１８０２に進む。
【００７５】
ステップＳ１８０２では、描画制御部１０２は、ステップＳ８０１で受け取った描画命令に対応するレンダラタイプの識別子を、描画同期判定部１０３に対して送出するので、描画同期判定部１０３は、この識別子を受け取る。
【００７６】
ステップＳ１８０３では、描画同期判定部１０３は、ステップＳ１８０２で描画制御部１０２から送出されたレンダラタイプの識別子を受け取る。そして描画同期判定部１０３は、上記のステップＳ１６０３で作成したテーブルから、この受け取った識別子に対応するレンダラ識別子（レンダラ識別子Ａとする）を特定する。また、描画同期判定部１０３は、上記のステップＳ１６０３で作成したテーブルから、該識別子の１つ前（過去）に描画制御部１０２から受け取った識別子に対応するレンダラ識別子（レンダラ識別子Ｂとする）を特定する。そして、描画同期判定部１０３は、レンダラ識別子Ａ＝レンダラ識別子Ｂであるか否かを判断する。
【００７７】
この判断の結果、レンダラ識別子Ａ＝レンダラ識別子Ｂである場合には、処理はステップＳ８０９に進み、レンダラ識別子Ａ≠レンダラ識別子Ｂである場合には、処理はステップＳ８０６に進む。以降は第１の実施形態と同様の処理を行う。
【００７８】
このように、本実施形態によれば、レンダラをカテゴライズしてレンダラタイプを定義し、レンダラタイプごとにあらかじめ処理する描画命令を決めておくことで、描画同期判定処理の回数が減り、性能が向上する。
【００７９】
［第４の実施形態］
図１，１２に示した各部は何れもハードウェアで構成しても良いが、１以上の機能部をソフトウェア（コンピュータプログラム）で実装しても構わない。この場合、このコンピュータプログラムは、不図示の制御部が実行し、対応する機能部の機能を実現させることになる。
【００８０】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015121999.tif 000003
【図２】
2015121999.tif 000004
【図３】
2015121999.tif 000005
【図４】
2015121999.tif 000006
【図５】
2015121999.tif 000007
【図６】
2015121999.tif 000008
【図７】
2015121999.tif 000009
【図８】
2015121999.tif 000010
【図９】
2015121999.tif 000011
【図１０】
2015121999.tif 000012
【図１１】
2015121999.tif 000013
【図１２】
2015121999.tif 000014
【図１３】
2015121999.tif 000015
【図１４】
2015121999.tif 000016
【図１５】
2015121999.tif 000017
【図１６】
2015121999.tif 000018
【図１７】
2015121999.tif 000019
【図１８】
2015121999.tif 000020