(57)【特許請求の範囲】
【請求項１】
複数の第１の描画データと、複数の第１の描画命令を含む複数の第１の描画命令群とから、複数の第２の描画データと、複数の第２の描画命令を含む複数の第２の描画命令群とを生成する第１のプロセッサと、
前記第１のプロセッサから出力された前記複数の第２の描画データと前記複数の第２の描画命令群とに基づく描画処理を行う第２のプロセッサとを備え、
前記第１のプロセッサは、
前記複数の第１の描画命令群の実行の順番を示す並び順を変更し、前記複数の第１の描画命令の内の、前記複数の第１の描画命令群の並び順を変更することで実行不要になった第１の描画命令を削除することによって、複数の第３の描画命令群を生成する描画命令リオーダ部と、
前記複数の第３の描画命令群に含まれる複数の第３の描画命令の内の、前記第２のプロセッサが同じ描画状態で実行可能な第３の描画命令に対応する第１の描画データを互いに結合することによって、前記複数の第２の描画データを生成し、前記第１の描画データの結合によって不要になった前記第３の描画命令を削除することによって前記複数の第２の描画データに対応する前記複数の第２の描画命令群を生成する描画命令結合部と、
前記複数の第２の描画命令の並び順に前記複数の第２の描画命令の各々を実行する描画命令実行部と
を有することを特徴とする画像描画装置。
【請求項２】
前記描画命令リオーダ部は、前記複数の第３の描画命令群に含まれる前記複数の第３の描画命令の個数が減少するように、前記複数の第１の描画命令群の並び順を変更することを特徴とする請求項１に記載の画像描画装置。
【請求項３】
前記第２の描画データは、ポリゴンの頂点列データと、前記ポリゴンのテクスチャデータとを有し、
前記描画命令結合部は、前記複数の第２の描画データの個数が減少するように、前記テクスチャデータを互いに結合する
ことを特徴とする請求項１に記載の画像描画装置。
【請求項４】
第１の記憶装置をさらに備え、
前記描画命令結合部は、前記複数の第２の描画データと前記複数の第２の描画命令群とを前記第１の記憶装置に記憶させる
ことを特徴とする請求項１から３のいずれか１項に記載の画像描画装置。
【請求項５】
第２の記憶装置をさらに備え、
前記第２のプロセッサは、前記第１のプロセッサから出力された前記複数の第２の描画データと前記複数の第２の描画命令群とに基づく前記描画処理の結果を前記第２の記憶装置に記憶させる
ことを特徴とする請求項１から４のいずれか１項に記載の画像描画装置。
【請求項６】
前記描画命令実行部は、前記描画命令結合部による前記複数の第２の描画データの生成が完了する前に、前記複数の第２の描画データの一部を前記第２のプロセッサに出力し始めることを特徴とする請求項１から５のいずれか１項に記載の画像描画装置。
【請求項７】
前記第２のプロセッサの前記描画処理の結果に基づく画像を表示する表示装置をさらに備えたことを特徴とする請求項１から６のいずれか１項に記載の画像描画装置。
【請求項８】
複数の第１の描画データと、複数の第１の描画命令を含む複数の第１の描画命令群とから、複数の第２の描画データと、複数の第２の描画命令を含む複数の第２の描画命令群とを生成する第１のプロセッサと、前記第１のプロセッサから出力された前記複数の第２の描画データと前記複数の第２の描画命令群とに基づく描画処理を行う第２のプロセッサとを備えた装置における画像描画方法であって、
前記複数の第１の描画命令群の実行の順番を示す並び順を変更し、前記複数の第１の描画命令の内の、前記複数の第１の描画命令群の並び順を変更することで実行不要になった第１の描画命令を削除することによって、複数の第３の描画命令群を生成するステップと、
前記複数の第３の描画命令群に含まれる複数の第３の描画命令の内の、前記第２のプロセッサが同じ描画状態で実行可能な第３の描画命令に対応する第１の描画データを互いに結合することによって、前記複数の第２の描画データを生成し、前記第１の描画データの結合によって不要になった前記第３の描画命令を削除することによって前記複数の第２の描画データに対応する前記複数の第２の描画命令群を生成するステップと、
前記複数の第２の描画命令の並び順に前記複数の第２の描画命令の各々を実行するステップと
を有することを特徴とする画像描画方法。
【請求項９】
複数の第１の描画データと、複数の第１の描画命令を含む複数の第１の描画命令群とから、複数の第２の描画データと、複数の第２の描画命令を含む複数の第２の描画命令群とを生成する第１のプロセッサと、前記第１のプロセッサから出力された前記複数の第２の描画データと前記複数の第２の描画命令群とに基づく描画処理を行う第２のプロセッサとを備えたコンピュータの前記第１のプロセッサに、
前記複数の第１の描画命令群の実行の順番を示す並び順を変更し、前記複数の第１の描画命令の内の、前記複数の第１の描画命令群の並び順を変更することで実行不要になった第１の描画命令を削除することによって、複数の第３の描画命令群を生成する処理と、
前記複数の第３の描画命令群に含まれる複数の第３の描画命令の内の、前記第２のプロセッサが同じ描画状態で実行可能な第３の描画命令に対応する第１の描画データを互いに結合することによって、前記複数の第２の描画データを生成し、前記第１の描画データの結合によって不要になった前記第３の描画命令を削除することによって前記複数の第２の描画データに対応する前記複数の第２の描画命令群を生成する処理と、
前記複数の第２の描画命令の並び順に前記複数の第２の描画命令の各々を実行する処理と
を実行させる画像描画プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のプロセッサが描画データと描画命令群とを第２のプロセッサに出力することで、描画命令群に含まれる描画命令に従う処理を第２のプロセッサに実行させる画像描画装置及び画像描画方法、並びに、画像描画装置の第１のプロセッサによって実行される画像描画プログラムに関する。
【背景技術】
【０００２】
コンピュータグラフィックスにおいて、描画内容のプリミティブとしてポリゴンが多用されている。一般に、ポリゴンを描画するためには、第１のプロセッサであるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と第２のプロセッサであるＧＰＵ（Ｇｒａｐｈｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とが使用される。ＧＰＵは、大量のデータを効率的に処理するために、複数のパイプライン処理を平行して実行する。そのため、ＧＰＵによる描画処理の途中で、テクスチャの利用の有無の切り替え又はポリゴンの色の変更などのようなＧＰＵにおける描画状態の変更が発生すると、複数のパイプライン処理が中断されて、ＧＰＵにおける処理効率が低下する。【０００３】
この対策として、特許文献１は、コンピュータを用いた描画処理において、不要な描画命令を取り除くことで描画時間を短縮する方法を提案している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−１９０５３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された方法は、汎用的に描画時間を短縮することは可能であるが、ハードウェア（Ｈ／Ｗ）の特性を考慮しておらず、近年、ＧＰＵのボトルネックとなっている上記パイプライン処理の中断による処理効率の低下を解決することができない。【０００６】
本発明は、上記した課題を解決するためになされたものであり、その目的は、第２のプロセッサの描画処理における処理効率を向上させることができる画像描画装置、画像描画方法、及び画像描画プログラムを提供することである。
【課題を解決するための手段】
【０００７】
本発明の一態様に係る画像描画装置は、複数の第１の描画データと、複数の第１の描画命令を含む複数の第１の描画命令群とから、複数の第２の描画データと、複数の第２の描画命令を含む複数の第２の描画命令群とを生成する第１のプロセッサと、前記第１のプロセッサから出力された前記複数の第２の描画データと前記複数の第２の描画命令群とに基づく描画処理を行う第２のプロセッサとを備え、前記第１のプロセッサは、前記複数の第１の描画命令群の実行の順番を示す並び順を変更し、前記複数の第１の描画命令の内の、前記複数の第１の描画命令群の並び順を変更することで実行不要になった第１の描画命令を削除することによって、複数の第３の描画命令群を生成する描画命令リオーダ部と、前記複数の第３の描画命令群に含まれる複数の第３の描画命令の内の、前記第２のプロセッサが同じ描画状態で実行可能な第３の描画命令に対応する第１の描画データを互いに結合することによって、前記複数の第２の描画データを生成し、前記第１の描画データの結合によって不要になった前記第３の描画命令を削除することによって前記複数の第２の描画データに対応する前記複数の第２の描画命令群を生成する描画命令結合部と、前記複数の第２の描画命令の並び順に前記複数の第２の描画命令の各々を実行する描画命令実行部とを有することを特徴としている。
【発明の効果】
【０００８】
本発明によれば、第１のプロセッサから出力された描画命令群に含まれる描画命令に従う処理を実行する第２のプロセッサの描画処理における処理効率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係る画像描画装置の概略構成を示す機能ブロック図である。
【図２】本実施の形態に係る画像描画装置のハードウェア構成を概略的に示すブロック図である。
【図３】表示装置の表示画面に表示させる画像に含まれるポリゴンの例を示す図である。
【図４】本実施の形態に係る画像描画装置のアプリケーション実行部によって提供される複数の描画データ（第１の描画データ）の例を示す図である。
【図５】本実施の形態に係る画像描画装置のアプリケーション実行部によって提供される複数の描画命令群（第１の描画命令群）の例を示す図である。
【図６】本実施の形態に係る画像描画装置の描画命令リオーダ部の動作例を示すフローチャートである。
【図７】本実施の形態に係る画像描画装置の描画命令リオーダ部の動作例（不要な第１の描画命令の削除）を示す説明図である。
【図８】本実施の形態に係る画像描画装置の描画命令リオーダ部によって提供される複数の描画命令群（第３の描画命令群）の例を示す図である。
【図９】本実施の形態に係る画像描画装置の描画命令結合部の動作例を示すフローチャートである。
【図１０】本実施の形態に係る画像描画装置の描画命令結合部の動作例（第３の描画命令の結合）を示す説明図である。
【図１１】本実施の形態に係る画像描画装置の描画命令結合部によって提供される複数の描画命令群（第２の描画命令群）の例を示す図である。
【図１２】本実施の形態に係る画像描画装置の描画命令結合部によって提供される複数の描画データ（第２の描画データ）の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態に係る画像描画装置、画像描画方法、及び画像描画プログラムを、添付図面を参照しながら説明する。以下の実施の形態は、例にすぎず、本発明の範囲内で種々の変更が可能である。
【００１１】
《１》画像描画装置１の概要
図１は、本発明の実施の形態に係る画像描画装置１の概略構成を示す機能ブロック図である。図２は、本実施の形態に係る画像描画装置１のハードウェア構成を概略的に示すブロック図である。図１及び図２に示されるように、画像描画装置１は、ＣＰＵである第１のプロセッサ１０と、メインメモリである第１の記憶装置２０と、ＧＰＵである第２のプロセッサ３０と、ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である第２の記憶装置４０とを備えている。また、画像描画装置１は、画像を表示する液晶表示装置などの表示装置（ディスプレイ）５０を備えてもよい。
【００１２】
また、画像描画装置１は、本実施の形態に係る画像描画方法を実施することができる装置である。また、第１のプロセッサ１０は、本実施の形態に係る画像描画プログラムを実行することができる手段である。本実施の形態に係る画像描画プログラムは、例えば、外部記憶装置（図示せず）に格納されており、第１の記憶装置２０に読み込まれて実行される。
【００１３】
図１に示されるように、第１のプロセッサ１０は、複数の描画データ（第１の描画データ）Ｖ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４（後述の図４に示される）と、複数の描画命令（第１の描画命令）を含む複数の描画命令群（第１の描画命令群）Ｆ０〜Ｆ４（後述の図５に示される）とから、複数の描画データ（第２の描画データ）Ｖ０′（Ｔ０′），Ｖ１′，Ｖ３（後述の図１２に示される）と、複数の描画命令（第２の描画命令）を含む複数の描画命令群（第２の描画命令群）Ｇ０１，Ｇ２３，Ｇ４（後述の図１１に示される）とを生成し、複数の第２の描画命令を順に実行する。
【００１４】
図１に示されるように、第２のプロセッサ３０は、描画部３１を有し、第１のプロセッサ１０から出力された複数の第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３（図１２に示される）と複数の第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４（図１１に示される）とに基づく描画処理を行う。描画部３１は、第２のプロセッサ３０が、所定のプログラムを実行することによって実現される。第２のプロセッサ３０は、描画処理の結果を第２の記憶装置４０に記憶させることができる。また、第２のプロセッサ３０は、描画処理の結果を表示装置５０に提供し、表示装置５０は、表示画面５１に描画処理の結果に基づく画像（後述の図３に示される）を表示することができる。
【００１５】
図１に示されるように、第１のプロセッサ１０は、アプリケーション実行部１１と、描画命令リオーダ部１２と、描画命令結合部１３と、描画命令実行部１４とを有している。アプリケーション実行部１１と、描画命令リオーダ部１２と、描画命令結合部１３と、描画命令実行部１４は、第１のプロセッサ１０が、画像処理プログラムを実行することによって実現される。
【００１６】
アプリケーション実行部１１は、任意のアプリケーションを実行する機能を持ち、例えば、外部から入力された入力データに基づいて、複数の第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４（図４に示される）と、複数の第１の描画命令を含む複数の第１の描画命令群Ｆ０〜Ｆ４（図５に示される）とを生成し、第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４と第１の描画命令群Ｆ０〜Ｆ４とを第１の記憶装置２０に一時記憶させる。
【００１７】
描画命令リオーダ部１２は、第１の記憶装置２０に一時記憶された複数の第１の描画命令の内の、複数の第１の描画命令群Ｆ０〜Ｆ４（図５に示される）の実行の順番を示す並び順を変更することで実行不要になった第１の描画命令を削除することによって（図６、図７に示される）、複数の描画命令群（第３の描画命令群）（図８に示される）を生成し、複数の第３の描画命令群を第１の記憶装置２０に一時記憶させる。
【００１８】
描画命令結合部１３は、複数の第３の描画命令群（図８に示される）に含まれる複数の第３の描画命令の内の、前記第２のプロセッサ３０が同じ描画状態で実行可能な第３の描画命令に対応する第１の描画データを互いに結合することによって、複数の第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３（図１２に示される）を生成し、第１の描画データの結合によって不要になった第３の描画命令を削除することによって複数の第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３に対応する複数の第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４（図１１に示される）を生成し、第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４と第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３とを第１の記憶装置２０に一時記憶させる。
【００１９】
描画命令実行部１４は、第１の記憶装置２０から第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４（図１１に示される）と第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３（図１２に示される）を、第２のプロセッサ３０に出力する。例えば、描画命令実行部１４は、複数の第２の描画命令の並び順に複数の第２の描画命令の各々を実行する。
【００２０】
《２》アプリケーション実行部１１
図３は、表示装置５０の表示画面５１に表示させる画像に含まれるポリゴンＰ０〜Ｐ４の例を示す図である。図４は、アプリケーション実行部１１によって提供される複数の第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４の例を示す図である。図５は、アプリケーション実行部１１によって提供される複数の第１の描画命令群Ｆ０〜Ｆ４の例を示す図である。
【００２１】
図４には、５個の第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４が示されている。図５には、５個の第１の描画命令群Ｆ０〜Ｆ４に含まれる２０個の第１の描画命令が示されている。アプリケーション実行部１１は、表示画面５１に画像を表示させるためのアプリケーションを実行する機能を持つ。アプリケーション実行部１１は、複数の第１の描画命令を含む複数の描画命令群Ｆ０〜Ｆ４（図５に示される）と、複数の描画データ（図４に示される）とを第１の記憶装置２０に出力する。
【００２２】
描画内容がポリゴンで表される場合には、描画データは、少なくともポリゴンの各頂点の座標（頂点座標）を含む。また、描画データは、テクスチャを示すテクスチャデータ、ポリゴンの材質を示す情報、ポリゴンを照明する光源に関する光源情報などのような各種の情報を含むことができる。本実施の形態では、例として、描画データが、ポリゴンの頂点座標を含む頂点列データとテクスチャデータとを含む場合を説明する。ポリゴンにテクスチャをマッピングする場合には、頂点列データは、ポリゴンの頂点座標に加え、ポリゴンの頂点とテクスチャのマッピングとの関係を表すテクスチャ座標を含む。描画命令は、第１のプロセッサ１０で生成される第２のプロセッサ３０に対する命令であり、少なくとも第２のプロセッサ３０の描画状態を変更させる命令と描画開始命令とを含む。第２のプロセッサ３０における描画状態を示す情報としては、（ａ）テクスチャのマッピングの有無を示す情報、（ｂ）テクスチャをマッピングする場合には、マッピングするテクスチャを指定する参照情報、及び（ｃ）テクスチャをマッピングしない場合には、ポリゴンの色、ポリゴンの頂点列データを指定する参照情報がある。
【００２３】
図３に示される例では、ポリゴンＰ０にはテクスチャＴ０がマッピングされており、ポリゴンＰ２にはテクスチャＴ１がマッピングされており、ポリゴンＰ１は色Ｃ０で塗りつぶされており、ポリゴンＰ４は色Ｃ０で塗りつぶされており、ポリゴンＰ３は色Ｃ１で塗りつぶされている。
【００２４】
図４に示される例では、頂点列データＶ０，Ｖ２は、頂点座標とテクスチャ座標の列として示され、頂点列データＶ１，Ｖ３，Ｖ４は、頂点座標の列として示されている。
【００２５】
図５に示される例では、Ｆ０〜Ｆ４は、ポリゴンＰ０〜Ｐ４をそれぞれ描画するための第１の描画命令群を表している。複数の第１の描画命令群Ｆ０〜Ｆ４の各々は、複数の第１の描画命令を含む。図５に示される例では、複数の第１の描画命令群Ｆ０〜Ｆ４の各々は、第１の描画命令として、１つ以上の描画状態変更命令と、描画開始命令とを含む。
【００２６】
《３》描画命令リオーダ部１２
図６は、描画命令リオーダ部１２の動作例を示すフローチャートである。図７は、描画命令リオーダ部１２の動作例（不要な第１の描画命令の削除）を示す図である。図８は、描画命令リオーダ部１２によって提供される複数の第３の描画命令群Ｇ０〜Ｇ４の例を示す図である。
【００２７】
描画命令リオーダ部１２は、描画結果に変化が無い範囲で、描画命令の個数を減らすように（望ましくは最少になるように）、複数の第１の描画命令群Ｆ０〜Ｆ４の並び順を変更する。図７に示される例では、並び順が変更された後の第１の描画命令群Ｆ０，Ｆ２，Ｆ１，Ｆ４，Ｆ３を、それぞれ第３の描画命令群Ｇ０〜Ｇ４と言い、第３の描画命令群Ｇ０〜Ｇ４に含まれる描画命令を、第３の描画命令と言う。この並び替えは、例えば、以下のような処理で実行される。
【００２８】
図６に示されるように、描画命令リオーダ部１２は、ステップＳＴ１２１では、変数ｉを０で初期化し、ステップＳＴ１２２以降の処理（ステップＳＴ１２２のループ処理）を実行して、変数ｉをインクリメントする。そして、描画命令リオーダ部１２は、ｉ＜ｎの間、同様の処理（ステップＳＴ１２２のループ処理）を繰り返し、ｉ＝ｎになったときに、ステップＳＴ１２１のループ処理を終了する。なお、ｎは、第１の描画命令群の個数である。
【００２９】
描画命令リオーダ部１２は、ステップＳＴ１２２では、変数ｊをｉ＋１で初期化し、ステップＳＴ１２３以降の処理（ステップＳＴ１２３〜ＳＴ１２５）を実行して、変数ｊをインクリメントする。そして、描画命令リオーダ部１２は、ｊ＜ｎの間、同様の処理（ステップＳＴ１２３〜ＳＴ１２５）を繰り返し、ｊ＝ｎになったときに、ステップＳＴ１２２のループ処理を終了する。
【００３０】
描画命令リオーダ部１２は、ステップＳＴ１２３では、変数ｉと変数ｊに対応する第１の描画命令群Ｆｉと第１の描画命令群Ｆｊを参照し、第１の描画命令群Ｆｊを第１の描画命令群Ｆｉの直後に移動することで、重なり合うポリゴンの前後関係が変わった場合でも描画結果（すなわち、表示画面５１に表示される画像）が同じであるかどうかを確認する。描画命令リオーダ部１２は、描画結果が同じである場合（ステップＳＴ１２３においてＹＥＳ）には、処理をステップＳＴ１２４に進め、描画結果が変化する場合（ステップＳＴ１２３においてＮＯ）には、処理をＳＴ１２２へ戻す。
【００３１】
描画命令リオーダ部１２は、ステップＳＴ１２４では、第１の描画命令群Ｆｊを第１の描画命令群Ｆｉの直後に移動することで、第１の描画命令群Ｆｊの第１の描画命令の個数（厳密には、第２のプロセッサ３０における描画状態の変更を伴う第１の描画命令の個数）を減らすことができるかどうかを確認する。描画命令リオーダ部１２は、第１の描画命令の個数を減らすことができる場合（ステップＳＴ１２４においてＹＥＳ）には、処理をステップＳＴ１２５へ進める。
【００３２】
なお、図７において、網掛け領域として示されるように、第１の描画命令群Ｆｉにおける第１の描画命令による処理の後に、第１の描画命令群Ｆｊに含まれる第１の描画命令で設定しようとする描画状態が既に設定されている場合には、その第１の描画命令は不要な描画命令であり削減可能であると判断する。例えば、図７に示されるように、第１の描画命令群Ｆ２を第１の描画命令群Ｆ０の直後に移動させることによって、第１の描画命令群Ｆ２における第１の描画命令「テクスチャ有効化」が削除可能になる。また、例えば、図７に示されるように、第１の描画命令群Ｆ４を第１の描画命令群Ｆ１の直後に移動させることによって、第１の描画命令群Ｆ４における第１の描画命令「テクスチャ無効化」及び「色Ｃ０設定」が削除可能になる。描画命令リオーダ部１２は、第１の描画命令の個数を減らすことができない場合（ステップＳＴ１２４においてＮＯ）には、処理をステップＳＴ１２２に戻す。
【００３３】
描画命令リオーダ部１２は、ステップＳＴ１２５では、第１の描画命令群Ｆｊを第１の描画命令群Ｆｉの後ろに移動することで、第１の描画命令群の並び順を変更し、削減可能な第１の描画命令を削除し、その後、処理をステップＳＴ１２２に戻す。
【００３４】
図８は、図５の第１の描画命令群Ｆ０〜Ｆ４に対して描画命令リオーダ部１２の処理を適用した結果を示している。図８では、ポリゴンＰ０，Ｐ２，Ｐ１，Ｐ４，Ｐ３を描画するための描画命令群をそれぞれ第３の描画命令群Ｇ０〜Ｇ４としている。
【００３５】
《４》描画命令結合部１３
図９は、描画命令結合部１３の動作例を示すフローチャートである。図１０は、描画命令結合部１３の動作例（第３の描画命令の結合）を示す図である。図１１は、描画命令結合部１３によって提供される複数の第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４の例を示す図である。図１２は、描画命令結合部１３によって提供される複数の第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３の例を示す図である。
【００３６】
描画命令結合部１３は、第３の描画命令の個数を減らすように（望ましくは最少になるように）、複数の第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４を結合し、複数の第３の描画命令を結合する。これは、例えば、以下の処理で実行できる。
【００３７】
図９に示されるように、描画命令結合部１３は、ステップＳＴ１３１では、変数ｉを０で初期化し、ステップＳＴ１３２以降の処理（ステップＳＴ１３２のループ処理）を実行して、変数ｉをインクリメントする。そして、描画命令結合部１３は、ｉ＜ｎの間、同様の処理（ステップＳＴ１３２のループ処理）を繰り返し、ｉ＝ｎになったときに、ステップＳＴ１３１のループ処理を終了する。
【００３８】
描画命令結合部１３は、ステップＳＴ１３２では、変数ｊをｉ＋１で初期化し、ステップＳＴ１３３以降の処理（ステップＳＴ１３３〜ＳＴ１３７の処理）を実行して、変数ｊをインクリメントする。そして、描画命令結合部１３は、ｊ＜ｎの間、同様の処理（ステップＳＴ１３３〜ＳＴ１３７の処理）を繰り返し、ｊ＝ｎになったときに、ステップＳＴ１３２のループ処理を終了する。
【００３９】
描画命令結合部１３は、ステップＳＴ１３３では、変数ｉと変数ｊに対応する第３の描画命令群Ｇｉと第３の描画命令群Ｇｊを参照し、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊの両方がテクスチャを使用するかどうかを確認する。描画命令結合部１３は、両方がテクスチャを使用する場合（ステップＳＴ１３３においてＹＥＳ）には、処理をステップＳＴ１３４に進め、それ以外の場合（ステップＳＴ１３３においてＮＯ）には、処理をステップＳＴ１３５に進める。
【００４０】
描画命令結合部１３は、ステップＳＴ１３４では、図１０及び図１１に示されるように、第３の描画命令群Ｇｉ及び第３の描画命令群Ｇｊで使用する２つのテクスチャ（２枚のテクスチャ画像）Ｔ０，Ｔ１を結合することで、テクスチャＴ０，Ｔ１に対応する１つのテクスチャ（１枚のテクスチャ画像）Ｔ０′を生成する。このとき、描画命令結合部１３は、図１０に示される第３の描画命令群Ｇｉに含まれるテクスチャ設定命令を、図１２に示される第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３のように、結合されたテクスチャ画像を示すように変更し、図１０に示される第３の描画命令群Ｇｊに含まれるテクスチャ設定命令「テクスチャＴ１設定」を削除する。また、テクスチャ画像の結合に合わせて、第３の描画命令群Ｇｉ及び第３の描画命令群Ｇｊに含まれる頂点列設定命令が示す頂点列データに含まれるテクスチャ座標を更新する。例えば、第３の描画命令群Ｇｉ内のテクスチャ設定命令が示すテクスチャ画像Ｔｉと、第３の描画命令群Ｇｊ内のテクスチャ設定命令が示すテクスチャ画像Ｔｊを横に並べて結合した場合には、結合後の画像におけるテクスチャ画像Ｔｊのピクセルの座標はテクスチャ画像Ｔｉの幅に相当するピクセル数ずれることになり、第３の描画命令群Ｇｊ内の頂点列指定命令が示す頂点列データに含まれるテクスチャ座標のｘ座標（図１２における横方向の座標軸）に、テクスチャ画像Ｔｉの幅に相当するピクセル数を加算する。その後、描画命令結合部１３は、処理をステップＳＴ１３７へ進める。
【００４１】
描画命令結合部１３は、ステップＳＴ１３５では、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊの一方のみがテクスチャを使用するかどうかを確認する。描画命令結合部１３は、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊのいずれもがテクスチャを使用しない場合（ステップＳＴ１３５においてＮＯ）には、処理をステップＳＴ１３６に進める。描画命令結合部１３は、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊの一方のみがテクスチャを使用する場合（ステップＳＴ１３５においてＹＥＳ）には、処理をループ処理ＳＴ１３２を抜けて、処理をステップＳＴ１３１に戻す。
【００４２】
描画命令結合部１３は、ステップＳＴ１３６では、第３の描画命令群Ｇｊが色指定命令を含まない、すなわち、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊが同じ色でポリゴンを描画するかどうかを確認する。描画命令結合部１３は、同じ色でポリゴンを描画する場合（ステップＳＴ１３５においてＹＥＳ）には、処理をステップＳＴ１３７へ進め、違う色のポリゴンを描画する場合（ステップＳＴ１３６においてＮＯ）には、ループ処理ＳＴ１３２を抜けて、処理をステップＳＴ１３１へ戻す。
【００４３】
描画命令結合部１３は、ステップＳＴ１３７では、例えば、図１０に示されるように、第３の描画命令群Ｇｉと第３の描画命令群Ｇｊに含まれる頂点列設定命令が示す頂点列データを結合し、第３の描画命令群Ｇｉが持つ頂点列設定命令を、前記結合後の頂点列データを示すように更新することによって、第３の描画命令を結合（第３の描画命令の個数を削減）する。また、描画命令結合部１３は、第３の描画命令群Ｇｊが持つ頂点列設定命令を削除する（図１０における網掛けされた頂点列設定命令）。さらに、描画命令結合部１３は、描画開始命令のみとなった第３の描画命令群Ｇｊ（図１０における第３の描画命令群Ｇ１，Ｇ４）を削除し、処理をステップＳＴ１３２に戻す。
【００４４】
図９に示される処理を行うことで、図８の第３の描画命令群Ｇ０〜Ｇ４及び図４の第１の描画データＶ０（Ｔ０），Ｖ１，Ｖ２（Ｔ１），Ｖ３，Ｖ４は、図１１に示される第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４と図１２に示される第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３に変換される。
【００４５】
《５》描画命令実行部１４
描画命令実行部１４は、第１の記憶装置２０に記録された第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３を描画部３１に送信しながら第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４に含まれる第２の描画命令を順に実行する。
【００４６】
《６》描画部３１
描画部３１は、描画命令実行部１４から受け取った第２の描画命令（図１１）と第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３（図１２）に従い、第２の記憶装置４０内に描画する。描画部３１は、例えば、第２の記憶装置４０内のフレームバッファに描画イメージ（グラフィックス）を描画する。そして、描画完了後、描画結果を表示装置５０へ出力する。この処理は、一般的なＧＰＵにおける描画処理と同様である。
【００４７】
《７》表示装置５０
表示装置５０は、描画部３１から受け取った画像データに基づく画像を表示画面５１に表示する（例えば、フレームバッファ内に描画された描画イメージに対応するグラフィック画像を表示する）。表示装置５０は、本実施の形態に係る画像描画装置１に必須の構成ではなく、画像データの送信装置、プリンタ、又はプロジェクタなどのような、他の画像出力手段に置き替えられてもよい。
【００４８】
《８》効果
本実施の形態に係る画像描画装置１及び画像描画方法によれば、第１のプロセッサ１０は、第２のプロセッサ３０における描画状態の変更回数を減らすことができる第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３及び第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４を第２のプロセッサ３０に出力するので、描画効率を向上させることができ、その結果、画像描画装置１における描画速度を向上させることができる。
【００４９】
第１のプロセッサ１０が本実施の形態に係る画像描画プログラムを用いれば、第２のプロセッサ３０における描画状態の変更回数を減らすことができる第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３及び第２の描画命令群Ｇ０１，Ｇ２３，Ｇ４を第２のプロセッサ３０に出力することができるので、描画効率を向上させることができ、その結果、画像描画装置１における描画速度を向上させることができる。
【００５０】
《９》変形例
上記説明では、描画内容を構成する描画データとして２次元のポリゴンを用い、２次元のポリゴンを、頂点列データとテクスチャデータ又は頂点列データと色データで特定している。しかし、描画データとしてのポリゴンは、第２のプロセッサ３０であるＧＰＵが扱うことができる他の情報（例えば、法線を示す情報、光の反射情報など）を保持してもよい。また、第２のプロセッサ３０としてのＧＰＵが、第１のプロセッサ１０としてのＣＰＵから出力される描画状態変更命令に応じて、描画状態を設定して描画データを扱う画像描画装置の場合には、描画内容を構成する描画データとして、ポリゴン以外の任意のデータを使用することができる。
【００５１】
上記説明では、描画命令リオーダ部１２の処理の例（図６）を示したが、描画状態変更命令を減らすことができる処理であれば、他の任意のアルゴリズム（例えば、最適化問題を解くアルゴリズム）を用いてもよい。また、描画命令リオーダ部１２は、描画命令リオーダ部１２で描画状態変更命令を減らすことを優先せずに、描画命令結合部１３でより多くの描画命令及び描画データを結合できることを優先させるように、描画命令群の並び順の変更を行ってもよい。
【００５２】
上記説明では、描画命令結合部１３において、図１２に示されるように、２つのテクスチャ画像を横に並べて結合して、１枚のテクスチャ画像Ｔ０′を生成するアルゴリズムを採用しているが、テクスチャ画像の結合（テクスチャアトラスの生成）には他の任意のアルゴリズム（例えば、２次元のビンパッキング問題を解くアルゴリズム）を用いてもよい。
【００５３】
上記説明では、１フレームの画像を表示するための処理、すなわち、１回分の描画処理について説明しているが、複数フレーム分の描画処理を実施する場合には、描画命令結合部１３における結合処理によって生成されたテクスチャデータ及び頂点列データを記憶しておき、次のフレーム以降の描画処理で再度利用することで、描画命令結合部１３における情報処理量を削減してもよい。また、１フレーム内の描画処理においても、同じ描画データを複数回利用する場合には、上記記録した結合後のデータを再利用してもよい。この場合には、第１のプロセッサ１０における情報処理量を削減することができる。
【００５４】
上記説明では、描画データは第１の記憶装置２０に記録されており、描画命令実行部１４が必要な描画データを描画部３１に送信しているが、描画部３１は受け取ったデータの一部又は全体を第２の記憶装置４０に記録しておき、以降の描画処理で同じデータを利用するとき、前記記録したデータを用いてもよい。この場合には、第２のプロセッサ３０における情報処理量を削減することができる。
【００５５】
上記説明では、描画データは第１の記憶装置２０に記録されており、描画命令実行部１４が必要な第２の描画データＶ０′（Ｔ０′），Ｖ１′，Ｖ３を描画部３１に送信しているが、処理効率向上のため、第２の描画データは任意のタイミングで第１のプロセッサ１０から第２のプロセッサ３０に出力されてもよい。例えば、描画命令結合部１３が、描画データの一部を以降の処理で結合しないと判断したとき、描画命令結合部１３におけるすべての処理が完了する前に、描画データの一部を描画部３１に送信し始めてもよい。この場合には、画像描画装置１における描画速度を向上させることができる。
【産業上の利用可能性】
【００５６】
本実施の形態に係る画像描画装置及び画像処理方法は、第１のプロセッサ１０としてのＣＰＵと、ＣＰＵから描画データ及び描画命令群を受け取る第２のプロセッサ３０としてのＧＰＵとを有する各種の情報処理装置（例えば、コンピュータ）に適用可能である。
【符号の説明】
【００５７】
１  画像描画装置、  １０  第１のプロセッサ（ＣＰＵ）、  １１  アプリケーション実行部、  １２  描画命令リオーダ部、  １３  描画命令結合部、  １４  描画命令実行部、  ２０  第１の記憶装置（メインメモリ）、  ３０  第２のプロセッサ（ＧＰＵ）、  ３１  描画部、  ４０  第２の記憶装置（ＶＲＡＭ）、  ５０  表示装置、  ５１  表示画面。
【図１】
0006513312.tif 000002
【図２】
0006513312.tif 000003
【図３】
0006513312.tif 000004
【図４】
0006513312.tif 000005
【図５】
0006513312.tif 000006
【図６】
0006513312.tif 000007
【図７】
0006513312.tif 000008
【図８】
0006513312.tif 000009
【図９】
0006513312.tif 000010
【図１０】
0006513312.tif 000011
【図１１】
0006513312.tif 000012
【図１２】
0006513312.tif 000013