(57)【要約】【課題】効率的な描画データ処理方法を提供する。【解決手段】描画データ処理方法は、第１のデータについて入出力データ形式に応じた第１のデータ生成処理を選択し、第２のデータについて入出力データ形式に応じた第２のデータ生成処理を選択し、少なくとも第１のデータ及び第２のデータの出力データ形式に応じて各頂点間のメモリアドレス距離を示すオフセットを計算し、第１のデータ生成処理を第１のデータに対して実行することにより、出力形式の第１のデータを複数の頂点について生成し、生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、第２のデータ生成処理を第２のデータに対して実行することにより、出力形式の第２のデータを複数の頂点について生成し、生成した第２のデータを前記オフセットが示す間隔でメモリに書き込む各段階を含むことを特徴とする。【選択図】図５
2010277304.tif 000002
【特許請求の範囲】
【請求項１】
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第３のリストを生成する描画データ処理方法であって、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
【請求項２】
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１のデータ生成処理に対応する第１の関数を呼び出すことにより実行され、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２のデータ生成処理に対応する第２の関数を呼び出すことにより実行されることを特徴とする請求項１記載の描画データ処理方法。
【請求項３】
前記第１の関数は、第１のオフセットが示す間隔で前記第１のリストから前記第１のデータを前記複数の頂点について読み出す段階を更に含み、前記第２の関数は、第２のオフセットが示す間隔で前記第２のリストから前記第２のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項２記載の描画データ処理方法。
【請求項４】
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第１の演算処理ユニットにより実行し、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第２の演算処理ユニットにより実行することを特徴とする請求項１記載の描画データ処理方法。
【請求項５】
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第３のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第３のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第１のプログラムコードを含むことを特徴とする図形描画システム。
【請求項６】
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１のデータ生成処理に対応する第１の関数を呼び出すことにより実行され、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２のデータ生成処理に対応する第２の関数を呼び出すことにより実行されることを特徴とする請求項５記載の図形描画システム。
【請求項７】
前記第１の関数は、第１のオフセットが示す間隔で前記第１のリストから前記第１のデータを前記複数の頂点について読み出す段階を更に含み、前記第２の関数は、第２のオフセットが示す間隔で前記第２のリストから前記第２のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項６記載の図形描画システム。
【請求項８】
前記演算処理ユニットは、第１の演算処理ユニットと第２の演算処理ユニットとを含み、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１の演算処理ユニットにより実行し、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２の演算処理ユニットにより実行することを特徴とする請求項５記載の図形描画システム。
【請求項９】
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第１データ形式と前記第３データ形式とに応じた第３のデータ生成処理を選択し、
前記第３のデータ生成処理を前記第１のリストの前記着目頂点の前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第２データ形式と前記第４データ形式とに応じた第４のデータ生成処理を選択し、
前記第４のデータ生成処理を前記第２のリストの前記着目頂点の前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第２のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第１のプログラムコードと前記第２のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする請求項５記載の図形描画システム。
【請求項１０】
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第３のリストを生成するための図形描画データ作成プログラムであって、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第１のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に画像処理に関し、詳しくは図形データに基づいて図形描画データを生成する描画データ処理に関する。
【背景技術】
【０００２】
コンピュータグラフィクスでは、図形描画装置であるグラフィクス・エンジンが、図形描画データに基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより表示画像データを生成する。２次元グラフィクスの場合であれば元の図形描画データは２次元のデータであり、３次元グラフィクスの場合であれば元の図形描画データは３次元のデータである。３次元グラフィクスの場合、グラフィクス・エンジンは、３次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき２次元画像を計算し、その画素毎のデータをメモリに書き込むことにより２次元画像データを生成する。次にディスプレイ・エンジンが、メモリに格納された２次元画像データを描画データとして読出し、読み出した描画データをディスプレイ装置に表示する。
【０００３】
グラフィクス・エンジンは、ジオメトリ処理部とラスタ処理部とを含む。ジオメトリ処理部は、メモリから読み込んだ立体オブジェクトの３次元データに基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理部では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理部は、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの２次元画像を構成する複数の三角形のデータを計算すると、この複数の三角形のデータをラスタ処理部に供給する。なお元の図形描画データが２次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データを直接にラスタ処理部に供給してよい。
【０００４】
ラスタ処理部は、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズ処理により、２次元の描画データを生成する。ラスタライズ処理では、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばＲＧＢ各色の輝度、奥行き方向の距離を表すＺ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【０００５】
描画する対象となる図形のデータは、三角形の各頂点の座標を示す頂点座標データや各頂点の色を示す頂点カラーデータ等を含む。通常、図形データは、その図形データを生成するアプリケーションに応じたデータ形式となっている。例えば、あるアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して固定小数点データ形式を用いて、図形データを生成するかもしれない。また別のアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して浮動小数点データ形式を用いて、図形データを生成するかもしれない。
【０００６】
一方、グラフィクス・エンジンである描画処理装置に入力データとして供給する図形描画データについては、頂点座標データ及び頂点カラーデータが所定のデータ形式で表現される必要がある。例えば、ある描画処理装置の場合、図形描画データの頂点座標データ及び頂点カラーデータとして、両方ともに浮動小数点データ形式が要求されるかもしれない。この場合、アプリケーションソフトウェアが生成した図形データの頂点座標データ及び頂点カラーデータが固定小数点データ形式であるなら、データ形式の変換を行なうことが必要となる。このようなデータ形式の変換により、アプリケーションに応じた図形データから描画処理装置に適した図形描画データを生成することができる。
【０００７】
またデータ形式の変換だけではなく、アプリケーションに応じた図形データのデータ配置から描画処理装置に適した図形描画データのデータ配置へとデータ配置の変換を行なう必要がある。通常、アプリケーションで生成する図形データにおいては、複数の頂点について頂点座標データを並べた１つのデータリストと、複数の頂点について頂点カラーデータを並べた１つのデータリストとが、それぞれ別個のデータリストとなっている。一方、図形処理装置では、頂点座標データや頂点カラーデータを各頂点毎に１つに纏め、そのように纏めたデータを複数の頂点について並べた１つのデータリストとして、図形描画データが提供される必要がある。
【０００８】
上記のようなデータ形式の変換及びデータ配置の変換を行なう際には、従来、各頂点毎にデータ形式を判定し、判定結果に応じてデータ形式の変換を行ない、変換後の頂点座標データや頂点カラーデータを各頂点毎に適切に配置してメモリに書き込んでいる。即ち、第１の頂点について頂点座標データの形式を判定し、判定結果に応じて頂点座標データのデータ形式を変換し、変換後の頂点座標データを第１の頂点についてメモリに書き込む。次に、第１の頂点について頂点カラーデータの形式を判定し、判定結果に応じて頂点カラーデータのデータ形式を変換し、変換後の頂点カラーデータを第１の頂点についてメモリに書き込む。与えられる図形データには、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等も含まれる。そこで、第１の頂点について、頂点座標データ及び頂点カラーデータに続き、テクスチャ座標データ等を含む全ての変換後の図形描画データをメモリに書き込む。次に、第２の頂点について同様の処理を実行する。第２の頂点について全ての変換後の図形描画データをメモリに書き込むと、次に、第３の頂点について同様の処理を実行する。以降、複数の頂点の残りの全てについて、同様に処理を実行する。
【０００９】
一般に、アプリケーションにより生成される図形データの形式は、頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について複数種類が存在し、それらのデータ形式の組み合わせの数は膨大な数（例えば１００以上）となる。そのような膨大な数の組み合わせの各々について別個にデータ変換用のプログラムコードを用意することは、コードサイズが膨大となりメンテナンス性の観点から好ましくない。そのため従来は、上記のように頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について、各頂点毎にデータ形式を判定し、判定に応じて適切なデータ変換を実行していた。
【００１０】
しかし上記のように各頂点毎にデータ形式を判定していたのでは、データ形式の判定処理の実行回数が、図形データに含まれる頂点数に比例して増加してしまう。その結果、頂点数が多い図形データの場合には、効率的なデータ変換処理を実行できないという問題が生じる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平９−２２４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
以上を鑑みると、効率的に図形データを図形描画データに変換するデータ処理装置及びデータ処理方法が望まれる。
【課題を解決するための手段】
【００１３】
本発明の一観点によれば、各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第３のリストを生成する描画データ処理方法であって、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行する描画データ処理方法が提供される。
【発明の効果】
【００１４】
開示の描画データ処理方法によれば、データ形式の判定に基づく適切なデータ生成処理の選択及び図形描画データ格納時のオフセットの計算を事前に行なっておく。その事前計算の結果を用いて、データ形式の変換及び変換後のデータ書き込みを、第１のリストの第１のデータの複数の頂点に対して一括的に実行し、それとは別個に第２のリストの第２のデータの複数の頂点に対して一括的に実行する。このように、データ形式の判定に基づいた適切なデータ生成処理の選択を各頂点毎に実行することなく、事前に実行しておくことにより、効率的な図形描画データ作成処理を実現する効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図形描画システムの構成の一例を示す図である。
【図２】図形データの頂点座標データを図形描画データの頂点座標データに変換する関数の一例を示す表である。
【図３Ａ】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図３Ｂ】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図３Ｃ】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図４】図形データのテクスチャ座標データを図形描画データのテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。
【図５】図１に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。
【図６】図５のステップＳ２に示す事前計算処理の詳細を示すフローチャートである。
【図７】図形描画制御データの一例を示す表である。
【図８Ａ】図形描画制御データの各データの意味を示す表である。
【図８Ｂ】図形描画制御データの各データの意味を示す表である。
【図９】頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。
【図１０】選択された頂点座標コマンド作成関数を示すデータの図である。
【図１１】図形描画制御データのｖｅｒｔｅｘ＿ｓｔｒｉｄｅの意味を示す表である。
【図１２】次の頂点座標データまでのオフセットを示すデータの例を示す図である。
【図１３】頂点座標データの取得先アドレスを示すデータの例を示す図である。
【図１４】頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。
【図１５】選択された頂点カラーコマンド作成関数を示すデータの図である。
【図１６】図形描画制御データのｃｏｌｏｒ＿ｓｔｒｉｄｅの意味を示す表である。
【図１７】次の頂点カラーデータまでのオフセットを示すデータの例を示す図である。
【図１８】頂点カラーデータの取得先アドレスを示すデータの例を示す図である。
【図１９】テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。
【図２０】選択されたテクスチャ座標コマンド作成関数を示すデータの図である。
【図２１】図形描画制御データのｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの意味を示す表である。
【図２２】次のテクスチャ座標データまでのオフセットを示すデータの例を示す図である。
【図２３】テクスチャ座標データの取得先アドレスを示すデータの例を示す図である。
【図２４】頂点座標コマンドの格納アドレスを示すデータの例を示す図である。
【図２５】各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。
【図２６】頂点カラーコマンドの格納アドレスを示すデータの例を示す図である。
【図２７】各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。
【図２８】テクスチャ座標コマンドの格納アドレスを示すデータの例を示す図である。
【図２９】各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。
【図３０】次の頂点コマンド格納アドレスまでのオフセットを示すデータの例を示す図である。
【図３１】図５のステップＳ３に示す図形描画データ作成処理の詳細を示すフローチャートである。
【図３２】図７に示す図形描画制御データの例から求めた事前計算結果データを示す図である。
【図３３】ＶＲＡＭのメモリ空間において、ＤＬ＿ｐｔｒが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【図３４】図３２に示す事前計算結果データの例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。
【図３５】頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。
【図３６】頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。
【図３７】図３２に示す事前計算結果データの例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。
【図３８】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。
【図３９】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。
【図４０】図３２に示す事前計算結果データの例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。
【図４１】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。
【図４２】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。
【図４３】ＶＲＡＭのメモリ空間に作成された図形描画データの構成を示す図である。
【図４４】従来の図形描画データの作成処理を示すフローチャートである。
【図４５】図４４に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。
【図４６】図５のステップＳ２及びＳ３に示す図形描画データの作成処理における処理負荷の値を示す表である。
【図４７】２つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。
【図４８】図４７のステップＳ１の判定処理で用いる閾値を設定するフローチャートである。
【図４９】図形描画システムの変形例を示す図である。
【図５０】図４９に示すマルチコアＣＰＵを用いた場合の図形描画処理を示すフローチャートである。
【図５１】図５０のステップＳ２及びＳ３−１乃至３−３に示す図形描画データの作成処理における処理負荷の値を示す表である。
【発明を実施するための形態】
【００１６】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１７】
図１は、図形描画システムの構成の一例を示す図である。図１に示す図形描画システムは、ＣＰＵ（Central Processing Unit）１０、ホストインターフェース１１、図形描画処理装置１２、表示装置１３、データ格納ユニット１４、メインメモリ１５、及びＶＲＡＭ（Video Random Access Memory）１６を含む。ＣＰＵ１０は、ホストインターフェース１１を介して図形描画処理装置１２に結合される。互いに結合されたＣＰＵ１０と図形描画処理装置１２とで、1つの描画処理システムチップ１８を構成してよい。この描画処理システムチップ１８に対する表示装置１３、データ格納ユニット１４、メインメモリ１５、及びＶＲＡＭ１６の結合は、模式的或いは機能的な結合を示すものであり、実際の信号線の結合を示すものではない。例えばメインメモリ１５とＶＲＡＭ１６とは、別個のメモリデバイスである必要はなく、描画処理システムチップ１８に接続される1つの連続したメモリ空間を構成する単一のメモリデバイスであってよい。データ格納ユニット１４は、ハードディスクドライブ、ＤＶＤ、ＣＤ−ＲＯＭ等の大容量のデータ格納装置であってよい。表示装置１３は、ＣＲＴや液晶表示装置等の表示機器であり、ＶＲＡＭ１６に描画された２次元画像データ（ラスタデータ）を表示する。
【００１８】
図形描画処理装置１２は、ＶＲＡＭ１６に格納された図形描画データ２０に基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより２次元画像データ（ラスタデータ）２１を生成する。２次元グラフィクスの場合であれば元の図形描画データ２０は２次元のデータであり、３次元グラフィクスの場合であれば元の図形描画データ２０は３次元のデータである。３次元グラフィクスの場合、図形描画処理装置１２は、３次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき２次元画像を計算し、その画素毎のデータをメモリに書き込むことにより２次元画像データ２１を生成する。次に、図形描画処理装置１２に内蔵のディスプレイ・エンジンが、ＶＲＡＭ１６に格納された２次元画像データ２１を描画データとして読出し、読み出した描画データを表示装置１３に表示する。
【００１９】
図形描画処理装置１２は、ジオメトリ処理とラスタ処理とを実行する。図形描画処理装置１２は、ＶＲＡＭ１６から読み込んだ立体オブジェクトの３次元データ（図形描画データ２０）に基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理においては、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの２次元画像を構成する複数の三角形のデータを計算する。この複数の三角形のデータは、その後、ラスタ処理に供される。なお元の図形描画データ２０が２次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データ２０を直接にラスタ処理の対象とすればよい。
【００２０】
ラスタ処理においては、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズにより、２次元の描画データ（２次元画像データ２１）を生成する。ラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばＲＧＢ各色の輝度、奥行き方向の距離を表すＺ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【００２１】
図形描画データ２０は、データ格納ユニット１４に格納される図形データ２２及び図形描画制御データ２３に基づいて、ＣＰＵ１０が生成する。図形データ２２は、三角形の各頂点の座標を示す頂点座標データ、各頂点の色を示す頂点カラーデータ、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等を含む。図形データ２２は、当該図形データ２２を生成するアプリケーションソフトウェアに応じたデータ形式となっている。
【００２２】
図形データ２２は、各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストである。ここで第１のデータは例えば頂点座標データであり、第２のデータは例えば頂点カラーデータである。ＣＰＵ１０は、第１データ形式と同一又は異なる第３データ形式で表現した第１のデータと第２データ形式と同一又は異なる第４データ形式で表現した第２のデータとを含む各頂点に関するデータを複数の頂点について並べ、図形描画データ２０を生成する。
【００２３】
まずＣＰＵ１０は、データ格納ユニット１４から図形データ２２及び図形描画制御データ２３を読み出して、メインメモリ１５に格納する。メインメモリ１５中の図形データ２２と図形描画制御データ２３とに基づいて、ＣＰＵ１０は、まず最初に事前計算結果データ２４を生成する。具体的には、ＣＰＵ１０は、第１データ形式と第３データ形式とに応じた第１のデータ生成処理を選択する。更にＣＰＵ１０は、第２データ形式と第４データ形式とに応じた第２のデータ生成処理を選択する。また更にＣＰＵ１０は、少なくとも第３データ形式と第４データ形式とに応じて図形描画データ２０における各頂点間のメモリアドレス距離を示すオフセットを計算する。以上の処理を、図形描画データ２０を生成するための事前計算として最初に実行し、事前計算結果データ２４を生成する。事前計算結果データ２４は、少なくとも前記第１のデータ生成処理及び第２のデータ生成処理を特定するデータとともに、前記オフセットを示すデータを含む。
【００２４】
上記のようにして計算した事前計算結果データ２４に基づいて、ＣＰＵ１０は、図形描画データ２０をＶＲＡＭ１６に書き込む。まずＣＰＵ１０は、第１のデータ生成処理を第１のリストの第１のデータに対して実行することにより、第３データ形式で表現した第１のデータを複数の頂点について生成し、こうして生成した第１のデータを前記オフセットが示す間隔でＶＲＡＭ１６に書き込む。更にＣＰＵ１０は、第２のデータ生成処理を第２のリストの第２のデータに対して実行することにより、第４データ形式で表現した第２のデータを複数の頂点について生成し、こうして生成した第２のデータを前記オフセットが示す間隔でＶＲＡＭ１６に書き込む。このようにしてデータ形式変換後の第１のデータ（例えば頂点座標データ）とデータ形式変換後の第２のデータ（例えば頂点カラーデータ）とを、所定のオフセット間隔で各頂点毎にＶＲＡＭ１６に書き込んで、図形描画データ２０を生成することができる。図形データ２２に含まれる他のデータ、例えばテクスチャ座標データ等についても、同様にして、データ形式を変換してから所定のオフセット間隔でＶＲＡＭ１６に書き込めばよい。
【００２５】
第１のデータ生成処理により第３データ形式で表現した第１のデータを複数の頂点について生成してＶＲＡＭ１６に前記オフセットが示す間隔で書き込む段階（便宜上、第１段階と呼ぶ）は、複数の頂点について一括的に実行されてよい。また第２のデータ生成処理により第４データ形式で表現した第２のデータを複数の頂点について生成してＶＲＡＭ１６に前記オフセットが示す間隔で書き込む段階（便宜上、第２段階と呼ぶ）も、複数の頂点について一括的に実行されてよい。また上記第１段階と第２段階とは、互いに別個に実行されてよい。即ち、第１段階と第２段階との何れか一方を先に実行してから、残りの一方を実行してよいし、或いは第１段階と第２段階とを独立して並行的に実行してもよい。このように第１及び第２のデータ生成処理を事前に選択しておき、その後、第１のデータ生成処理を用いた第１段階と第２のデータ生成処理を用いた第２段階とをそれぞれ複数の頂点について一括的に実行することにより、効率的な処理を実現することができる。
【００２６】
また第３データ形式で表現した第１のデータを複数の頂点について生成し、こうして生成した第１のデータを前記オフセットが示す間隔でＶＲＡＭ１６に書き込む段階は、第１のデータ生成処理に対応する第１の関数を呼び出すことにより実行してよい。また第４データ形式で表現した第２のデータを複数の頂点について生成し、こうして生成した第２のデータを前記オフセットが示す間隔でＶＲＡＭ１６に書き込む段階は、第２のデータ生成処理に対応する第２の関数を呼び出すことにより実行してよい。
【００２７】
図２は、図形データ２２の頂点座標データを図形描画データ２０の頂点座標データに変換する関数の一例を示す表である。図形描画データ２０の頂点座標データは、図形描画処理装置１２に対して描画対象の頂点座標を指示するデータであり、頂点座標コマンドと呼ばれる。これに対応して、図形データ２２の頂点座標データを図形描画データ２０の頂点座標データ（即ち頂点座標コマンド）に変換する関数を、頂点座標コマンド作成関数と呼ぶ。図２に示す例では、頂点座標コマンド作成関数の名称をgdcMakeVertexCoordDL_＊＊とし、"＊＊"で示す関数のサフィックス部分に"2XtoI"や"2XtoF"等を指定することにより、関数によるデータ変換の形式を指定している。図２に示す例において、"2XtoI"は、各１ワード（４バイト）の固定小数点形式（fixed）のＸ座標値とＹ座標値とが入力データとして与えられ、各short形式（２バイト）の整数値のＸ座標値とＹ座標値とを出力データとして生成する関数を示す。また"2XtoF"は、各１ワード（４バイト）の固定小数点形式（fixed）のＸ座標値とＹ座標値とが入力データとして与えられ、各１ワードの浮動小数点形式（float）のＸ座標値とＹ座標値とを出力データとして生成する関数を示す。また例えば、"2FtoX"は、各１ワード（４バイト）の浮動小数点形式（float）のＸ座標値とＹ座標値とが入力データとして与えられ、各１ワードの固定小数点形式（fixed）のＸ座標値とＹ座標値とを出力データとして生成する関数を示す。また"3Word"は、各１ワードのＸ座標値とＹ座標値とが入力データとして与えられ、各１ワードのＧ＿ＶｅｒｔｅｘコマンドとＸ座標値とＹ座標値とを合計３ワードの出力データとして生成する関数を示す。なおここでＧ＿Ｖｅｒｔｅｘコマンドは、１ワードの固定のビットパターンであり、その固定のビットパターンに続いて1つの頂点に対する各種頂点データが格納されていることを示すために用いられる。図形描画処理装置１２は、あるＧ＿Ｖｅｒｔｅｘコマンドから次のＧ＿Ｖｅｒｔｅｘコマンドまでの間に格納されているデータを、1つの頂点に対する各種頂点データとして認識する。またget_ptrは図形データ２２の頂点座標データの取得先アドレスを示し、set_ptrは図形描画データ２０の頂点座標コマンドの格納先アドレスを示す。
【００２８】
図３Ａ乃至３Ｃは、図形データ２２の頂点カラーデータを図形描画データ２０の頂点カラーデータに変換する関数の一例を示す表である。図形データ２２の頂点カラーデータを図形描画データ２０の頂点カラーデータ（即ち頂点カラーコマンド）に変換する関数を、頂点カラーコマンド作成関数と呼ぶ。図３Ａ乃至３Ｃに示す例では、頂点カラーコマンド作成関数の名称をgdcMakeColorDL_＊＊とし、"＊＊"で示す関数のサフィックス部分に"3Fto3F"や"3Xto3F"等を指定することにより、関数によるデータ変換の形式を指定している。例えば図３Ａにおいて、"3Fto3F"は、各１ワード（４バイト）の浮動小数点形式（float）のＲＧＢカラー値が入力データとして与えられ、各１ワードの浮動小数点形式（float）のＲＧＢカラー値を出力データとして生成する関数を示す。また例えば図３Ｂにおいて、"3XtoARGB8"では、各１ワード（４バイト）の固定小数点形式（fixed）のＲＧＢカラー値と８ビットの整数形式（int）のアルファ値Ａとが入力データとして与えられる。この関数は、各１バイトの整数形式（int）のアルファ値ＡとＲＧＢカラー値とを出力データとして生成する。なおalpha_ptrは、図形データ２２のアルファ値（アルファ係数）のデータの取得先アドレスを示す。またcolorは、カラー配列が無効な場合の固定カラー値である。
【００２９】
図４は、図形データ２２のテクスチャ座標データを図形描画データ２０のテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。図形データ２２のテクスチャ座標データを図形描画データ２０のテクスチャ座標データ（即ちテクスチャ座標コマンド）に変換する関数を、テクスチャ座標コマンド作成関数と呼ぶ。図４に示す例では、テクスチャ座標コマンド作成関数の名称をgdcMakeTextureCoordDL_＊＊とし、"＊＊"で示す関数のサフィックス部分に"2Xto2F"や"2Fto2X"等を指定することにより、関数によるデータ変換の形式を指定している。具体例の詳細は、図２や図３Ａ乃至３Ｃに示す例と同様であり、その説明を省略する。
【００３０】
図５は、図１に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。まずステップＳ１において、ＣＰＵ１０が、データ格納ユニット１４から図形データ２２と図形描画制御データ２３とをメインメモリ１５にロードする。ステップＳ２において、ＣＰＵ１０は、メインメモリ１５に格納された図形データ２２と図形描画制御データ２３とに基づいて、頂点コマンド作成に最適な作成関数を選択する。即ち、例えば図２乃至図４に示す頂点コマンド作成関数のうちで適切なものを選択する。また更にＣＰＵ１０は、メインメモリ１５に格納された図形データ２２と図形描画制御データ２３とに基づいて、選択した頂点コマンド作成関数に入力するアドレス値やオフセット値等のパラメータを計算する。こうして選択した頂点コマンド作成関数を示すデータ及び計算した各種パラメータは、事前計算結果データ２４としてメインメモリ１５に格納される。なお事前計算結果データ２４は、図形描画制御データ２３とは別個のデータとして格納及び管理してもよいし、図形描画制御データ２３の一部として格納及び管理してもよい。次にステップＳ３において、ＣＰＵ１０は、図形描画制御データ２３及び事前計算結果データ２４に基づいて、選択した頂点コマンド作成関数により図形描画データ２０を作成し、ＶＲＡＭ１６に格納する。以上で、図形描画データ２０を作成する処理が終了する。
【００３１】
ＣＰＵ１０による図形描画データ２０の作成処理は、ＣＰＵ１０が所定のプログラムを実行することにより実現される。このプログラムは、データ格納ユニット１４に格納されており、実行時にメインメモリ１５にロードされる。メインメモリ１５は更に、プログラム実行時のワークメモリとして機能する。また各種頂点コマンド作成関数は、ライブラリ関数等として、データ格納ユニット１４に予め格納されている。ＣＰＵ１０は、選択した頂点コマンド作成関数をデータ格納ユニット１４からメインメモリ１５にロードして実行する。
【００３２】
次に図５のステップＳ４で、図形描画処理装置１２が、図形描画データ２０に基づいて図形をラスタデータとして描画することにより、２次元画像データ２１を生成してＶＲＡＭ１６に格納する。即ち、図形描画処理装置１２は、オブジェクトの３次元データ（図形描画データ２０）に基づいてオブジェクトの拡大及び回転等のジオメトリ処理を行い、所望の視点から見たオブジェクトの２次元画像を構成する複数の２次元の三角形のデータを計算する。なお元の図形描画データ２０が２次元のデータである場合、ジオメトリ処理を実行する必要はない。その後、図形描画処理装置１２は、複数の２次元の三角形のデータに基づいて、オブジェクトを構成する各面の各画素を塗りつぶすラスタ処理（ラスタライズ）を実行し、２次元の描画データ（２次元画像データ２１）を生成する。このラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求め、三角形内部を塗りつぶす。例えば図１に示されるように、２つの三角形２６Ａ及び２６Ｂを描画する場合が考えられる。この場合、図形描画データ２０の頂点データから三角形２６Ａの３つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形２６Ａの内部の各画素の画像パラメータ（輝度、色、テクスチャ等）を求め、三角形２６Ａを描画する。同様にして、図形描画データ２０の頂点データから三角形２６Ｂの３つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形２６Ｂの内部の各画素の画像パラメータ（輝度、色、テクスチャ等）を求め、三角形２６Ｂを描画する。また奥行き方向の距離を表すＺ値の比較により、三角形２６Ｂが三角形２６Ａの背後に隠れるような前後関係を判断して描画することができる。
【００３３】
次にステップＳ５で、図形描画処理装置１２の描画エンジンが、ＶＲＡＭ１６の２次元画像データ２１を表示装置１３に転送し、表示装置１３の画面に描画データを表示する。これにより、例えば図１に示すように、２つの三角形２６Ａ及び２６Ｂが表示装置１３の画面に表示される。
【００３４】
図６は、図５のステップＳ２に示す事前計算処理の詳細を示すフローチャートである。図６に示す各ステップは、図１のＣＰＵ１０により実行される。まずステップＳ１において、頂点座標データの入出力データ形式を判定する。この判定は、図形描画制御データ２３に含まれる頂点座標データの入出力データ形式を示すデータを参照することにより行なわれる。
【００３５】
図７は、図形描画制御データ２３の一例を示す表である。図７に示すように、図形描画制御データ２３は、固有のデータ名を有しそれぞれ特定の意味を有する各データに対して値が定義されており、この値により、描画対象のオブジェクトに関する描画条件を指定してある。図形描画制御データ２３の各データの意味については、図８Ａ及び図８Ｂに示す表に示されている。なお図８Ｂにおいて、データ名ｖｅｒｔｅｘ＿ｆｕｎｃ以降のデータは、図６の事前計算により求められる事前計算結果データ２４に対応する部分である。前述のように、事前計算結果データ２４は、図形描画制御データ２３の一部として管理されてよい。
【００３６】
図７に示す図形描画制御データ２３の例において、データ名ｖｅｒｔｅｘ＿ｆｏｒｍａｔのデータが示す頂点座標データの入力形式は、ＧＤＣ＿ＴＹＰＥ＿ＶＴＸ２Ｘである。即ち、図６のステップＳ１において、頂点座標データの入力データ形式を判定すると、入力データ形式はＧＤＣ＿ＴＹＰＥ＿ＶＴＸ２Ｘ（固定小数点形式）であることが分かる。また図７に示す図形描画制御データ２３の例において、データ名ＤＬ＿ｆｏｒｍａｔのデータが示す頂点コマンドの出力形式は、ＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴである。即ち、図６のステップＳ１において、頂点コマンドの出力データ形式を判定すると、出力データ形式は浮動小数点形式であることが分かる。
【００３７】
次に図６のステップＳ２で、最適な頂点座標コマンド作成関数を選択する。図９は、頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。上記のように図７に示す図形描画制御データ２３の例では、頂点座標データの入力形式はＧＤＣ＿ＴＹＰＥ＿ＶＴＸ２Ｘであり、頂点コマンドの出力形式はＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴである。従って、図９からこの組み合わせに対する適切な頂点座標コマンド作成関数を選択すると、gdcMakeVertexCoordDL_2XtoFが選択される。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｖｅｒｔｅｘ＿ｆｕｎｃのデータ値には、gdcMakeVertexCoordDL_2XtoFが格納される。この様子が図１０に示される。
【００３８】
次に図６のステップＳ３で、次の頂点座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ２３のｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値を参照することで求めることができる。図７に示す図形描画制御データ２３の例では、ｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値は０となっている。この値の意味は、図１１に示されている。図１１に示されるように、図形描画制御データ２３のｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値が０となっているときは、頂点座標データの入力形式に依存して次の頂点座標データまでのオフセットの値が決まる。また図形描画制御データ２３のｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値が０以外となっているときは、頂点座標データの入力形式に関わらず、そのｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値が次の頂点座標データまでのオフセットの値となる。図７に示す図形描画制御データ２３の例では、ｖｅｒｔｅｘ＿ｓｔｒｉｄｅの値は０であり、また頂点座標データの入力形式はＧＤＣ＿ＴＹＰＥ＿ＶＴＸ２Ｘであるので、次の頂点座標データまでのオフセットは２×４となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｖｅｒｔｅｘ＿ｇｅｔ＿ｏｆｆｓｅｔのデータ値には８が格納される。この様子が図１２に示される。
【００３９】
次に図６のステップＳ４で、頂点座標データの取得先アドレスの計算を行なう。頂点座標データの取得先アドレスｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒは、以下の式により計算することができる。
【００４０】
vertex_get_ptr = vertex_ptr + (vertex_get_offset × first)
ここで、ｖｅｒｔｅｘ＿ｐｔｒ及びｆｉｒｓｔは図形描画制御データ２３に定義されるデータであり、またｖｅｒｔｅｘ＿ｇｅｔ＿ｏｆｆｓｅｔは上記のステップＳ３で求めたオフセット値である。図７に示す図形描画制御データ２３の例の場合、
vertex_get_ptr = 0x00A00000 + (8 × 16) = 0x00A00080
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒのデータ値には０ｘ００Ａ０００８０が格納される。この様子が図１３に示される。
【００４１】
更に図６のステップＳ５において、頂点カラーデータの入出力データ形式を判定する。この判定は、図形描画制御データ２３に含まれる頂点カラーデータの入出力データ形式を示すデータを参照することにより行なわれる。図７に示す図形描画制御データ２３の例において、データ名ｃｏｌｏｒ＿ｆｏｒｍａｔのデータが示す頂点カラーデータの入力形式は、ＧＤＣ＿ＴＹＰＥ＿ＲＧＢ３Ｘ（固定小数点形式）である。また図７に示す図形描画制御データ２３の例において、データ名ＤＬ＿ｆｏｒｍａｔのデータが示す頂点コマンドの出力形式は、ＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴ（浮動小数点形式）である。
【００４２】
次に図６のステップＳ６で、最適な頂点カラーコマンド作成関数を選択する。図１４は、頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。なお図１４に示されるように、カラー配列の有効又は無効を示すカラー配列フラグｃｏｌｏｒ＿ｆｌａｇ及びアルファブレンディングの有効又は無効を示すα係数フラグａｌｐｈａ＿ｆｌａｇに応じて適切な頂点カラーコマンド作成関数が異なる。上記のように図７に示す図形描画制御データ２３の例では、頂点カラーデータの入力形式はＧＤＣ＿ＴＹＰＥ＿ＲＧＢ３Ｘであり、頂点コマンドの出力形式はＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴである。従って、図１４からこの組み合わせに対する適切な頂点カラーコマンド作成関数を選択すると、gdcMakeColorDL_3Xto3Fが選択される。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｃｏｌｏｒ＿ｆｕｎｃのデータ値には、gdcMakeColorDL_3Xto3Fが格納される。この様子が図１５に示される。
【００４３】
次に図６のステップＳ７で、次の頂点カラーデータまでのオフセットを計算する。このオフセットは、図形描画制御データ２３のｃｏｌｏｒ＿ｓｔｒｉｄｅの値を参照することで求めることができる。図７に示す図形描画制御データ２３の例では、ｃｏｌｏｒ＿ｓｔｒｉｄｅの値は０となっている。この値の意味は、図１６に示されている。図１６に示されるように、図形描画制御データ２３のｃｏｌｏｒ＿ｓｔｒｉｄｅの値が０となっているときは、頂点カラーデータの入力形式に依存して次の頂点カラーデータまでのオフセットの値が決まる。また図形描画制御データ２３のｃｏｌｏｒ＿ｓｔｒｉｄｅの値が０以外となっているときは、頂点カラーデータの入力形式に関わらず、そのｃｏｌｏｒ＿ｓｔｒｉｄｅの値が次の頂点カラーデータまでのオフセットの値となる。図７に示す図形描画制御データ２３の例では、ｃｏｌｏｒ＿ｓｔｒｉｄｅの値は０であり、また頂点カラーデータの入力形式はＧＤＣ＿ＴＹＰＥ＿ＲＧＢ３Ｘであるので、次の頂点カラーデータまでのオフセットは３×４となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｃｏｌｏｒ＿ｏｆｆｓｅｔのデータ値には１２が格納される。この様子が図１７に示される。
【００４４】
次に図６のステップＳ８で、頂点カラーデータの取得先アドレスの計算を行なう。頂点カラーデータの取得先アドレスｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒは、以下の式により計算することができる。
【００４５】
color_first_ptr = color_ptr + (color_offset × first)
ここで、ｃｏｌｏｒ＿ｐｔｒ及びｆｉｒｓｔは図形描画制御データ２３に定義されるデータであり、またｃｏｌｏｒ＿ｏｆｆｓｅｔは上記のステップＳ７で求めたオフセット値である。図７に示す図形描画制御データ２３の例の場合、
color_first_ptr = 0x00B00000 + (12 × 16) = 0x00B000C0
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒのデータ値には０ｘ００Ｂ０００Ｃ０が格納される。この様子が図１８に示される。
【００４６】
更に図６のステップＳ９において、テクスチャ座標データの入出力データ形式を判定する。この判定は、図形描画制御データ２３に含まれるテクスチャ座標データの入出力データ形式を示すデータを参照することにより行なわれる。図７に示す図形描画制御データ２３の例において、データ名ｔｅｘｔｕｒｅ＿ｆｏｒｍａｔのデータが示すテクスチャ座標データの入力形式は、ＧＤＣ＿ＴＹＰＥ＿ＴＥＸ２ＸＮ（固定小数点形式）である。また図７に示す図形描画制御データ２３の例において、データ名ＤＬ＿ｆｏｒｍａｔのデータが示す頂点コマンドの出力形式は、ＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴ（浮動小数点形式）である。
【００４７】
次に図６のステップＳ１０で、最適なテクスチャ座標コマンド作成関数を選択する。図１９は、テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。上記のように図７に示す図形描画制御データ２３の例では、テクスチャ座標データの入力形式はＧＤＣ＿ＴＹＰＥ＿ＴＥＸ２ＸＮであり、頂点コマンドの出力形式はＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴである。従って、図１９からこの組み合わせに対する適切なテクスチャ座標コマンド作成関数を選択すると、gdcMakeTextureCoordDL_2Xto2Fが選択される。従って、事前計算結果データ２４又は図形描画制御データ２３の一部において、データ名ｔｅｘｔｕｒｅ＿ｆｕｎｃのデータ値には、gdcMakeTextureCoordDL_2Xto2Fが格納される。この様子が図２０に示される。
【００４８】
次に図６のステップＳ１１で、次のテクスチャ座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ２３のｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値を参照することで求めることができる。図７に示す図形描画制御データ２３の例では、ｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値は０となっている。この値の意味は、図２１に示されている。図２１に示されるように、図形描画制御データ２３のｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値が０となっているときは、テクスチャ座標データの入力形式に依存して次のテクスチャ座標データまでのオフセットの値が決まる。また図形描画制御データ２３のｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値が０以外となっているときは、テクスチャ座標データの入力形式に関わらず、そのｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値が次のテクスチャ座標データまでのオフセットの値となる。図７に示す図形描画制御データ２３の例では、ｔｅｘｔｕｒｅ＿ｓｔｒｉｄｅの値は０であり、またテクスチャ座標データの入力形式はＧＤＣ＿ＴＹＰＥ＿ＴＥＸ２ＸＮであるので、次のテクスチャ座標データまでのオフセットは２×４となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｔｅｘｔｕｒｅ＿ｏｆｆｓｅｔのデータ値には８が格納される。この様子が図２２に示される。
【００４９】
次に図６のステップＳ１２で、テクスチャ座標データの取得先アドレスの計算を行なう。テクスチャ座標データの取得先アドレスｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒは、以下の式により計算することができる。
【００５０】
texture_first_ptr = texture_ptr + (texture_offset × first)
ここで、ｔｅｘｔｕｒｅ＿ｐｔｒ及びｆｉｒｓｔは図形描画制御データ２３に定義されるデータであり、またｔｅｘｔｕｒｅ＿ｏｆｆｓｅｔは上記のステップＳ１１で求めたオフセット値である。図７に示す図形描画制御データ２３の例の場合、
texture_first_ptr = 0x00C00000 + (8 × 16) = 0x00C00080
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒのデータ値には０ｘ００Ｃ０００８０が格納される。この様子が図２３に示される。
【００５１】
更に図６のステップＳ１３で、頂点コマンドの出力形式を判定する。この判定は、図形描画制御データ２３に含まれる頂点コマンドの出力データ形式を示すデータを参照することにより行なわれる。図７に示す図形描画制御データ２３の例において、データ名ＤＬ＿ｆｏｒｍａｔのデータが示す頂点コマンドの出力形式は、ＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴ（浮動小数点形式）である。
【００５２】
次に図６のステップＳ１４で、最初の頂点座標コマンドの格納アドレスを計算する。最初の頂点座標コマンドの格納アドレスｖｅｒｔｅｘ＿ｓｅｔ＿ｐｔｒは、描画領域設定（４ワード）及び図形描画開始コマンド（１ワード）のサイズ分を、描画コマンド格納領域の先頭アドレスＤＬ＿ｐｔｒに加算した位置となる。但し図形描画制御データのｔｅｘｔｕｒｅ＿ｆｌａｇがＧＤＣ＿ＴＲＵＥの場合は、テクスチャ画像アドレス、幅、高さの設定コマンドを出力する必要があるので、それらのコマンドのサイズ分（６ワード）のオフセットも加算する。図７に示す図形描画制御データ２３の例の場合、
vertex_set_ptr = 0x44000000 + ((4 + 1 + 6) × 4) = 0x4400002C
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｖｅｒｔｅｘ＿ｓｅｔ＿ｐｔｒのデータ値には０ｘ４４００００２Ｃが格納される。この様子が図２４に示される。
【００５３】
次に図６のステップＳ１５で、最初の頂点カラーコマンドの格納アドレスを計算する。この最初の頂点カラーコマンドの格納アドレスｃｏｌｏｒ＿ｓｅｔ＿ｐｔｒは、上記のステップＳ１４で求めた頂点座標コマンドの格納アドレスに、ステップＳ１３で求めた頂点コマンドの出力データ形式に応じた頂点座標コマンドサイズを加算した値となる。図２５は、各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。図７に示す図形描画制御データ２３の例の場合、出力データ形式はＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴ（浮動小数点形式）であり、頂点座標コマンド作成関数は2XtoFである。従って、頂点座標コマンドサイズは３ワードとなる。このようにして、図７に示す図形描画制御データ２３の例の場合、
color_set_ptr = 0x4400002C + (3 × 4) = 0x44000038
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｃｏｌｏｒ＿ｓｅｔ＿ｐｔｒのデータ値には０ｘ４４００００３８が格納される。この様子が図２６に示される。
【００５４】
次に図６のステップＳ１６で、最初のテクスチャ座標コマンドの格納アドレスを計算する。この最初のテクスチャ座標コマンドの格納アドレスｔｅｘｔｕｒｅ＿ｓｅｔ＿ｐｔｒは、上記のステップＳ１５で求めた頂点カラーコマンドの格納アドレスに、ステップＳ１３で求めた頂点コマンドの出力データ形式に応じた頂点カラーコマンドサイズを加算した値となる。図２７は、各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。図７に示す図形描画制御データ２３の例の場合、出力データ形式はＧＤＣ＿ＤＬ＿ＦＯＲＭＡＴ＿ＦＬＯＡＴ（浮動小数点形式）であり、頂点カラーコマンド作成関数は3Xto3Fである。従って、頂点カラーコマンドサイズは３ワードとなる。このようにして、図７に示す図形描画制御データ２３の例の場合、
texture_set_ptr = 0x44000038 + (3 × 4) = 0x44000044
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｔｅｘｔｕｒｅ＿ｓｅｔ＿ｐｔｒのデータ値には０ｘ４４００００４４が格納される。この様子が図２８に示される。
【００５５】
次に図６のステップＳ１７で、次の頂点コマンド格納アドレスまでのオフセットを計算する。次の頂点コマンド格納アドレスまでのオフセットｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔは、頂点座標コマンドのサイズ、頂点カラーコマンドのサイズ、テクスチャ座標コマンドのサイズを加算した値となる。図２９は、各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。図７に示す図形描画制御データ２３の例の場合、テクスチャ座標コマンド作成関数は2Xto2Fである。従って、テクスチャ座標コマンドサイズは２ワードとなる。このようにして、図７に示す図形描画制御データ２３の例の場合、
vertex_set_offset = (3 + 3 + 2) × 4 = 32
となる。従って、事前計算結果データ２４（又は図形描画制御データ２３の一部）において、データ名ｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔのデータ値には３２が格納される。この様子が図３０に示される。
【００５６】
図３１は、図５のステップＳ３に示す図形描画データ作成処理の詳細を示すフローチャートである。図３１に示す各ステップは、図１のＣＰＵ１０により実行される。まずステップＳ１において、事前計算結果データ２４（図形描画制御データ２３の一部であってよい）を参照する。図３２は、図７に示す図形描画制御データ２３の例から求めた事前計算結果データ２４を示す図である。便宜上、ＤＬ＿ｆｏｒｍａｔも事前計算結果データ２４の一部として示してある。なお事前計算結果データ２４だけではなく、如何に説明するように、図形描画制御データ２３の他のデータも参照する。
【００５７】
図３１のステップＳ２では、各種のコマンドを出力してＶＲＡＭ１６（図１参照）に格納する。具体的には、図形描画制御データ２３のｄｒａｗ＿ｐｔｒとｄｒａｗ＿ｓｔｒｉｄｅとを参照して、描画領域を設定するコマンドをＤＬ＿ｐｔｒが示すアドレスから格納する。なおｄｒａｗ＿ｐｔｒは矩形の描画領域の左上コーナーの位置を示すアドレスであり、ｄｒａｗ＿ｓｔｒｉｄｅは描画領域のストライド（即ち矩形の描画領域の水平方向の長さ）を示すデータである。またｔｅｘｔｕｒｅ＿ｆｌａｇが有効な場合は、図形描画制御データ２３のｉｍａｇｅ＿ｐｔｒ、ｉｍａｇｅ＿ｗｉｄｔｈ、ｉｍａｇｅ＿ｈｅｉｇｈｔを参照し、テクスチャ画像の設定コマンドを作成し、描画領域を設定するコマンドに続けて格納する。最後に、図形描画開始コマンドＧＤＣ＿ＴＲＩＡＮＧＬＥＳを作成し格納する。図３３は、ＶＲＡＭ１６のメモリ空間において、ＤＬ＿ｐｔｒが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【００５８】
次に、図３１のステップＳ３で、事前計算結果データ２４に指定される頂点座標コマンド作成関数を呼び出す。図３２に示す事前計算結果データ２４の例では、頂点座標コマンド作成関数としてgdcMakeVertexCoordDL_2XtoFが指定されているので、この頂点座標コマンド作成関数を呼び出す。次に、図３１のステップＳ４で、事前計算結果データ２４に指定される頂点カラーコマンド作成関数を呼び出す。図３２に示す事前計算結果データ２４の例では、頂点カラーコマンド作成関数としてgdcMakeColorDL_3Xto3Fが指定されているので、この頂点カラーコマンド作成関数を呼び出す。次に、図３１のステップＳ５で、事前計算結果データ２４に指定されるテクスチャ座標コマンド作成関数を呼び出す。図３２に示す事前計算結果データ２４の例では、テクスチャ座標コマンド作成関数としてgdcMakeTextureCoordDL_2Xto2Fが指定されているので、このテクスチャ座標コマンド作成関数を呼び出す。最後にステップＳ６で、図形描画終了コマンドを出力する。これにより、図形描画終了を示すデータを、ＶＲＡＭ１６中の図形データ２２の一連の頂点コマンドの最後に配置する。
【００５９】
図３４は、図３２に示す事前計算結果データ２４の例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。図３１のステップＳ３において、頂点座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図３４に示す各データ値を関数の引数に指定する。
【００６０】
図３５は、頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。図３５に示す各処理は、ＣＰＵ１０により実行される。まずステップＳ１で、頂点カウント値ｃｎｔを１に初期設定する。ステップＳ２で、頂点座標コマンドを作成する。図３２に示す事前計算結果データ２４の例では、ｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒから読み出した固定小数点形式の頂点座標データＸ及びＹを浮動小数点形式に変換する。更に、変換後の頂点座標データＸ及びＹに固定値の頂点コマンド（図２のＧ＿Ｖｅｒｔｅｘコマンド）を付加して、頂点座標コマンド格納先ｖｅｒｔｅｘ＿ｓｅｔ＿ｐｔｒに保存する。ステップＳ３で、現在の頂点座標コマンドの格納アドレスｖｅｒｔｅｘ＿ｓｅｔ＿ｐｔｒに、次の頂点コマンド格納アドレスまでのオフセットｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔを加算して、新たな頂点座標コマンドの格納アドレスを求める。ステップＳ４で、現在の頂点座標データの取得先アドレスｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒに、次の頂点座標データまでのオフセットｖｅｒｔｅｘ＿ｇｅｔ＿ｏｆｆｓｅｔを加算して、新たな頂点座標データの取得先アドレスを求める。ステップＳ５で、頂点カウント値ｃｎｔが描画すべき頂点データ数ｃｏｕｎｔ以上であるか否かを判定する。頂点カウント値ｃｎｔが頂点データ数ｃｏｕｎｔよりも小さい場合には、ステップＳ６で頂点カウント値ｃｎｔを１増加し、ステップＳ２に戻り以降の処理を繰り返す。以上の図３５に示す処理により、図形データ２２の頂点座標データから図形描画データ２０の頂点座標コマンド部分が作成される。
【００６１】
図３６は、頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。頂点座標データの先頭アドレスｖｅｒｔｅｘ＿ｐｔｒから所定個数目の頂点（ｆｉｒｓｔで示す頂点データ番号）の位置がｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒで示される。そのｖｅｒｔｅｘ＿ｇｅｔ＿ｐｔｒを開始点として、ｖｅｒｔｅｘ＿ｇｅｔ＿ｏｆｆｓｅｔ間隔で並ぶ固定小数点形式のデータＸ（fixed X1〜X6）及びＹ（fixed Y1〜Y6）を読み出し、浮動小数点形式のデータＸ（float X1〜X6）及びＹ（float Y1〜Y6）に変換する。変換後の浮動小数点形式のデータＸ及びＹが、ｖｅｒｔｅｘ＿ｓｅｔ＿ｐｔｒを開始点として、ｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔ間隔でＶＲＡＭ１６に格納される。
【００６２】
図３７は、図３２に示す事前計算結果データ２４の例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。図３１のステップＳ４において、頂点カラーコマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図３７に示す各データ値を関数の引数に指定する。
【００６３】
図３８は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。図３８に示す各処理は、ＣＰＵ１０により実行される。まずステップＳ１で、頂点カウント値ｃｎｔを１に初期設定する。ステップＳ２で、頂点カラーコマンドを作成する。図３２に示す事前計算結果データ２４の例では、ｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒから読み出した固定小数点形式の頂点カラーデータＲＧＢを浮動小数点形式に変換する。更に、変換後の頂点カラーデータＲＧＢを、頂点カラーコマンド格納先ｃｏｌｏｒ＿ｓｅｔ＿ｐｔｒに保存する。ステップＳ３で、現在の頂点カラーコマンドの格納アドレスｃｏｌｏｒ＿ｓｅｔ＿ｐｔｒに、次の頂点コマンド格納アドレスまでのオフセットｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔを加算して、新たな頂点カラーコマンドの格納アドレスを求める。ステップＳ４で、現在の頂点カラーデータの取得先アドレスｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒに、次の頂点カラーデータまでのオフセットｃｏｌｏｒ＿ｏｆｆｓｅｔを加算して、新たな頂点カラーデータの取得先アドレスを求める。ステップＳ５で、頂点カウント値ｃｎｔが描画すべき頂点データ数ｃｏｕｎｔ以上であるか否かを判定する。頂点カウント値ｃｎｔが頂点データ数ｃｏｕｎｔよりも小さい場合には、ステップＳ６で頂点カウント値ｃｎｔを１増加し、ステップＳ２に戻り以降の処理を繰り返す。以上の図３８に示す処理により、図形データ２２の頂点カラーデータから図形描画データ２０の頂点カラーコマンド部分が作成される。
【００６４】
図３９は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。頂点カラーデータの先頭アドレスｃｏｌｏｒ＿ｐｔｒから所定個数目（ｆｉｒｓｔで示す頂点データ番号）の頂点の位置がｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒで示される。そのｃｏｌｏｒ＿ｆｉｒｓｔ＿ｐｔｒを開始点として、ｃｏｌｏｒ＿ｏｆｆｓｅｔ間隔で並ぶ固定小数点形式のデータＲ（fixed R1〜R6）、Ｇ（fixed G1〜G6）、Ｂ（fixed B1〜B6）を読み出し、浮動小数点形式のデータＲＧＢに変換する。変換後の浮動小数点形式のデータＲ（float R1〜R6）、Ｇ（float G1〜G6）、Ｂ（float B1〜B6）が、ｃｏｌｏｒ＿ｓｅｔ＿ｐｔｒを開始点として、ｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔ間隔でＶＲＡＭ１６に格納される。
【００６５】
図４０は、図３２に示す事前計算結果データ２４の例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。図３１のステップＳ５において、テクスチャ座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図４０に示す各データ値を関数の引数に指定する。
【００６６】
図４１は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。図４１に示す各処理は、ＣＰＵ１０により実行される。まずステップＳ１で、頂点カウント値ｃｎｔを１に初期設定する。ステップＳ２で、テクスチャ座標コマンドを作成する。図３２に示す事前計算結果データ２４の例では、ｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒから読み出した固定小数点形式のテクスチャ座標データＸ及びＹを浮動小数点形式に変換する。更に、変換後のテクスチャ座標データＸ及びＹを、テクスチャ座標コマンド格納先ｔｅｘｔｕｒｅ＿ｓｅｔ＿ｐｔｒに保存する。ステップＳ３で、現在のテクスチャ座標コマンドの格納アドレスｔｅｘｔｕｒｅ＿ｓｅｔ＿ｐｔｒに、次の頂点コマンド格納アドレスまでのオフセットｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔを加算して、新たなテクスチャ座標コマンドの格納アドレスを求める。ステップＳ４で、現在のテクスチャ座標データの取得先アドレスｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒに、次のテクスチャ座標データまでのオフセットｔｅｘｔｕｒｅ＿ｏｆｆｓｅｔを加算して、新たなテクスチャ座標データの取得先アドレスを求める。ステップＳ５で、頂点カウント値ｃｎｔが描画すべき頂点データ数ｃｏｕｎｔ以上であるか否かを判定する。頂点カウント値ｃｎｔが頂点データ数ｃｏｕｎｔよりも小さい場合には、ステップＳ６で頂点カウント値ｃｎｔを１増加し、ステップＳ２に戻り以降の処理を繰り返す。以上の図４１に示す処理により、図形データ２２のテクスチャ座標データから図形描画データ２０のテクスチャ座標コマンド部分が作成される。
【００６７】
図４２は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。テクスチャ座標データの先頭アドレスｔｅｘｔｕｒｅ＿ｐｔｒから所定個数目の頂点（ｆｉｒｓｔで示す頂点データ番号）の位置がｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒで示される。そのｔｅｘｔｕｒｅ＿ｆｉｒｓｔ＿ｐｔｒを開始点として、ｔｅｘｔｕｒｅ＿ｏｆｆｓｅｔ間隔で並ぶ固定小数点形式のデータＳ（fixed S1〜Ｓ6）及びＴ（fixed T1〜T6）を読み出し、浮動小数点形式のデータＳ（float S1〜S6）及びＴ（float T1〜T6）に変換する。変換後の浮動小数点形式のデータＳ及びＴが、ｔｅｘｔｕｒｅ＿ｓｅｔ＿ｐｔｒを開始点として、ｖｅｒｔｅｘ＿ｓｅｔ＿ｏｆｆｓｅｔ間隔でＶＲＡＭ１６に格納される。なおここでＳ及びＴは、テクスチャ画像の２つの座標を示す。
【００６８】
図４３は、以上の処理によりＶＲＡＭ１６のメモリ空間に作成された図形描画データ２０の構成を示す図である。浮動小数点形式で表現した頂点座標コマンドと、浮動小数点形式で表現した頂点カラーコマンドと、浮動小数点形式で表現したテクスチャ座標コマンドとを含む各頂点に関するデータが、複数の頂点（この例では６個の頂点）について並べられている。また図形描画データ２０の終端には、図形描画終了コマンドが配置されている。
【００６９】
図４４は、従来の図形描画データの作成処理を示すフローチャートである。ステップＳ１で頂点番号を初期化する。ステップＳ２乃至Ｓ５が頂点座標データに関する処理部分であり、頂点座標コマンド格納アドレスの計算、頂点座標データ取得先アドレスの計算、頂点座標データの入出力データ形式の判定、及び頂点座標コマンドの作成が実行される。ステップＳ６乃至Ｓ９が頂点カラーデータに関する処理部分であり、頂点カラーコマンド格納アドレスの計算、頂点カラーデータ取得先アドレスの計算、頂点カラーデータの入出力データ形式の判定、及び頂点カラーコマンドの作成が実行される。ステップＳ１０乃至Ｓ１３がテクスチャ座標データに関する処理部分であり、テクスチャ座標コマンド格納アドレスの計算、テクスチャ座標データ取得先アドレスの計算、テクスチャ座標データの入出力データ形式の判定、及びテクスチャ座標コマンドの作成が実行される。ステップＳ１４において全頂点の処理を終了したか否かを判定する。全頂点の処理が終了していない場合には、ステップＳ１５で次の頂点に移動し、その後ステップＳ２に戻り以降の処理を繰り返す。このように従来の図形描画データの作成処理では、各頂点毎にデータ形式の判定及びアドレス計算処理が実行されるために効率が良くない。
【００７０】
図４５は、図４４に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。ここでＮは、描画対象の頂点の数である。各処理についての処理負荷の値は、整数加算処理の負荷を１とした場合の相対的な値を示している。図４５から分かるように、図４４に示す従来の図形描画データの作成処理においては、描画対象の頂点数Ｎとした場合に、合計で３８Ｎ＋１の処理負荷がＣＰＵ１０にかかることになる。
【００７１】
図４６は、図５のステップＳ２及びＳ３に示す図形描画データの作成処理における処理負荷の値を示す表である。図４６から分かるように、図５に示す本実施例の図形描画データ作成処理においては、描画対象の頂点数Ｎとした場合に、合計で２７Ｎ＋１１７の処理負荷がＣＰＵ１０にかかることになる。従って頂点数Ｎが大きい場合には、本実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約３０％の処理負荷の低減が可能となる。
【００７２】
但し頂点数が少ない場合には、図５のステップＳ２の事前処理にかかる処理負荷のために、本実施例の図形描画データ作成処理よりも従来の図形描画データ作成処理の方が、処理負荷が小さくなることが考えられる。そこで頂点数の大小に応じて、本実施例の図形描画データ作成処理と従来の図形描画データ作成処理とを切り替えることが考えられる。
【００７３】
図４７は、２つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。ステップＳ１で、描画対象の図形を構成する頂点数が閾値以上であるか否かを判定する。頂点数が閾値以上の場合には、ステップＳ２で、図５に示す本実施例の図形描画データ作成処理を実行する。頂点数が閾値よりも小さい場合には、ステップＳ３で、図４４に示す従来の図形描画データの作成処理を実行する。
【００７４】
図４８は、図４７のステップＳ１の判定処理で用いる閾値を設定するフローチャートである。このフローチャートでは、閾値変更関数を呼び出し、閾値となるべき頂点数をその引数に与える。これにより、引数として与えた数に、閾値を設定する。具体的な閾値の値は、ＣＰＵやメモリ等のハードウェアに依存して異なるので、このような閾値変更関数（閾値設定関数）を用いることにより、システム毎に適宜閾値を設定することが好ましい。例えば種々の頂点数の複数のテスト図形データに対して、従来の図形描画データ作成処理と本実施例の図形描画データ作成処理との両方を用いて図形描画データを生成し、それぞれの時間や処理負荷を調べることにより、適切な閾値を知ることができる。
【００７５】
図４９は、図形描画システムの変形例を示す図である。図４９に示す図形描画システムは、ＣＰＵ（Central Processing Unit）１０Ａ、ホストインターフェース１１、図形描画処理装置１２、表示装置１３、データ格納ユニット１４、メインメモリ１５、及びＶＲＡＭ（Video Random Access Memory）１６を含む。図１の図形描画システムと異なり、ＣＰＵ１０Ａは、複数のコア１０ａ、１０ｂ、１０ｃを含む構成となっている。この複数のコア１０ａ、１０ｂ、及び１０ｃにより、頂点座標コマンド作成処理、頂点カラーコマンド作成処理、及びテクスチャ座標コマンド作成処理をそれぞれ並行して実行する。
【００７６】
図５０は、図４９に示すマルチコアＣＰＵを用いた場合の図形描画処理を示すフローチャートである。図５０に示すフローチャートは、図５に示すフローチャートと比較して、ステップＳ３−１乃至３−３の部分が異なる。図５０に示すフローチャートでは、頂点座標コマンドを作成するステップＳ３−１の処理と、頂点カラーコマンドを作成するステップＳ３−２の処理と、テクスチャ座標コマンドを作成するステップＳ３−３の処理とが、複数のコアにより並行して実行される。この構成により、更に処理効率を向上させることが可能となる。
【００７７】
図５１は、図５０のステップＳ２及びＳ３−１乃至３−３に示す図形描画データの作成処理における処理負荷の値を示す表である。図５１から分かるように、図５１に示す実施例の図形描画データ作成処理においては、描画対象の頂点数Ｎとした場合に、合計で９Ｎ＋１１７の処理負荷がＣＰＵ１０Ａにかかることになる。従って頂点数Ｎが大きい場合には、この実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約７５％の処理負荷の低減が可能となる。
【００７８】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００７９】
なお本発明は以下の内容を含むものである。
（付記１）
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第３のリストを生成する描画データ処理方法であって、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
（付記２）
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１のデータ生成処理に対応する第１の関数を呼び出すことにより実行され、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２のデータ生成処理に対応する第２の関数を呼び出すことにより実行されることを特徴とする付記１記載の描画データ処理方法。
（付記３）
前記第１の関数は、第１のオフセットが示す間隔で前記第１のリストから前記第１のデータを前記複数の頂点について読み出す段階を更に含み、前記第２の関数は、第２のオフセットが示す間隔で前記第２のリストから前記第２のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記２記載の描画データ処理方法。
（付記４）
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第１の演算処理ユニットにより実行し、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第２の演算処理ユニットにより実行することを特徴とする付記１記載の描画データ処理方法。
（付記５）
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第３のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第３のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第１のプログラムコードを含むことを特徴とする図形描画システム。
（付記６）
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１のデータ生成処理に対応する第１の関数を呼び出すことにより実行され、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２のデータ生成処理に対応する第２の関数を呼び出すことにより実行されることを特徴とする付記５記載の図形描画システム。
（付記７）
前記第１の関数は、第１のオフセットが示す間隔で前記第１のリストから前記第１のデータを前記複数の頂点について読み出す段階を更に含み、前記第２の関数は、第２のオフセットが示す間隔で前記第２のリストから前記第２のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記６記載の図形描画システム。
（付記８）
前記演算処理ユニットは、第１の演算処理ユニットと第２の演算処理ユニットとを含み、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第１の演算処理ユニットにより実行し、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第２の演算処理ユニットにより実行することを特徴とする付記５記載の図形描画システム。
（付記９）
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第１データ形式と前記第３データ形式とに応じた第３のデータ生成処理を選択し、
前記第３のデータ生成処理を前記第１のリストの前記着目頂点の前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第２データ形式と前記第４データ形式とに応じた第４のデータ生成処理を選択し、
前記第４のデータ生成処理を前記第２のリストの前記着目頂点の前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第２のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第１のプログラムコードと前記第２のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記５記載の図形描画システム。
（付記１０）
各頂点に関する第１データ形式の第１のデータが複数の頂点について並べられた第１のリストと各頂点に関する第２データ形式の第２のデータが前記複数の頂点について並べられた第２のリストとを含む複数のリストが与えられたときに、前記第１データ形式と同一又は異なる第３データ形式で表現した前記第１のデータと前記第２データ形式と同一又は異なる第４データ形式で表現した前記第２のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第３のリストを生成するための図形描画データ作成プログラムであって、
前記第１データ形式と前記第３データ形式とに応じた第１のデータ生成処理を選択し、
前記第２データ形式と前記第４データ形式とに応じた第２のデータ生成処理を選択し、
少なくとも前記第３データ形式と前記第４データ形式とに応じて前記第３のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第１のデータ生成処理を前記第１のリストの前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し、前記生成した第１のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第２のデータ生成処理を前記第２のリストの前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し、前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第１のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
（付記１１）
前記第３データ形式で表現した前記第１のデータを前記複数の頂点について生成し前記生成した第１のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第１の演算処理ユニットにより実行させ、前記第４データ形式で表現した前記第２のデータを前記複数の頂点について生成し前記生成した第２のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第２の演算処理ユニットにより実行させることを特徴とする付記１０記載の図形描画データ作成プログラム。
（付記１２）
前記複数の頂点のうちの着目頂点について、前記第１データ形式と前記第３データ形式とに応じた第３のデータ生成処理を選択し、
前記第３のデータ生成処理を前記第１のリストの前記着目頂点の前記第１のデータに対して実行することにより、前記第３データ形式で表現した前記第１のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第２データ形式と前記第４データ形式とに応じた第４のデータ生成処理を選択し、
前記第４のデータ生成処理を前記第２のリストの前記着目頂点の前記第２のデータに対して実行することにより、前記第４データ形式で表現した前記第２のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第２のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第１のプログラムコードと前記第２のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記１０記載の図形描画データ作成プログラム。
【符号の説明】
【００８０】
１０  ＣＰＵ
１１  ホストインターフェース
１２  図形描画処理装置
１３  表示装置
１４  データ格納ユニット
１５  メインメモリ
１６  ＶＲＡＭ
【図１】
2010277304.tif 000003
【図２】
2010277304.tif 000004
【図３Ａ】
2010277304.tif 000005
【図３Ｂ】
2010277304.tif 000006
【図３Ｃ】
2010277304.tif 000007
【図４】
2010277304.tif 000008
【図５】
2010277304.tif 000009
【図６】
2010277304.tif 000010
【図７】
2010277304.tif 000011
【図８Ａ】
2010277304.tif 000012
【図８Ｂ】
2010277304.tif 000013
【図９】
2010277304.tif 000014
【図１０】
2010277304.tif 000015
【図１１】
2010277304.tif 000016
【図１２】
2010277304.tif 000017
【図１３】
2010277304.tif 000018
【図１４】
2010277304.tif 000019
【図１５】
2010277304.tif 000020
【図１６】
2010277304.tif 000021
【図１７】
2010277304.tif 000022
【図１８】
2010277304.tif 000023
【図１９】
2010277304.tif 000024
【図２０】
2010277304.tif 000025
【図２１】
2010277304.tif 000026
【図２２】
2010277304.tif 000027
【図２３】
2010277304.tif 000028
【図２４】
2010277304.tif 000029
【図２５】
2010277304.tif 000030
【図２６】
2010277304.tif 000031
【図２７】
2010277304.tif 000032
【図２８】
2010277304.tif 000033
【図２９】
2010277304.tif 000034
【図３０】
2010277304.tif 000035
【図３１】
2010277304.tif 000036
【図３２】
2010277304.tif 000037
【図３３】
2010277304.tif 000038
【図３４】
2010277304.tif 000039
【図３５】
2010277304.tif 000040
【図３６】
2010277304.tif 000041
【図３７】
2010277304.tif 000042
【図３８】
2010277304.tif 000043
【図３９】
2010277304.tif 000044
【図４０】
2010277304.tif 000045
【図４１】
2010277304.tif 000046
【図４２】
2010277304.tif 000047
【図４３】
2010277304.tif 000048
【図４４】
2010277304.tif 000049
【図４５】
2010277304.tif 000050
【図４６】
2010277304.tif 000051
【図４７】
2010277304.tif 000052
【図４８】
2010277304.tif 000053
【図４９】
2010277304.tif 000054
【図５０】
2010277304.tif 000055
【図５１】
2010277304.tif 000056