描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
【課題】効率的な描画データ処理方法を提供する。
【解決手段】描画データ処理方法は、第1のデータについて入出力データ形式に応じた第1のデータ生成処理を選択し、第2のデータについて入出力データ形式に応じた第2のデータ生成処理を選択し、少なくとも第1のデータ及び第2のデータの出力データ形式に応じて各頂点間のメモリアドレス距離を示すオフセットを計算し、第1のデータ生成処理を第1のデータに対して実行することにより、出力形式の第1のデータを複数の頂点について生成し、生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、第2のデータ生成処理を第2のデータに対して実行することにより、出力形式の第2のデータを複数の頂点について生成し、生成した第2のデータを前記オフセットが示す間隔でメモリに書き込む各段階を含むことを特徴とする。
【解決手段】描画データ処理方法は、第1のデータについて入出力データ形式に応じた第1のデータ生成処理を選択し、第2のデータについて入出力データ形式に応じた第2のデータ生成処理を選択し、少なくとも第1のデータ及び第2のデータの出力データ形式に応じて各頂点間のメモリアドレス距離を示すオフセットを計算し、第1のデータ生成処理を第1のデータに対して実行することにより、出力形式の第1のデータを複数の頂点について生成し、生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、第2のデータ生成処理を第2のデータに対して実行することにより、出力形式の第2のデータを複数の頂点について生成し、生成した第2のデータを前記オフセットが示す間隔でメモリに書き込む各段階を含むことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に画像処理に関し、詳しくは図形データに基づいて図形描画データを生成する描画データ処理に関する。
【背景技術】
【0002】
コンピュータグラフィクスでは、図形描画装置であるグラフィクス・エンジンが、図形描画データに基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより表示画像データを生成する。2次元グラフィクスの場合であれば元の図形描画データは2次元のデータであり、3次元グラフィクスの場合であれば元の図形描画データは3次元のデータである。3次元グラフィクスの場合、グラフィクス・エンジンは、3次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき2次元画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データを生成する。次にディスプレイ・エンジンが、メモリに格納された2次元画像データを描画データとして読出し、読み出した描画データをディスプレイ装置に表示する。
【0003】
グラフィクス・エンジンは、ジオメトリ処理部とラスタ処理部とを含む。ジオメトリ処理部は、メモリから読み込んだ立体オブジェクトの3次元データに基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理部では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理部は、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの2次元画像を構成する複数の三角形のデータを計算すると、この複数の三角形のデータをラスタ処理部に供給する。なお元の図形描画データが2次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データを直接にラスタ処理部に供給してよい。
【0004】
ラスタ処理部は、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズ処理により、2次元の描画データを生成する。ラスタライズ処理では、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばRGB各色の輝度、奥行き方向の距離を表すZ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【0005】
描画する対象となる図形のデータは、三角形の各頂点の座標を示す頂点座標データや各頂点の色を示す頂点カラーデータ等を含む。通常、図形データは、その図形データを生成するアプリケーションに応じたデータ形式となっている。例えば、あるアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して固定小数点データ形式を用いて、図形データを生成するかもしれない。また別のアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して浮動小数点データ形式を用いて、図形データを生成するかもしれない。
【0006】
一方、グラフィクス・エンジンである描画処理装置に入力データとして供給する図形描画データについては、頂点座標データ及び頂点カラーデータが所定のデータ形式で表現される必要がある。例えば、ある描画処理装置の場合、図形描画データの頂点座標データ及び頂点カラーデータとして、両方ともに浮動小数点データ形式が要求されるかもしれない。この場合、アプリケーションソフトウェアが生成した図形データの頂点座標データ及び頂点カラーデータが固定小数点データ形式であるなら、データ形式の変換を行なうことが必要となる。このようなデータ形式の変換により、アプリケーションに応じた図形データから描画処理装置に適した図形描画データを生成することができる。
【0007】
またデータ形式の変換だけではなく、アプリケーションに応じた図形データのデータ配置から描画処理装置に適した図形描画データのデータ配置へとデータ配置の変換を行なう必要がある。通常、アプリケーションで生成する図形データにおいては、複数の頂点について頂点座標データを並べた1つのデータリストと、複数の頂点について頂点カラーデータを並べた1つのデータリストとが、それぞれ別個のデータリストとなっている。一方、図形処理装置では、頂点座標データや頂点カラーデータを各頂点毎に1つに纏め、そのように纏めたデータを複数の頂点について並べた1つのデータリストとして、図形描画データが提供される必要がある。
【0008】
上記のようなデータ形式の変換及びデータ配置の変換を行なう際には、従来、各頂点毎にデータ形式を判定し、判定結果に応じてデータ形式の変換を行ない、変換後の頂点座標データや頂点カラーデータを各頂点毎に適切に配置してメモリに書き込んでいる。即ち、第1の頂点について頂点座標データの形式を判定し、判定結果に応じて頂点座標データのデータ形式を変換し、変換後の頂点座標データを第1の頂点についてメモリに書き込む。次に、第1の頂点について頂点カラーデータの形式を判定し、判定結果に応じて頂点カラーデータのデータ形式を変換し、変換後の頂点カラーデータを第1の頂点についてメモリに書き込む。与えられる図形データには、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等も含まれる。そこで、第1の頂点について、頂点座標データ及び頂点カラーデータに続き、テクスチャ座標データ等を含む全ての変換後の図形描画データをメモリに書き込む。次に、第2の頂点について同様の処理を実行する。第2の頂点について全ての変換後の図形描画データをメモリに書き込むと、次に、第3の頂点について同様の処理を実行する。以降、複数の頂点の残りの全てについて、同様に処理を実行する。
【0009】
一般に、アプリケーションにより生成される図形データの形式は、頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について複数種類が存在し、それらのデータ形式の組み合わせの数は膨大な数(例えば100以上)となる。そのような膨大な数の組み合わせの各々について別個にデータ変換用のプログラムコードを用意することは、コードサイズが膨大となりメンテナンス性の観点から好ましくない。そのため従来は、上記のように頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について、各頂点毎にデータ形式を判定し、判定に応じて適切なデータ変換を実行していた。
【0010】
しかし上記のように各頂点毎にデータ形式を判定していたのでは、データ形式の判定処理の実行回数が、図形データに含まれる頂点数に比例して増加してしまう。その結果、頂点数が多い図形データの場合には、効率的なデータ変換処理を実行できないという問題が生じる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開平9−22456号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
以上を鑑みると、効率的に図形データを図形描画データに変換するデータ処理装置及びデータ処理方法が望まれる。
【課題を解決するための手段】
【0013】
本発明の一観点によれば、各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行する描画データ処理方法が提供される。
【発明の効果】
【0014】
開示の描画データ処理方法によれば、データ形式の判定に基づく適切なデータ生成処理の選択及び図形描画データ格納時のオフセットの計算を事前に行なっておく。その事前計算の結果を用いて、データ形式の変換及び変換後のデータ書き込みを、第1のリストの第1のデータの複数の頂点に対して一括的に実行し、それとは別個に第2のリストの第2のデータの複数の頂点に対して一括的に実行する。このように、データ形式の判定に基づいた適切なデータ生成処理の選択を各頂点毎に実行することなく、事前に実行しておくことにより、効率的な図形描画データ作成処理を実現する効果を奏する。
【図面の簡単な説明】
【0015】
【図1】図形描画システムの構成の一例を示す図である。
【図2】図形データの頂点座標データを図形描画データの頂点座標データに変換する関数の一例を示す表である。
【図3A】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図3B】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図3C】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図4】図形データのテクスチャ座標データを図形描画データのテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。
【図5】図1に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。
【図6】図5のステップS2に示す事前計算処理の詳細を示すフローチャートである。
【図7】図形描画制御データの一例を示す表である。
【図8A】図形描画制御データの各データの意味を示す表である。
【図8B】図形描画制御データの各データの意味を示す表である。
【図9】頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。
【図10】選択された頂点座標コマンド作成関数を示すデータの図である。
【図11】図形描画制御データのvertex_strideの意味を示す表である。
【図12】次の頂点座標データまでのオフセットを示すデータの例を示す図である。
【図13】頂点座標データの取得先アドレスを示すデータの例を示す図である。
【図14】頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。
【図15】選択された頂点カラーコマンド作成関数を示すデータの図である。
【図16】図形描画制御データのcolor_strideの意味を示す表である。
【図17】次の頂点カラーデータまでのオフセットを示すデータの例を示す図である。
【図18】頂点カラーデータの取得先アドレスを示すデータの例を示す図である。
【図19】テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。
【図20】選択されたテクスチャ座標コマンド作成関数を示すデータの図である。
【図21】図形描画制御データのtexture_strideの意味を示す表である。
【図22】次のテクスチャ座標データまでのオフセットを示すデータの例を示す図である。
【図23】テクスチャ座標データの取得先アドレスを示すデータの例を示す図である。
【図24】頂点座標コマンドの格納アドレスを示すデータの例を示す図である。
【図25】各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。
【図26】頂点カラーコマンドの格納アドレスを示すデータの例を示す図である。
【図27】各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。
【図28】テクスチャ座標コマンドの格納アドレスを示すデータの例を示す図である。
【図29】各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。
【図30】次の頂点コマンド格納アドレスまでのオフセットを示すデータの例を示す図である。
【図31】図5のステップS3に示す図形描画データ作成処理の詳細を示すフローチャートである。
【図32】図7に示す図形描画制御データの例から求めた事前計算結果データを示す図である。
【図33】VRAMのメモリ空間において、DL_ptrが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【図34】図32に示す事前計算結果データの例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。
【図35】頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。
【図36】頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。
【図37】図32に示す事前計算結果データの例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。
【図38】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。
【図39】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。
【図40】図32に示す事前計算結果データの例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。
【図41】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。
【図42】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。
【図43】VRAMのメモリ空間に作成された図形描画データの構成を示す図である。
【図44】従来の図形描画データの作成処理を示すフローチャートである。
【図45】図44に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。
【図46】図5のステップS2及びS3に示す図形描画データの作成処理における処理負荷の値を示す表である。
【図47】2つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。
【図48】図47のステップS1の判定処理で用いる閾値を設定するフローチャートである。
【図49】図形描画システムの変形例を示す図である。
【図50】図49に示すマルチコアCPUを用いた場合の図形描画処理を示すフローチャートである。
【図51】図50のステップS2及びS3−1乃至3−3に示す図形描画データの作成処理における処理負荷の値を示す表である。
【発明を実施するための形態】
【0016】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【0017】
図1は、図形描画システムの構成の一例を示す図である。図1に示す図形描画システムは、CPU(Central Processing Unit)10、ホストインターフェース11、図形描画処理装置12、表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM(Video Random Access Memory)16を含む。CPU10は、ホストインターフェース11を介して図形描画処理装置12に結合される。互いに結合されたCPU10と図形描画処理装置12とで、1つの描画処理システムチップ18を構成してよい。この描画処理システムチップ18に対する表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM16の結合は、模式的或いは機能的な結合を示すものであり、実際の信号線の結合を示すものではない。例えばメインメモリ15とVRAM16とは、別個のメモリデバイスである必要はなく、描画処理システムチップ18に接続される1つの連続したメモリ空間を構成する単一のメモリデバイスであってよい。データ格納ユニット14は、ハードディスクドライブ、DVD、CD−ROM等の大容量のデータ格納装置であってよい。表示装置13は、CRTや液晶表示装置等の表示機器であり、VRAM16に描画された2次元画像データ(ラスタデータ)を表示する。
【0018】
図形描画処理装置12は、VRAM16に格納された図形描画データ20に基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データ(ラスタデータ)21を生成する。2次元グラフィクスの場合であれば元の図形描画データ20は2次元のデータであり、3次元グラフィクスの場合であれば元の図形描画データ20は3次元のデータである。3次元グラフィクスの場合、図形描画処理装置12は、3次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき2次元画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データ21を生成する。次に、図形描画処理装置12に内蔵のディスプレイ・エンジンが、VRAM16に格納された2次元画像データ21を描画データとして読出し、読み出した描画データを表示装置13に表示する。
【0019】
図形描画処理装置12は、ジオメトリ処理とラスタ処理とを実行する。図形描画処理装置12は、VRAM16から読み込んだ立体オブジェクトの3次元データ(図形描画データ20)に基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理においては、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの2次元画像を構成する複数の三角形のデータを計算する。この複数の三角形のデータは、その後、ラスタ処理に供される。なお元の図形描画データ20が2次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データ20を直接にラスタ処理の対象とすればよい。
【0020】
ラスタ処理においては、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズにより、2次元の描画データ(2次元画像データ21)を生成する。ラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばRGB各色の輝度、奥行き方向の距離を表すZ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【0021】
図形描画データ20は、データ格納ユニット14に格納される図形データ22及び図形描画制御データ23に基づいて、CPU10が生成する。図形データ22は、三角形の各頂点の座標を示す頂点座標データ、各頂点の色を示す頂点カラーデータ、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等を含む。図形データ22は、当該図形データ22を生成するアプリケーションソフトウェアに応じたデータ形式となっている。
【0022】
図形データ22は、各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストである。ここで第1のデータは例えば頂点座標データであり、第2のデータは例えば頂点カラーデータである。CPU10は、第1データ形式と同一又は異なる第3データ形式で表現した第1のデータと第2データ形式と同一又は異なる第4データ形式で表現した第2のデータとを含む各頂点に関するデータを複数の頂点について並べ、図形描画データ20を生成する。
【0023】
まずCPU10は、データ格納ユニット14から図形データ22及び図形描画制御データ23を読み出して、メインメモリ15に格納する。メインメモリ15中の図形データ22と図形描画制御データ23とに基づいて、CPU10は、まず最初に事前計算結果データ24を生成する。具体的には、CPU10は、第1データ形式と第3データ形式とに応じた第1のデータ生成処理を選択する。更にCPU10は、第2データ形式と第4データ形式とに応じた第2のデータ生成処理を選択する。また更にCPU10は、少なくとも第3データ形式と第4データ形式とに応じて図形描画データ20における各頂点間のメモリアドレス距離を示すオフセットを計算する。以上の処理を、図形描画データ20を生成するための事前計算として最初に実行し、事前計算結果データ24を生成する。事前計算結果データ24は、少なくとも前記第1のデータ生成処理及び第2のデータ生成処理を特定するデータとともに、前記オフセットを示すデータを含む。
【0024】
上記のようにして計算した事前計算結果データ24に基づいて、CPU10は、図形描画データ20をVRAM16に書き込む。まずCPU10は、第1のデータ生成処理を第1のリストの第1のデータに対して実行することにより、第3データ形式で表現した第1のデータを複数の頂点について生成し、こうして生成した第1のデータを前記オフセットが示す間隔でVRAM16に書き込む。更にCPU10は、第2のデータ生成処理を第2のリストの第2のデータに対して実行することにより、第4データ形式で表現した第2のデータを複数の頂点について生成し、こうして生成した第2のデータを前記オフセットが示す間隔でVRAM16に書き込む。このようにしてデータ形式変換後の第1のデータ(例えば頂点座標データ)とデータ形式変換後の第2のデータ(例えば頂点カラーデータ)とを、所定のオフセット間隔で各頂点毎にVRAM16に書き込んで、図形描画データ20を生成することができる。図形データ22に含まれる他のデータ、例えばテクスチャ座標データ等についても、同様にして、データ形式を変換してから所定のオフセット間隔でVRAM16に書き込めばよい。
【0025】
第1のデータ生成処理により第3データ形式で表現した第1のデータを複数の頂点について生成してVRAM16に前記オフセットが示す間隔で書き込む段階(便宜上、第1段階と呼ぶ)は、複数の頂点について一括的に実行されてよい。また第2のデータ生成処理により第4データ形式で表現した第2のデータを複数の頂点について生成してVRAM16に前記オフセットが示す間隔で書き込む段階(便宜上、第2段階と呼ぶ)も、複数の頂点について一括的に実行されてよい。また上記第1段階と第2段階とは、互いに別個に実行されてよい。即ち、第1段階と第2段階との何れか一方を先に実行してから、残りの一方を実行してよいし、或いは第1段階と第2段階とを独立して並行的に実行してもよい。このように第1及び第2のデータ生成処理を事前に選択しておき、その後、第1のデータ生成処理を用いた第1段階と第2のデータ生成処理を用いた第2段階とをそれぞれ複数の頂点について一括的に実行することにより、効率的な処理を実現することができる。
【0026】
また第3データ形式で表現した第1のデータを複数の頂点について生成し、こうして生成した第1のデータを前記オフセットが示す間隔でVRAM16に書き込む段階は、第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行してよい。また第4データ形式で表現した第2のデータを複数の頂点について生成し、こうして生成した第2のデータを前記オフセットが示す間隔でVRAM16に書き込む段階は、第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行してよい。
【0027】
図2は、図形データ22の頂点座標データを図形描画データ20の頂点座標データに変換する関数の一例を示す表である。図形描画データ20の頂点座標データは、図形描画処理装置12に対して描画対象の頂点座標を指示するデータであり、頂点座標コマンドと呼ばれる。これに対応して、図形データ22の頂点座標データを図形描画データ20の頂点座標データ(即ち頂点座標コマンド)に変換する関数を、頂点座標コマンド作成関数と呼ぶ。図2に示す例では、頂点座標コマンド作成関数の名称をgdcMakeVertexCoordDL_**とし、"**"で示す関数のサフィックス部分に"2XtoI"や"2XtoF"等を指定することにより、関数によるデータ変換の形式を指定している。図2に示す例において、"2XtoI"は、各1ワード(4バイト)の固定小数点形式(fixed)のX座標値とY座標値とが入力データとして与えられ、各short形式(2バイト)の整数値のX座標値とY座標値とを出力データとして生成する関数を示す。また"2XtoF"は、各1ワード(4バイト)の固定小数点形式(fixed)のX座標値とY座標値とが入力データとして与えられ、各1ワードの浮動小数点形式(float)のX座標値とY座標値とを出力データとして生成する関数を示す。また例えば、"2FtoX"は、各1ワード(4バイト)の浮動小数点形式(float)のX座標値とY座標値とが入力データとして与えられ、各1ワードの固定小数点形式(fixed)のX座標値とY座標値とを出力データとして生成する関数を示す。また"3Word"は、各1ワードのX座標値とY座標値とが入力データとして与えられ、各1ワードのG_VertexコマンドとX座標値とY座標値とを合計3ワードの出力データとして生成する関数を示す。なおここでG_Vertexコマンドは、1ワードの固定のビットパターンであり、その固定のビットパターンに続いて1つの頂点に対する各種頂点データが格納されていることを示すために用いられる。図形描画処理装置12は、あるG_Vertexコマンドから次のG_Vertexコマンドまでの間に格納されているデータを、1つの頂点に対する各種頂点データとして認識する。またget_ptrは図形データ22の頂点座標データの取得先アドレスを示し、set_ptrは図形描画データ20の頂点座標コマンドの格納先アドレスを示す。
【0028】
図3A乃至3Cは、図形データ22の頂点カラーデータを図形描画データ20の頂点カラーデータに変換する関数の一例を示す表である。図形データ22の頂点カラーデータを図形描画データ20の頂点カラーデータ(即ち頂点カラーコマンド)に変換する関数を、頂点カラーコマンド作成関数と呼ぶ。図3A乃至3Cに示す例では、頂点カラーコマンド作成関数の名称をgdcMakeColorDL_**とし、"**"で示す関数のサフィックス部分に"3Fto3F"や"3Xto3F"等を指定することにより、関数によるデータ変換の形式を指定している。例えば図3Aにおいて、"3Fto3F"は、各1ワード(4バイト)の浮動小数点形式(float)のRGBカラー値が入力データとして与えられ、各1ワードの浮動小数点形式(float)のRGBカラー値を出力データとして生成する関数を示す。また例えば図3Bにおいて、"3XtoARGB8"では、各1ワード(4バイト)の固定小数点形式(fixed)のRGBカラー値と8ビットの整数形式(int)のアルファ値Aとが入力データとして与えられる。この関数は、各1バイトの整数形式(int)のアルファ値AとRGBカラー値とを出力データとして生成する。なおalpha_ptrは、図形データ22のアルファ値(アルファ係数)のデータの取得先アドレスを示す。またcolorは、カラー配列が無効な場合の固定カラー値である。
【0029】
図4は、図形データ22のテクスチャ座標データを図形描画データ20のテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。図形データ22のテクスチャ座標データを図形描画データ20のテクスチャ座標データ(即ちテクスチャ座標コマンド)に変換する関数を、テクスチャ座標コマンド作成関数と呼ぶ。図4に示す例では、テクスチャ座標コマンド作成関数の名称をgdcMakeTextureCoordDL_**とし、"**"で示す関数のサフィックス部分に"2Xto2F"や"2Fto2X"等を指定することにより、関数によるデータ変換の形式を指定している。具体例の詳細は、図2や図3A乃至3Cに示す例と同様であり、その説明を省略する。
【0030】
図5は、図1に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。まずステップS1において、CPU10が、データ格納ユニット14から図形データ22と図形描画制御データ23とをメインメモリ15にロードする。ステップS2において、CPU10は、メインメモリ15に格納された図形データ22と図形描画制御データ23とに基づいて、頂点コマンド作成に最適な作成関数を選択する。即ち、例えば図2乃至図4に示す頂点コマンド作成関数のうちで適切なものを選択する。また更にCPU10は、メインメモリ15に格納された図形データ22と図形描画制御データ23とに基づいて、選択した頂点コマンド作成関数に入力するアドレス値やオフセット値等のパラメータを計算する。こうして選択した頂点コマンド作成関数を示すデータ及び計算した各種パラメータは、事前計算結果データ24としてメインメモリ15に格納される。なお事前計算結果データ24は、図形描画制御データ23とは別個のデータとして格納及び管理してもよいし、図形描画制御データ23の一部として格納及び管理してもよい。次にステップS3において、CPU10は、図形描画制御データ23及び事前計算結果データ24に基づいて、選択した頂点コマンド作成関数により図形描画データ20を作成し、VRAM16に格納する。以上で、図形描画データ20を作成する処理が終了する。
【0031】
CPU10による図形描画データ20の作成処理は、CPU10が所定のプログラムを実行することにより実現される。このプログラムは、データ格納ユニット14に格納されており、実行時にメインメモリ15にロードされる。メインメモリ15は更に、プログラム実行時のワークメモリとして機能する。また各種頂点コマンド作成関数は、ライブラリ関数等として、データ格納ユニット14に予め格納されている。CPU10は、選択した頂点コマンド作成関数をデータ格納ユニット14からメインメモリ15にロードして実行する。
【0032】
次に図5のステップS4で、図形描画処理装置12が、図形描画データ20に基づいて図形をラスタデータとして描画することにより、2次元画像データ21を生成してVRAM16に格納する。即ち、図形描画処理装置12は、オブジェクトの3次元データ(図形描画データ20)に基づいてオブジェクトの拡大及び回転等のジオメトリ処理を行い、所望の視点から見たオブジェクトの2次元画像を構成する複数の2次元の三角形のデータを計算する。なお元の図形描画データ20が2次元のデータである場合、ジオメトリ処理を実行する必要はない。その後、図形描画処理装置12は、複数の2次元の三角形のデータに基づいて、オブジェクトを構成する各面の各画素を塗りつぶすラスタ処理(ラスタライズ)を実行し、2次元の描画データ(2次元画像データ21)を生成する。このラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求め、三角形内部を塗りつぶす。例えば図1に示されるように、2つの三角形26A及び26Bを描画する場合が考えられる。この場合、図形描画データ20の頂点データから三角形26Aの3つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形26Aの内部の各画素の画像パラメータ(輝度、色、テクスチャ等)を求め、三角形26Aを描画する。同様にして、図形描画データ20の頂点データから三角形26Bの3つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形26Bの内部の各画素の画像パラメータ(輝度、色、テクスチャ等)を求め、三角形26Bを描画する。また奥行き方向の距離を表すZ値の比較により、三角形26Bが三角形26Aの背後に隠れるような前後関係を判断して描画することができる。
【0033】
次にステップS5で、図形描画処理装置12の描画エンジンが、VRAM16の2次元画像データ21を表示装置13に転送し、表示装置13の画面に描画データを表示する。これにより、例えば図1に示すように、2つの三角形26A及び26Bが表示装置13の画面に表示される。
【0034】
図6は、図5のステップS2に示す事前計算処理の詳細を示すフローチャートである。図6に示す各ステップは、図1のCPU10により実行される。まずステップS1において、頂点座標データの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれる頂点座標データの入出力データ形式を示すデータを参照することにより行なわれる。
【0035】
図7は、図形描画制御データ23の一例を示す表である。図7に示すように、図形描画制御データ23は、固有のデータ名を有しそれぞれ特定の意味を有する各データに対して値が定義されており、この値により、描画対象のオブジェクトに関する描画条件を指定してある。図形描画制御データ23の各データの意味については、図8A及び図8Bに示す表に示されている。なお図8Bにおいて、データ名vertex_func以降のデータは、図6の事前計算により求められる事前計算結果データ24に対応する部分である。前述のように、事前計算結果データ24は、図形描画制御データ23の一部として管理されてよい。
【0036】
図7に示す図形描画制御データ23の例において、データ名vertex_formatのデータが示す頂点座標データの入力形式は、GDC_TYPE_VTX2Xである。即ち、図6のステップS1において、頂点座標データの入力データ形式を判定すると、入力データ形式はGDC_TYPE_VTX2X(固定小数点形式)であることが分かる。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOATである。即ち、図6のステップS1において、頂点コマンドの出力データ形式を判定すると、出力データ形式は浮動小数点形式であることが分かる。
【0037】
次に図6のステップS2で、最適な頂点座標コマンド作成関数を選択する。図9は、頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。上記のように図7に示す図形描画制御データ23の例では、頂点座標データの入力形式はGDC_TYPE_VTX2Xであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図9からこの組み合わせに対する適切な頂点座標コマンド作成関数を選択すると、gdcMakeVertexCoordDL_2XtoFが選択される。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_funcのデータ値には、gdcMakeVertexCoordDL_2XtoFが格納される。この様子が図10に示される。
【0038】
次に図6のステップS3で、次の頂点座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ23のvertex_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、vertex_strideの値は0となっている。この値の意味は、図11に示されている。図11に示されるように、図形描画制御データ23のvertex_strideの値が0となっているときは、頂点座標データの入力形式に依存して次の頂点座標データまでのオフセットの値が決まる。また図形描画制御データ23のvertex_strideの値が0以外となっているときは、頂点座標データの入力形式に関わらず、そのvertex_strideの値が次の頂点座標データまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、vertex_strideの値は0であり、また頂点座標データの入力形式はGDC_TYPE_VTX2Xであるので、次の頂点座標データまでのオフセットは2×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_get_offsetのデータ値には8が格納される。この様子が図12に示される。
【0039】
次に図6のステップS4で、頂点座標データの取得先アドレスの計算を行なう。頂点座標データの取得先アドレスvertex_get_ptrは、以下の式により計算することができる。
【0040】
vertex_get_ptr = vertex_ptr + (vertex_get_offset × first)
ここで、vertex_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またvertex_get_offsetは上記のステップS3で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
vertex_get_ptr = 0x00A00000 + (8 × 16) = 0x00A00080
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_get_ptrのデータ値には0x00A00080が格納される。この様子が図13に示される。
【0041】
更に図6のステップS5において、頂点カラーデータの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれる頂点カラーデータの入出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名color_formatのデータが示す頂点カラーデータの入力形式は、GDC_TYPE_RGB3X(固定小数点形式)である。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0042】
次に図6のステップS6で、最適な頂点カラーコマンド作成関数を選択する。図14は、頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。なお図14に示されるように、カラー配列の有効又は無効を示すカラー配列フラグcolor_flag及びアルファブレンディングの有効又は無効を示すα係数フラグalpha_flagに応じて適切な頂点カラーコマンド作成関数が異なる。上記のように図7に示す図形描画制御データ23の例では、頂点カラーデータの入力形式はGDC_TYPE_RGB3Xであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図14からこの組み合わせに対する適切な頂点カラーコマンド作成関数を選択すると、gdcMakeColorDL_3Xto3Fが選択される。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_funcのデータ値には、gdcMakeColorDL_3Xto3Fが格納される。この様子が図15に示される。
【0043】
次に図6のステップS7で、次の頂点カラーデータまでのオフセットを計算する。このオフセットは、図形描画制御データ23のcolor_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、color_strideの値は0となっている。この値の意味は、図16に示されている。図16に示されるように、図形描画制御データ23のcolor_strideの値が0となっているときは、頂点カラーデータの入力形式に依存して次の頂点カラーデータまでのオフセットの値が決まる。また図形描画制御データ23のcolor_strideの値が0以外となっているときは、頂点カラーデータの入力形式に関わらず、そのcolor_strideの値が次の頂点カラーデータまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、color_strideの値は0であり、また頂点カラーデータの入力形式はGDC_TYPE_RGB3Xであるので、次の頂点カラーデータまでのオフセットは3×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_offsetのデータ値には12が格納される。この様子が図17に示される。
【0044】
次に図6のステップS8で、頂点カラーデータの取得先アドレスの計算を行なう。頂点カラーデータの取得先アドレスcolor_first_ptrは、以下の式により計算することができる。
【0045】
color_first_ptr = color_ptr + (color_offset × first)
ここで、color_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またcolor_offsetは上記のステップS7で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
color_first_ptr = 0x00B00000 + (12 × 16) = 0x00B000C0
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_first_ptrのデータ値には0x00B000C0が格納される。この様子が図18に示される。
【0046】
更に図6のステップS9において、テクスチャ座標データの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれるテクスチャ座標データの入出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名texture_formatのデータが示すテクスチャ座標データの入力形式は、GDC_TYPE_TEX2XN(固定小数点形式)である。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0047】
次に図6のステップS10で、最適なテクスチャ座標コマンド作成関数を選択する。図19は、テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。上記のように図7に示す図形描画制御データ23の例では、テクスチャ座標データの入力形式はGDC_TYPE_TEX2XNであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図19からこの組み合わせに対する適切なテクスチャ座標コマンド作成関数を選択すると、gdcMakeTextureCoordDL_2Xto2Fが選択される。従って、事前計算結果データ24又は図形描画制御データ23の一部において、データ名texture_funcのデータ値には、gdcMakeTextureCoordDL_2Xto2Fが格納される。この様子が図20に示される。
【0048】
次に図6のステップS11で、次のテクスチャ座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ23のtexture_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、texture_strideの値は0となっている。この値の意味は、図21に示されている。図21に示されるように、図形描画制御データ23のtexture_strideの値が0となっているときは、テクスチャ座標データの入力形式に依存して次のテクスチャ座標データまでのオフセットの値が決まる。また図形描画制御データ23のtexture_strideの値が0以外となっているときは、テクスチャ座標データの入力形式に関わらず、そのtexture_strideの値が次のテクスチャ座標データまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、texture_strideの値は0であり、またテクスチャ座標データの入力形式はGDC_TYPE_TEX2XNであるので、次のテクスチャ座標データまでのオフセットは2×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_offsetのデータ値には8が格納される。この様子が図22に示される。
【0049】
次に図6のステップS12で、テクスチャ座標データの取得先アドレスの計算を行なう。テクスチャ座標データの取得先アドレスtexture_first_ptrは、以下の式により計算することができる。
【0050】
texture_first_ptr = texture_ptr + (texture_offset × first)
ここで、texture_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またtexture_offsetは上記のステップS11で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
texture_first_ptr = 0x00C00000 + (8 × 16) = 0x00C00080
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_first_ptrのデータ値には0x00C00080が格納される。この様子が図23に示される。
【0051】
更に図6のステップS13で、頂点コマンドの出力形式を判定する。この判定は、図形描画制御データ23に含まれる頂点コマンドの出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0052】
次に図6のステップS14で、最初の頂点座標コマンドの格納アドレスを計算する。最初の頂点座標コマンドの格納アドレスvertex_set_ptrは、描画領域設定(4ワード)及び図形描画開始コマンド(1ワード)のサイズ分を、描画コマンド格納領域の先頭アドレスDL_ptrに加算した位置となる。但し図形描画制御データのtexture_flagがGDC_TRUEの場合は、テクスチャ画像アドレス、幅、高さの設定コマンドを出力する必要があるので、それらのコマンドのサイズ分(6ワード)のオフセットも加算する。図7に示す図形描画制御データ23の例の場合、
vertex_set_ptr = 0x44000000 + ((4 + 1 + 6) × 4) = 0x4400002C
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_set_ptrのデータ値には0x4400002Cが格納される。この様子が図24に示される。
【0053】
次に図6のステップS15で、最初の頂点カラーコマンドの格納アドレスを計算する。この最初の頂点カラーコマンドの格納アドレスcolor_set_ptrは、上記のステップS14で求めた頂点座標コマンドの格納アドレスに、ステップS13で求めた頂点コマンドの出力データ形式に応じた頂点座標コマンドサイズを加算した値となる。図25は、各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、出力データ形式はGDC_DL_FORMAT_FLOAT(浮動小数点形式)であり、頂点座標コマンド作成関数は2XtoFである。従って、頂点座標コマンドサイズは3ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
color_set_ptr = 0x4400002C + (3 × 4) = 0x44000038
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_set_ptrのデータ値には0x44000038が格納される。この様子が図26に示される。
【0054】
次に図6のステップS16で、最初のテクスチャ座標コマンドの格納アドレスを計算する。この最初のテクスチャ座標コマンドの格納アドレスtexture_set_ptrは、上記のステップS15で求めた頂点カラーコマンドの格納アドレスに、ステップS13で求めた頂点コマンドの出力データ形式に応じた頂点カラーコマンドサイズを加算した値となる。図27は、各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、出力データ形式はGDC_DL_FORMAT_FLOAT(浮動小数点形式)であり、頂点カラーコマンド作成関数は3Xto3Fである。従って、頂点カラーコマンドサイズは3ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
texture_set_ptr = 0x44000038 + (3 × 4) = 0x44000044
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_set_ptrのデータ値には0x44000044が格納される。この様子が図28に示される。
【0055】
次に図6のステップS17で、次の頂点コマンド格納アドレスまでのオフセットを計算する。次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetは、頂点座標コマンドのサイズ、頂点カラーコマンドのサイズ、テクスチャ座標コマンドのサイズを加算した値となる。図29は、各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、テクスチャ座標コマンド作成関数は2Xto2Fである。従って、テクスチャ座標コマンドサイズは2ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
vertex_set_offset = (3 + 3 + 2) × 4 = 32
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_set_offsetのデータ値には32が格納される。この様子が図30に示される。
【0056】
図31は、図5のステップS3に示す図形描画データ作成処理の詳細を示すフローチャートである。図31に示す各ステップは、図1のCPU10により実行される。まずステップS1において、事前計算結果データ24(図形描画制御データ23の一部であってよい)を参照する。図32は、図7に示す図形描画制御データ23の例から求めた事前計算結果データ24を示す図である。便宜上、DL_formatも事前計算結果データ24の一部として示してある。なお事前計算結果データ24だけではなく、如何に説明するように、図形描画制御データ23の他のデータも参照する。
【0057】
図31のステップS2では、各種のコマンドを出力してVRAM16(図1参照)に格納する。具体的には、図形描画制御データ23のdraw_ptrとdraw_strideとを参照して、描画領域を設定するコマンドをDL_ptrが示すアドレスから格納する。なおdraw_ptrは矩形の描画領域の左上コーナーの位置を示すアドレスであり、draw_strideは描画領域のストライド(即ち矩形の描画領域の水平方向の長さ)を示すデータである。またtexture_flagが有効な場合は、図形描画制御データ23のimage_ptr、image_width、image_heightを参照し、テクスチャ画像の設定コマンドを作成し、描画領域を設定するコマンドに続けて格納する。最後に、図形描画開始コマンドGDC_TRIANGLESを作成し格納する。図33は、VRAM16のメモリ空間において、DL_ptrが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【0058】
次に、図31のステップS3で、事前計算結果データ24に指定される頂点座標コマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、頂点座標コマンド作成関数としてgdcMakeVertexCoordDL_2XtoFが指定されているので、この頂点座標コマンド作成関数を呼び出す。次に、図31のステップS4で、事前計算結果データ24に指定される頂点カラーコマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、頂点カラーコマンド作成関数としてgdcMakeColorDL_3Xto3Fが指定されているので、この頂点カラーコマンド作成関数を呼び出す。次に、図31のステップS5で、事前計算結果データ24に指定されるテクスチャ座標コマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、テクスチャ座標コマンド作成関数としてgdcMakeTextureCoordDL_2Xto2Fが指定されているので、このテクスチャ座標コマンド作成関数を呼び出す。最後にステップS6で、図形描画終了コマンドを出力する。これにより、図形描画終了を示すデータを、VRAM16中の図形データ22の一連の頂点コマンドの最後に配置する。
【0059】
図34は、図32に示す事前計算結果データ24の例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。図31のステップS3において、頂点座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図34に示す各データ値を関数の引数に指定する。
【0060】
図35は、頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。図35に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、頂点座標コマンドを作成する。図32に示す事前計算結果データ24の例では、vertex_get_ptrから読み出した固定小数点形式の頂点座標データX及びYを浮動小数点形式に変換する。更に、変換後の頂点座標データX及びYに固定値の頂点コマンド(図2のG_Vertexコマンド)を付加して、頂点座標コマンド格納先vertex_set_ptrに保存する。ステップS3で、現在の頂点座標コマンドの格納アドレスvertex_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たな頂点座標コマンドの格納アドレスを求める。ステップS4で、現在の頂点座標データの取得先アドレスvertex_get_ptrに、次の頂点座標データまでのオフセットvertex_get_offsetを加算して、新たな頂点座標データの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図35に示す処理により、図形データ22の頂点座標データから図形描画データ20の頂点座標コマンド部分が作成される。
【0061】
図36は、頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。頂点座標データの先頭アドレスvertex_ptrから所定個数目の頂点(firstで示す頂点データ番号)の位置がvertex_get_ptrで示される。そのvertex_get_ptrを開始点として、vertex_get_offset間隔で並ぶ固定小数点形式のデータX(fixed X1〜X6)及びY(fixed Y1〜Y6)を読み出し、浮動小数点形式のデータX(float X1〜X6)及びY(float Y1〜Y6)に変換する。変換後の浮動小数点形式のデータX及びYが、vertex_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。
【0062】
図37は、図32に示す事前計算結果データ24の例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。図31のステップS4において、頂点カラーコマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図37に示す各データ値を関数の引数に指定する。
【0063】
図38は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。図38に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、頂点カラーコマンドを作成する。図32に示す事前計算結果データ24の例では、color_first_ptrから読み出した固定小数点形式の頂点カラーデータRGBを浮動小数点形式に変換する。更に、変換後の頂点カラーデータRGBを、頂点カラーコマンド格納先color_set_ptrに保存する。ステップS3で、現在の頂点カラーコマンドの格納アドレスcolor_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たな頂点カラーコマンドの格納アドレスを求める。ステップS4で、現在の頂点カラーデータの取得先アドレスcolor_first_ptrに、次の頂点カラーデータまでのオフセットcolor_offsetを加算して、新たな頂点カラーデータの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図38に示す処理により、図形データ22の頂点カラーデータから図形描画データ20の頂点カラーコマンド部分が作成される。
【0064】
図39は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。頂点カラーデータの先頭アドレスcolor_ptrから所定個数目(firstで示す頂点データ番号)の頂点の位置がcolor_first_ptrで示される。そのcolor_first_ptrを開始点として、color_offset間隔で並ぶ固定小数点形式のデータR(fixed R1〜R6)、G(fixed G1〜G6)、B(fixed B1〜B6)を読み出し、浮動小数点形式のデータRGBに変換する。変換後の浮動小数点形式のデータR(float R1〜R6)、G(float G1〜G6)、B(float B1〜B6)が、color_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。
【0065】
図40は、図32に示す事前計算結果データ24の例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。図31のステップS5において、テクスチャ座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図40に示す各データ値を関数の引数に指定する。
【0066】
図41は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。図41に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、テクスチャ座標コマンドを作成する。図32に示す事前計算結果データ24の例では、texture_first_ptrから読み出した固定小数点形式のテクスチャ座標データX及びYを浮動小数点形式に変換する。更に、変換後のテクスチャ座標データX及びYを、テクスチャ座標コマンド格納先texture_set_ptrに保存する。ステップS3で、現在のテクスチャ座標コマンドの格納アドレスtexture_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たなテクスチャ座標コマンドの格納アドレスを求める。ステップS4で、現在のテクスチャ座標データの取得先アドレスtexture_first_ptrに、次のテクスチャ座標データまでのオフセットtexture_offsetを加算して、新たなテクスチャ座標データの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図41に示す処理により、図形データ22のテクスチャ座標データから図形描画データ20のテクスチャ座標コマンド部分が作成される。
【0067】
図42は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。テクスチャ座標データの先頭アドレスtexture_ptrから所定個数目の頂点(firstで示す頂点データ番号)の位置がtexture_first_ptrで示される。そのtexture_first_ptrを開始点として、texture_offset間隔で並ぶ固定小数点形式のデータS(fixed S1〜S6)及びT(fixed T1〜T6)を読み出し、浮動小数点形式のデータS(float S1〜S6)及びT(float T1〜T6)に変換する。変換後の浮動小数点形式のデータS及びTが、texture_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。なおここでS及びTは、テクスチャ画像の2つの座標を示す。
【0068】
図43は、以上の処理によりVRAM16のメモリ空間に作成された図形描画データ20の構成を示す図である。浮動小数点形式で表現した頂点座標コマンドと、浮動小数点形式で表現した頂点カラーコマンドと、浮動小数点形式で表現したテクスチャ座標コマンドとを含む各頂点に関するデータが、複数の頂点(この例では6個の頂点)について並べられている。また図形描画データ20の終端には、図形描画終了コマンドが配置されている。
【0069】
図44は、従来の図形描画データの作成処理を示すフローチャートである。ステップS1で頂点番号を初期化する。ステップS2乃至S5が頂点座標データに関する処理部分であり、頂点座標コマンド格納アドレスの計算、頂点座標データ取得先アドレスの計算、頂点座標データの入出力データ形式の判定、及び頂点座標コマンドの作成が実行される。ステップS6乃至S9が頂点カラーデータに関する処理部分であり、頂点カラーコマンド格納アドレスの計算、頂点カラーデータ取得先アドレスの計算、頂点カラーデータの入出力データ形式の判定、及び頂点カラーコマンドの作成が実行される。ステップS10乃至S13がテクスチャ座標データに関する処理部分であり、テクスチャ座標コマンド格納アドレスの計算、テクスチャ座標データ取得先アドレスの計算、テクスチャ座標データの入出力データ形式の判定、及びテクスチャ座標コマンドの作成が実行される。ステップS14において全頂点の処理を終了したか否かを判定する。全頂点の処理が終了していない場合には、ステップS15で次の頂点に移動し、その後ステップS2に戻り以降の処理を繰り返す。このように従来の図形描画データの作成処理では、各頂点毎にデータ形式の判定及びアドレス計算処理が実行されるために効率が良くない。
【0070】
図45は、図44に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。ここでNは、描画対象の頂点の数である。各処理についての処理負荷の値は、整数加算処理の負荷を1とした場合の相対的な値を示している。図45から分かるように、図44に示す従来の図形描画データの作成処理においては、描画対象の頂点数Nとした場合に、合計で38N+1の処理負荷がCPU10にかかることになる。
【0071】
図46は、図5のステップS2及びS3に示す図形描画データの作成処理における処理負荷の値を示す表である。図46から分かるように、図5に示す本実施例の図形描画データ作成処理においては、描画対象の頂点数Nとした場合に、合計で27N+117の処理負荷がCPU10にかかることになる。従って頂点数Nが大きい場合には、本実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約30%の処理負荷の低減が可能となる。
【0072】
但し頂点数が少ない場合には、図5のステップS2の事前処理にかかる処理負荷のために、本実施例の図形描画データ作成処理よりも従来の図形描画データ作成処理の方が、処理負荷が小さくなることが考えられる。そこで頂点数の大小に応じて、本実施例の図形描画データ作成処理と従来の図形描画データ作成処理とを切り替えることが考えられる。
【0073】
図47は、2つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。ステップS1で、描画対象の図形を構成する頂点数が閾値以上であるか否かを判定する。頂点数が閾値以上の場合には、ステップS2で、図5に示す本実施例の図形描画データ作成処理を実行する。頂点数が閾値よりも小さい場合には、ステップS3で、図44に示す従来の図形描画データの作成処理を実行する。
【0074】
図48は、図47のステップS1の判定処理で用いる閾値を設定するフローチャートである。このフローチャートでは、閾値変更関数を呼び出し、閾値となるべき頂点数をその引数に与える。これにより、引数として与えた数に、閾値を設定する。具体的な閾値の値は、CPUやメモリ等のハードウェアに依存して異なるので、このような閾値変更関数(閾値設定関数)を用いることにより、システム毎に適宜閾値を設定することが好ましい。例えば種々の頂点数の複数のテスト図形データに対して、従来の図形描画データ作成処理と本実施例の図形描画データ作成処理との両方を用いて図形描画データを生成し、それぞれの時間や処理負荷を調べることにより、適切な閾値を知ることができる。
【0075】
図49は、図形描画システムの変形例を示す図である。図49に示す図形描画システムは、CPU(Central Processing Unit)10A、ホストインターフェース11、図形描画処理装置12、表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM(Video Random Access Memory)16を含む。図1の図形描画システムと異なり、CPU10Aは、複数のコア10a、10b、10cを含む構成となっている。この複数のコア10a、10b、及び10cにより、頂点座標コマンド作成処理、頂点カラーコマンド作成処理、及びテクスチャ座標コマンド作成処理をそれぞれ並行して実行する。
【0076】
図50は、図49に示すマルチコアCPUを用いた場合の図形描画処理を示すフローチャートである。図50に示すフローチャートは、図5に示すフローチャートと比較して、ステップS3−1乃至3−3の部分が異なる。図50に示すフローチャートでは、頂点座標コマンドを作成するステップS3−1の処理と、頂点カラーコマンドを作成するステップS3−2の処理と、テクスチャ座標コマンドを作成するステップS3−3の処理とが、複数のコアにより並行して実行される。この構成により、更に処理効率を向上させることが可能となる。
【0077】
図51は、図50のステップS2及びS3−1乃至3−3に示す図形描画データの作成処理における処理負荷の値を示す表である。図51から分かるように、図51に示す実施例の図形描画データ作成処理においては、描画対象の頂点数Nとした場合に、合計で9N+117の処理負荷がCPU10Aにかかることになる。従って頂点数Nが大きい場合には、この実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約75%の処理負荷の低減が可能となる。
【0078】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【0079】
なお本発明は以下の内容を含むものである。
(付記1)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
(付記2)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする付記1記載の描画データ処理方法。
(付記3)
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記2記載の描画データ処理方法。
(付記4)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行することを特徴とする付記1記載の描画データ処理方法。
(付記5)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第3のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画システム。
(付記6)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする付記5記載の図形描画システム。
(付記7)
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記6記載の図形描画システム。
(付記8)
前記演算処理ユニットは、第1の演算処理ユニットと第2の演算処理ユニットとを含み、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2の演算処理ユニットにより実行することを特徴とする付記5記載の図形描画システム。
(付記9)
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記5記載の図形描画システム。
(付記10)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成するための図形描画データ作成プログラムであって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
(付記11)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行させ、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行させることを特徴とする付記10記載の図形描画データ作成プログラム。
(付記12)
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記10記載の図形描画データ作成プログラム。
【符号の説明】
【0080】
10 CPU
11 ホストインターフェース
12 図形描画処理装置
13 表示装置
14 データ格納ユニット
15 メインメモリ
16 VRAM
【技術分野】
【0001】
本発明は、一般に画像処理に関し、詳しくは図形データに基づいて図形描画データを生成する描画データ処理に関する。
【背景技術】
【0002】
コンピュータグラフィクスでは、図形描画装置であるグラフィクス・エンジンが、図形描画データに基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより表示画像データを生成する。2次元グラフィクスの場合であれば元の図形描画データは2次元のデータであり、3次元グラフィクスの場合であれば元の図形描画データは3次元のデータである。3次元グラフィクスの場合、グラフィクス・エンジンは、3次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき2次元画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データを生成する。次にディスプレイ・エンジンが、メモリに格納された2次元画像データを描画データとして読出し、読み出した描画データをディスプレイ装置に表示する。
【0003】
グラフィクス・エンジンは、ジオメトリ処理部とラスタ処理部とを含む。ジオメトリ処理部は、メモリから読み込んだ立体オブジェクトの3次元データに基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理部では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理部は、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの2次元画像を構成する複数の三角形のデータを計算すると、この複数の三角形のデータをラスタ処理部に供給する。なお元の図形描画データが2次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データを直接にラスタ処理部に供給してよい。
【0004】
ラスタ処理部は、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズ処理により、2次元の描画データを生成する。ラスタライズ処理では、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばRGB各色の輝度、奥行き方向の距離を表すZ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【0005】
描画する対象となる図形のデータは、三角形の各頂点の座標を示す頂点座標データや各頂点の色を示す頂点カラーデータ等を含む。通常、図形データは、その図形データを生成するアプリケーションに応じたデータ形式となっている。例えば、あるアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して固定小数点データ形式を用いて、図形データを生成するかもしれない。また別のアプリケーションソフトウェアの場合、頂点座標データ及び頂点カラーデータの両方に対して浮動小数点データ形式を用いて、図形データを生成するかもしれない。
【0006】
一方、グラフィクス・エンジンである描画処理装置に入力データとして供給する図形描画データについては、頂点座標データ及び頂点カラーデータが所定のデータ形式で表現される必要がある。例えば、ある描画処理装置の場合、図形描画データの頂点座標データ及び頂点カラーデータとして、両方ともに浮動小数点データ形式が要求されるかもしれない。この場合、アプリケーションソフトウェアが生成した図形データの頂点座標データ及び頂点カラーデータが固定小数点データ形式であるなら、データ形式の変換を行なうことが必要となる。このようなデータ形式の変換により、アプリケーションに応じた図形データから描画処理装置に適した図形描画データを生成することができる。
【0007】
またデータ形式の変換だけではなく、アプリケーションに応じた図形データのデータ配置から描画処理装置に適した図形描画データのデータ配置へとデータ配置の変換を行なう必要がある。通常、アプリケーションで生成する図形データにおいては、複数の頂点について頂点座標データを並べた1つのデータリストと、複数の頂点について頂点カラーデータを並べた1つのデータリストとが、それぞれ別個のデータリストとなっている。一方、図形処理装置では、頂点座標データや頂点カラーデータを各頂点毎に1つに纏め、そのように纏めたデータを複数の頂点について並べた1つのデータリストとして、図形描画データが提供される必要がある。
【0008】
上記のようなデータ形式の変換及びデータ配置の変換を行なう際には、従来、各頂点毎にデータ形式を判定し、判定結果に応じてデータ形式の変換を行ない、変換後の頂点座標データや頂点カラーデータを各頂点毎に適切に配置してメモリに書き込んでいる。即ち、第1の頂点について頂点座標データの形式を判定し、判定結果に応じて頂点座標データのデータ形式を変換し、変換後の頂点座標データを第1の頂点についてメモリに書き込む。次に、第1の頂点について頂点カラーデータの形式を判定し、判定結果に応じて頂点カラーデータのデータ形式を変換し、変換後の頂点カラーデータを第1の頂点についてメモリに書き込む。与えられる図形データには、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等も含まれる。そこで、第1の頂点について、頂点座標データ及び頂点カラーデータに続き、テクスチャ座標データ等を含む全ての変換後の図形描画データをメモリに書き込む。次に、第2の頂点について同様の処理を実行する。第2の頂点について全ての変換後の図形描画データをメモリに書き込むと、次に、第3の頂点について同様の処理を実行する。以降、複数の頂点の残りの全てについて、同様に処理を実行する。
【0009】
一般に、アプリケーションにより生成される図形データの形式は、頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について複数種類が存在し、それらのデータ形式の組み合わせの数は膨大な数(例えば100以上)となる。そのような膨大な数の組み合わせの各々について別個にデータ変換用のプログラムコードを用意することは、コードサイズが膨大となりメンテナンス性の観点から好ましくない。そのため従来は、上記のように頂点座標データ、頂点カラーデータ、テクスチャ座標データ等の各々について、各頂点毎にデータ形式を判定し、判定に応じて適切なデータ変換を実行していた。
【0010】
しかし上記のように各頂点毎にデータ形式を判定していたのでは、データ形式の判定処理の実行回数が、図形データに含まれる頂点数に比例して増加してしまう。その結果、頂点数が多い図形データの場合には、効率的なデータ変換処理を実行できないという問題が生じる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開平9−22456号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
以上を鑑みると、効率的に図形データを図形描画データに変換するデータ処理装置及びデータ処理方法が望まれる。
【課題を解決するための手段】
【0013】
本発明の一観点によれば、各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行する描画データ処理方法が提供される。
【発明の効果】
【0014】
開示の描画データ処理方法によれば、データ形式の判定に基づく適切なデータ生成処理の選択及び図形描画データ格納時のオフセットの計算を事前に行なっておく。その事前計算の結果を用いて、データ形式の変換及び変換後のデータ書き込みを、第1のリストの第1のデータの複数の頂点に対して一括的に実行し、それとは別個に第2のリストの第2のデータの複数の頂点に対して一括的に実行する。このように、データ形式の判定に基づいた適切なデータ生成処理の選択を各頂点毎に実行することなく、事前に実行しておくことにより、効率的な図形描画データ作成処理を実現する効果を奏する。
【図面の簡単な説明】
【0015】
【図1】図形描画システムの構成の一例を示す図である。
【図2】図形データの頂点座標データを図形描画データの頂点座標データに変換する関数の一例を示す表である。
【図3A】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図3B】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図3C】図形データの頂点カラーデータを図形描画データの頂点カラーデータに変換する関数の一例を示す表である。
【図4】図形データのテクスチャ座標データを図形描画データのテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。
【図5】図1に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。
【図6】図5のステップS2に示す事前計算処理の詳細を示すフローチャートである。
【図7】図形描画制御データの一例を示す表である。
【図8A】図形描画制御データの各データの意味を示す表である。
【図8B】図形描画制御データの各データの意味を示す表である。
【図9】頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。
【図10】選択された頂点座標コマンド作成関数を示すデータの図である。
【図11】図形描画制御データのvertex_strideの意味を示す表である。
【図12】次の頂点座標データまでのオフセットを示すデータの例を示す図である。
【図13】頂点座標データの取得先アドレスを示すデータの例を示す図である。
【図14】頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。
【図15】選択された頂点カラーコマンド作成関数を示すデータの図である。
【図16】図形描画制御データのcolor_strideの意味を示す表である。
【図17】次の頂点カラーデータまでのオフセットを示すデータの例を示す図である。
【図18】頂点カラーデータの取得先アドレスを示すデータの例を示す図である。
【図19】テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。
【図20】選択されたテクスチャ座標コマンド作成関数を示すデータの図である。
【図21】図形描画制御データのtexture_strideの意味を示す表である。
【図22】次のテクスチャ座標データまでのオフセットを示すデータの例を示す図である。
【図23】テクスチャ座標データの取得先アドレスを示すデータの例を示す図である。
【図24】頂点座標コマンドの格納アドレスを示すデータの例を示す図である。
【図25】各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。
【図26】頂点カラーコマンドの格納アドレスを示すデータの例を示す図である。
【図27】各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。
【図28】テクスチャ座標コマンドの格納アドレスを示すデータの例を示す図である。
【図29】各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。
【図30】次の頂点コマンド格納アドレスまでのオフセットを示すデータの例を示す図である。
【図31】図5のステップS3に示す図形描画データ作成処理の詳細を示すフローチャートである。
【図32】図7に示す図形描画制御データの例から求めた事前計算結果データを示す図である。
【図33】VRAMのメモリ空間において、DL_ptrが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【図34】図32に示す事前計算結果データの例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。
【図35】頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。
【図36】頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。
【図37】図32に示す事前計算結果データの例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。
【図38】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。
【図39】頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。
【図40】図32に示す事前計算結果データの例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。
【図41】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。
【図42】テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。
【図43】VRAMのメモリ空間に作成された図形描画データの構成を示す図である。
【図44】従来の図形描画データの作成処理を示すフローチャートである。
【図45】図44に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。
【図46】図5のステップS2及びS3に示す図形描画データの作成処理における処理負荷の値を示す表である。
【図47】2つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。
【図48】図47のステップS1の判定処理で用いる閾値を設定するフローチャートである。
【図49】図形描画システムの変形例を示す図である。
【図50】図49に示すマルチコアCPUを用いた場合の図形描画処理を示すフローチャートである。
【図51】図50のステップS2及びS3−1乃至3−3に示す図形描画データの作成処理における処理負荷の値を示す表である。
【発明を実施するための形態】
【0016】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【0017】
図1は、図形描画システムの構成の一例を示す図である。図1に示す図形描画システムは、CPU(Central Processing Unit)10、ホストインターフェース11、図形描画処理装置12、表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM(Video Random Access Memory)16を含む。CPU10は、ホストインターフェース11を介して図形描画処理装置12に結合される。互いに結合されたCPU10と図形描画処理装置12とで、1つの描画処理システムチップ18を構成してよい。この描画処理システムチップ18に対する表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM16の結合は、模式的或いは機能的な結合を示すものであり、実際の信号線の結合を示すものではない。例えばメインメモリ15とVRAM16とは、別個のメモリデバイスである必要はなく、描画処理システムチップ18に接続される1つの連続したメモリ空間を構成する単一のメモリデバイスであってよい。データ格納ユニット14は、ハードディスクドライブ、DVD、CD−ROM等の大容量のデータ格納装置であってよい。表示装置13は、CRTや液晶表示装置等の表示機器であり、VRAM16に描画された2次元画像データ(ラスタデータ)を表示する。
【0018】
図形描画処理装置12は、VRAM16に格納された図形描画データ20に基づいて表示すべき画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データ(ラスタデータ)21を生成する。2次元グラフィクスの場合であれば元の図形描画データ20は2次元のデータであり、3次元グラフィクスの場合であれば元の図形描画データ20は3次元のデータである。3次元グラフィクスの場合、図形描画処理装置12は、3次元データとして与えられた立体オブジェクトを所定の視点から見たときに見えるべき2次元画像を計算し、その画素毎のデータをメモリに書き込むことにより2次元画像データ21を生成する。次に、図形描画処理装置12に内蔵のディスプレイ・エンジンが、VRAM16に格納された2次元画像データ21を描画データとして読出し、読み出した描画データを表示装置13に表示する。
【0019】
図形描画処理装置12は、ジオメトリ処理とラスタ処理とを実行する。図形描画処理装置12は、VRAM16から読み込んだ立体オブジェクトの3次元データ(図形描画データ20)に基づいて、そのオブジェクトの位置・姿勢に応じて拡大・回転等の幾何学的な演算処理を行う。一般に立体オブジェクトは、多数のポリゴンの集合体として表現されている。ジオメトリ処理では、幾何学的な演算処理としてポリゴン単位での座標変換を実行するとともに、光源計算等の演算処理も実行する。この際、最も単純なポリゴンとして三角形を用いるのが一般的である。ジオメトリ処理においては、幾何学的な演算処理及び光源処理等により、所望の視点から見たオブジェクトの2次元画像を構成する複数の三角形のデータを計算する。この複数の三角形のデータは、その後、ラスタ処理に供される。なお元の図形描画データ20が2次元のデータである場合、ジオメトリ処理を実行する必要はなく、与えられた図形描画データ20を直接にラスタ処理の対象とすればよい。
【0020】
ラスタ処理においては、オブジェクトを構成する各面の各画素を塗りつぶすラスタライズにより、2次元の描画データ(2次元画像データ21)を生成する。ラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求める。画像パラメータには、例えばRGB各色の輝度、奥行き方向の距離を表すZ値、テクスチャ表示のためのテクスチャ座標値、アルファブレンディングのためのアルファ値等が含まれる。
【0021】
図形描画データ20は、データ格納ユニット14に格納される図形データ22及び図形描画制御データ23に基づいて、CPU10が生成する。図形データ22は、三角形の各頂点の座標を示す頂点座標データ、各頂点の色を示す頂点カラーデータ、三角形に貼り付けるテクスチャ画像の座標を示すテクスチャ座標データ等を含む。図形データ22は、当該図形データ22を生成するアプリケーションソフトウェアに応じたデータ形式となっている。
【0022】
図形データ22は、各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストである。ここで第1のデータは例えば頂点座標データであり、第2のデータは例えば頂点カラーデータである。CPU10は、第1データ形式と同一又は異なる第3データ形式で表現した第1のデータと第2データ形式と同一又は異なる第4データ形式で表現した第2のデータとを含む各頂点に関するデータを複数の頂点について並べ、図形描画データ20を生成する。
【0023】
まずCPU10は、データ格納ユニット14から図形データ22及び図形描画制御データ23を読み出して、メインメモリ15に格納する。メインメモリ15中の図形データ22と図形描画制御データ23とに基づいて、CPU10は、まず最初に事前計算結果データ24を生成する。具体的には、CPU10は、第1データ形式と第3データ形式とに応じた第1のデータ生成処理を選択する。更にCPU10は、第2データ形式と第4データ形式とに応じた第2のデータ生成処理を選択する。また更にCPU10は、少なくとも第3データ形式と第4データ形式とに応じて図形描画データ20における各頂点間のメモリアドレス距離を示すオフセットを計算する。以上の処理を、図形描画データ20を生成するための事前計算として最初に実行し、事前計算結果データ24を生成する。事前計算結果データ24は、少なくとも前記第1のデータ生成処理及び第2のデータ生成処理を特定するデータとともに、前記オフセットを示すデータを含む。
【0024】
上記のようにして計算した事前計算結果データ24に基づいて、CPU10は、図形描画データ20をVRAM16に書き込む。まずCPU10は、第1のデータ生成処理を第1のリストの第1のデータに対して実行することにより、第3データ形式で表現した第1のデータを複数の頂点について生成し、こうして生成した第1のデータを前記オフセットが示す間隔でVRAM16に書き込む。更にCPU10は、第2のデータ生成処理を第2のリストの第2のデータに対して実行することにより、第4データ形式で表現した第2のデータを複数の頂点について生成し、こうして生成した第2のデータを前記オフセットが示す間隔でVRAM16に書き込む。このようにしてデータ形式変換後の第1のデータ(例えば頂点座標データ)とデータ形式変換後の第2のデータ(例えば頂点カラーデータ)とを、所定のオフセット間隔で各頂点毎にVRAM16に書き込んで、図形描画データ20を生成することができる。図形データ22に含まれる他のデータ、例えばテクスチャ座標データ等についても、同様にして、データ形式を変換してから所定のオフセット間隔でVRAM16に書き込めばよい。
【0025】
第1のデータ生成処理により第3データ形式で表現した第1のデータを複数の頂点について生成してVRAM16に前記オフセットが示す間隔で書き込む段階(便宜上、第1段階と呼ぶ)は、複数の頂点について一括的に実行されてよい。また第2のデータ生成処理により第4データ形式で表現した第2のデータを複数の頂点について生成してVRAM16に前記オフセットが示す間隔で書き込む段階(便宜上、第2段階と呼ぶ)も、複数の頂点について一括的に実行されてよい。また上記第1段階と第2段階とは、互いに別個に実行されてよい。即ち、第1段階と第2段階との何れか一方を先に実行してから、残りの一方を実行してよいし、或いは第1段階と第2段階とを独立して並行的に実行してもよい。このように第1及び第2のデータ生成処理を事前に選択しておき、その後、第1のデータ生成処理を用いた第1段階と第2のデータ生成処理を用いた第2段階とをそれぞれ複数の頂点について一括的に実行することにより、効率的な処理を実現することができる。
【0026】
また第3データ形式で表現した第1のデータを複数の頂点について生成し、こうして生成した第1のデータを前記オフセットが示す間隔でVRAM16に書き込む段階は、第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行してよい。また第4データ形式で表現した第2のデータを複数の頂点について生成し、こうして生成した第2のデータを前記オフセットが示す間隔でVRAM16に書き込む段階は、第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行してよい。
【0027】
図2は、図形データ22の頂点座標データを図形描画データ20の頂点座標データに変換する関数の一例を示す表である。図形描画データ20の頂点座標データは、図形描画処理装置12に対して描画対象の頂点座標を指示するデータであり、頂点座標コマンドと呼ばれる。これに対応して、図形データ22の頂点座標データを図形描画データ20の頂点座標データ(即ち頂点座標コマンド)に変換する関数を、頂点座標コマンド作成関数と呼ぶ。図2に示す例では、頂点座標コマンド作成関数の名称をgdcMakeVertexCoordDL_**とし、"**"で示す関数のサフィックス部分に"2XtoI"や"2XtoF"等を指定することにより、関数によるデータ変換の形式を指定している。図2に示す例において、"2XtoI"は、各1ワード(4バイト)の固定小数点形式(fixed)のX座標値とY座標値とが入力データとして与えられ、各short形式(2バイト)の整数値のX座標値とY座標値とを出力データとして生成する関数を示す。また"2XtoF"は、各1ワード(4バイト)の固定小数点形式(fixed)のX座標値とY座標値とが入力データとして与えられ、各1ワードの浮動小数点形式(float)のX座標値とY座標値とを出力データとして生成する関数を示す。また例えば、"2FtoX"は、各1ワード(4バイト)の浮動小数点形式(float)のX座標値とY座標値とが入力データとして与えられ、各1ワードの固定小数点形式(fixed)のX座標値とY座標値とを出力データとして生成する関数を示す。また"3Word"は、各1ワードのX座標値とY座標値とが入力データとして与えられ、各1ワードのG_VertexコマンドとX座標値とY座標値とを合計3ワードの出力データとして生成する関数を示す。なおここでG_Vertexコマンドは、1ワードの固定のビットパターンであり、その固定のビットパターンに続いて1つの頂点に対する各種頂点データが格納されていることを示すために用いられる。図形描画処理装置12は、あるG_Vertexコマンドから次のG_Vertexコマンドまでの間に格納されているデータを、1つの頂点に対する各種頂点データとして認識する。またget_ptrは図形データ22の頂点座標データの取得先アドレスを示し、set_ptrは図形描画データ20の頂点座標コマンドの格納先アドレスを示す。
【0028】
図3A乃至3Cは、図形データ22の頂点カラーデータを図形描画データ20の頂点カラーデータに変換する関数の一例を示す表である。図形データ22の頂点カラーデータを図形描画データ20の頂点カラーデータ(即ち頂点カラーコマンド)に変換する関数を、頂点カラーコマンド作成関数と呼ぶ。図3A乃至3Cに示す例では、頂点カラーコマンド作成関数の名称をgdcMakeColorDL_**とし、"**"で示す関数のサフィックス部分に"3Fto3F"や"3Xto3F"等を指定することにより、関数によるデータ変換の形式を指定している。例えば図3Aにおいて、"3Fto3F"は、各1ワード(4バイト)の浮動小数点形式(float)のRGBカラー値が入力データとして与えられ、各1ワードの浮動小数点形式(float)のRGBカラー値を出力データとして生成する関数を示す。また例えば図3Bにおいて、"3XtoARGB8"では、各1ワード(4バイト)の固定小数点形式(fixed)のRGBカラー値と8ビットの整数形式(int)のアルファ値Aとが入力データとして与えられる。この関数は、各1バイトの整数形式(int)のアルファ値AとRGBカラー値とを出力データとして生成する。なおalpha_ptrは、図形データ22のアルファ値(アルファ係数)のデータの取得先アドレスを示す。またcolorは、カラー配列が無効な場合の固定カラー値である。
【0029】
図4は、図形データ22のテクスチャ座標データを図形描画データ20のテクスチャ座標データに変換する頂点コマンド作成関数の一例を示す表である。図形データ22のテクスチャ座標データを図形描画データ20のテクスチャ座標データ(即ちテクスチャ座標コマンド)に変換する関数を、テクスチャ座標コマンド作成関数と呼ぶ。図4に示す例では、テクスチャ座標コマンド作成関数の名称をgdcMakeTextureCoordDL_**とし、"**"で示す関数のサフィックス部分に"2Xto2F"や"2Fto2X"等を指定することにより、関数によるデータ変換の形式を指定している。具体例の詳細は、図2や図3A乃至3Cに示す例と同様であり、その説明を省略する。
【0030】
図5は、図1に示す図形描画システムによる描画データ処理の動作の一例を示すフローチャートである。まずステップS1において、CPU10が、データ格納ユニット14から図形データ22と図形描画制御データ23とをメインメモリ15にロードする。ステップS2において、CPU10は、メインメモリ15に格納された図形データ22と図形描画制御データ23とに基づいて、頂点コマンド作成に最適な作成関数を選択する。即ち、例えば図2乃至図4に示す頂点コマンド作成関数のうちで適切なものを選択する。また更にCPU10は、メインメモリ15に格納された図形データ22と図形描画制御データ23とに基づいて、選択した頂点コマンド作成関数に入力するアドレス値やオフセット値等のパラメータを計算する。こうして選択した頂点コマンド作成関数を示すデータ及び計算した各種パラメータは、事前計算結果データ24としてメインメモリ15に格納される。なお事前計算結果データ24は、図形描画制御データ23とは別個のデータとして格納及び管理してもよいし、図形描画制御データ23の一部として格納及び管理してもよい。次にステップS3において、CPU10は、図形描画制御データ23及び事前計算結果データ24に基づいて、選択した頂点コマンド作成関数により図形描画データ20を作成し、VRAM16に格納する。以上で、図形描画データ20を作成する処理が終了する。
【0031】
CPU10による図形描画データ20の作成処理は、CPU10が所定のプログラムを実行することにより実現される。このプログラムは、データ格納ユニット14に格納されており、実行時にメインメモリ15にロードされる。メインメモリ15は更に、プログラム実行時のワークメモリとして機能する。また各種頂点コマンド作成関数は、ライブラリ関数等として、データ格納ユニット14に予め格納されている。CPU10は、選択した頂点コマンド作成関数をデータ格納ユニット14からメインメモリ15にロードして実行する。
【0032】
次に図5のステップS4で、図形描画処理装置12が、図形描画データ20に基づいて図形をラスタデータとして描画することにより、2次元画像データ21を生成してVRAM16に格納する。即ち、図形描画処理装置12は、オブジェクトの3次元データ(図形描画データ20)に基づいてオブジェクトの拡大及び回転等のジオメトリ処理を行い、所望の視点から見たオブジェクトの2次元画像を構成する複数の2次元の三角形のデータを計算する。なお元の図形描画データ20が2次元のデータである場合、ジオメトリ処理を実行する必要はない。その後、図形描画処理装置12は、複数の2次元の三角形のデータに基づいて、オブジェクトを構成する各面の各画素を塗りつぶすラスタ処理(ラスタライズ)を実行し、2次元の描画データ(2次元画像データ21)を生成する。このラスタライズでは、各三角形の頂点毎に求めた画像パラメータに基づいて、三角形内部に含まれる各画素の画像パラメータを補間等により求め、三角形内部を塗りつぶす。例えば図1に示されるように、2つの三角形26A及び26Bを描画する場合が考えられる。この場合、図形描画データ20の頂点データから三角形26Aの3つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形26Aの内部の各画素の画像パラメータ(輝度、色、テクスチャ等)を求め、三角形26Aを描画する。同様にして、図形描画データ20の頂点データから三角形26Bの3つの頂点について画像パラメータを求め、この画像パラメータを内挿することにより三角形26Bの内部の各画素の画像パラメータ(輝度、色、テクスチャ等)を求め、三角形26Bを描画する。また奥行き方向の距離を表すZ値の比較により、三角形26Bが三角形26Aの背後に隠れるような前後関係を判断して描画することができる。
【0033】
次にステップS5で、図形描画処理装置12の描画エンジンが、VRAM16の2次元画像データ21を表示装置13に転送し、表示装置13の画面に描画データを表示する。これにより、例えば図1に示すように、2つの三角形26A及び26Bが表示装置13の画面に表示される。
【0034】
図6は、図5のステップS2に示す事前計算処理の詳細を示すフローチャートである。図6に示す各ステップは、図1のCPU10により実行される。まずステップS1において、頂点座標データの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれる頂点座標データの入出力データ形式を示すデータを参照することにより行なわれる。
【0035】
図7は、図形描画制御データ23の一例を示す表である。図7に示すように、図形描画制御データ23は、固有のデータ名を有しそれぞれ特定の意味を有する各データに対して値が定義されており、この値により、描画対象のオブジェクトに関する描画条件を指定してある。図形描画制御データ23の各データの意味については、図8A及び図8Bに示す表に示されている。なお図8Bにおいて、データ名vertex_func以降のデータは、図6の事前計算により求められる事前計算結果データ24に対応する部分である。前述のように、事前計算結果データ24は、図形描画制御データ23の一部として管理されてよい。
【0036】
図7に示す図形描画制御データ23の例において、データ名vertex_formatのデータが示す頂点座標データの入力形式は、GDC_TYPE_VTX2Xである。即ち、図6のステップS1において、頂点座標データの入力データ形式を判定すると、入力データ形式はGDC_TYPE_VTX2X(固定小数点形式)であることが分かる。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOATである。即ち、図6のステップS1において、頂点コマンドの出力データ形式を判定すると、出力データ形式は浮動小数点形式であることが分かる。
【0037】
次に図6のステップS2で、最適な頂点座標コマンド作成関数を選択する。図9は、頂点座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点座標コマンド作成関数を示す表である。上記のように図7に示す図形描画制御データ23の例では、頂点座標データの入力形式はGDC_TYPE_VTX2Xであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図9からこの組み合わせに対する適切な頂点座標コマンド作成関数を選択すると、gdcMakeVertexCoordDL_2XtoFが選択される。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_funcのデータ値には、gdcMakeVertexCoordDL_2XtoFが格納される。この様子が図10に示される。
【0038】
次に図6のステップS3で、次の頂点座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ23のvertex_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、vertex_strideの値は0となっている。この値の意味は、図11に示されている。図11に示されるように、図形描画制御データ23のvertex_strideの値が0となっているときは、頂点座標データの入力形式に依存して次の頂点座標データまでのオフセットの値が決まる。また図形描画制御データ23のvertex_strideの値が0以外となっているときは、頂点座標データの入力形式に関わらず、そのvertex_strideの値が次の頂点座標データまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、vertex_strideの値は0であり、また頂点座標データの入力形式はGDC_TYPE_VTX2Xであるので、次の頂点座標データまでのオフセットは2×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_get_offsetのデータ値には8が格納される。この様子が図12に示される。
【0039】
次に図6のステップS4で、頂点座標データの取得先アドレスの計算を行なう。頂点座標データの取得先アドレスvertex_get_ptrは、以下の式により計算することができる。
【0040】
vertex_get_ptr = vertex_ptr + (vertex_get_offset × first)
ここで、vertex_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またvertex_get_offsetは上記のステップS3で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
vertex_get_ptr = 0x00A00000 + (8 × 16) = 0x00A00080
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_get_ptrのデータ値には0x00A00080が格納される。この様子が図13に示される。
【0041】
更に図6のステップS5において、頂点カラーデータの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれる頂点カラーデータの入出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名color_formatのデータが示す頂点カラーデータの入力形式は、GDC_TYPE_RGB3X(固定小数点形式)である。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0042】
次に図6のステップS6で、最適な頂点カラーコマンド作成関数を選択する。図14は、頂点カラーデータの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切な頂点カラーコマンド作成関数を示す表である。なお図14に示されるように、カラー配列の有効又は無効を示すカラー配列フラグcolor_flag及びアルファブレンディングの有効又は無効を示すα係数フラグalpha_flagに応じて適切な頂点カラーコマンド作成関数が異なる。上記のように図7に示す図形描画制御データ23の例では、頂点カラーデータの入力形式はGDC_TYPE_RGB3Xであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図14からこの組み合わせに対する適切な頂点カラーコマンド作成関数を選択すると、gdcMakeColorDL_3Xto3Fが選択される。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_funcのデータ値には、gdcMakeColorDL_3Xto3Fが格納される。この様子が図15に示される。
【0043】
次に図6のステップS7で、次の頂点カラーデータまでのオフセットを計算する。このオフセットは、図形描画制御データ23のcolor_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、color_strideの値は0となっている。この値の意味は、図16に示されている。図16に示されるように、図形描画制御データ23のcolor_strideの値が0となっているときは、頂点カラーデータの入力形式に依存して次の頂点カラーデータまでのオフセットの値が決まる。また図形描画制御データ23のcolor_strideの値が0以外となっているときは、頂点カラーデータの入力形式に関わらず、そのcolor_strideの値が次の頂点カラーデータまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、color_strideの値は0であり、また頂点カラーデータの入力形式はGDC_TYPE_RGB3Xであるので、次の頂点カラーデータまでのオフセットは3×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_offsetのデータ値には12が格納される。この様子が図17に示される。
【0044】
次に図6のステップS8で、頂点カラーデータの取得先アドレスの計算を行なう。頂点カラーデータの取得先アドレスcolor_first_ptrは、以下の式により計算することができる。
【0045】
color_first_ptr = color_ptr + (color_offset × first)
ここで、color_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またcolor_offsetは上記のステップS7で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
color_first_ptr = 0x00B00000 + (12 × 16) = 0x00B000C0
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_first_ptrのデータ値には0x00B000C0が格納される。この様子が図18に示される。
【0046】
更に図6のステップS9において、テクスチャ座標データの入出力データ形式を判定する。この判定は、図形描画制御データ23に含まれるテクスチャ座標データの入出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名texture_formatのデータが示すテクスチャ座標データの入力形式は、GDC_TYPE_TEX2XN(固定小数点形式)である。また図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0047】
次に図6のステップS10で、最適なテクスチャ座標コマンド作成関数を選択する。図19は、テクスチャ座標データの入力データ形式と頂点コマンドの出力データ形式との各組み合わせについて、それぞれ適切なテクスチャ座標コマンド作成関数を示す表である。上記のように図7に示す図形描画制御データ23の例では、テクスチャ座標データの入力形式はGDC_TYPE_TEX2XNであり、頂点コマンドの出力形式はGDC_DL_FORMAT_FLOATである。従って、図19からこの組み合わせに対する適切なテクスチャ座標コマンド作成関数を選択すると、gdcMakeTextureCoordDL_2Xto2Fが選択される。従って、事前計算結果データ24又は図形描画制御データ23の一部において、データ名texture_funcのデータ値には、gdcMakeTextureCoordDL_2Xto2Fが格納される。この様子が図20に示される。
【0048】
次に図6のステップS11で、次のテクスチャ座標データまでのオフセットを計算する。このオフセットは、図形描画制御データ23のtexture_strideの値を参照することで求めることができる。図7に示す図形描画制御データ23の例では、texture_strideの値は0となっている。この値の意味は、図21に示されている。図21に示されるように、図形描画制御データ23のtexture_strideの値が0となっているときは、テクスチャ座標データの入力形式に依存して次のテクスチャ座標データまでのオフセットの値が決まる。また図形描画制御データ23のtexture_strideの値が0以外となっているときは、テクスチャ座標データの入力形式に関わらず、そのtexture_strideの値が次のテクスチャ座標データまでのオフセットの値となる。図7に示す図形描画制御データ23の例では、texture_strideの値は0であり、またテクスチャ座標データの入力形式はGDC_TYPE_TEX2XNであるので、次のテクスチャ座標データまでのオフセットは2×4となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_offsetのデータ値には8が格納される。この様子が図22に示される。
【0049】
次に図6のステップS12で、テクスチャ座標データの取得先アドレスの計算を行なう。テクスチャ座標データの取得先アドレスtexture_first_ptrは、以下の式により計算することができる。
【0050】
texture_first_ptr = texture_ptr + (texture_offset × first)
ここで、texture_ptr及びfirstは図形描画制御データ23に定義されるデータであり、またtexture_offsetは上記のステップS11で求めたオフセット値である。図7に示す図形描画制御データ23の例の場合、
texture_first_ptr = 0x00C00000 + (8 × 16) = 0x00C00080
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_first_ptrのデータ値には0x00C00080が格納される。この様子が図23に示される。
【0051】
更に図6のステップS13で、頂点コマンドの出力形式を判定する。この判定は、図形描画制御データ23に含まれる頂点コマンドの出力データ形式を示すデータを参照することにより行なわれる。図7に示す図形描画制御データ23の例において、データ名DL_formatのデータが示す頂点コマンドの出力形式は、GDC_DL_FORMAT_FLOAT(浮動小数点形式)である。
【0052】
次に図6のステップS14で、最初の頂点座標コマンドの格納アドレスを計算する。最初の頂点座標コマンドの格納アドレスvertex_set_ptrは、描画領域設定(4ワード)及び図形描画開始コマンド(1ワード)のサイズ分を、描画コマンド格納領域の先頭アドレスDL_ptrに加算した位置となる。但し図形描画制御データのtexture_flagがGDC_TRUEの場合は、テクスチャ画像アドレス、幅、高さの設定コマンドを出力する必要があるので、それらのコマンドのサイズ分(6ワード)のオフセットも加算する。図7に示す図形描画制御データ23の例の場合、
vertex_set_ptr = 0x44000000 + ((4 + 1 + 6) × 4) = 0x4400002C
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_set_ptrのデータ値には0x4400002Cが格納される。この様子が図24に示される。
【0053】
次に図6のステップS15で、最初の頂点カラーコマンドの格納アドレスを計算する。この最初の頂点カラーコマンドの格納アドレスcolor_set_ptrは、上記のステップS14で求めた頂点座標コマンドの格納アドレスに、ステップS13で求めた頂点コマンドの出力データ形式に応じた頂点座標コマンドサイズを加算した値となる。図25は、各頂点座標コマンド作成関数に対する頂点座標コマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、出力データ形式はGDC_DL_FORMAT_FLOAT(浮動小数点形式)であり、頂点座標コマンド作成関数は2XtoFである。従って、頂点座標コマンドサイズは3ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
color_set_ptr = 0x4400002C + (3 × 4) = 0x44000038
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名color_set_ptrのデータ値には0x44000038が格納される。この様子が図26に示される。
【0054】
次に図6のステップS16で、最初のテクスチャ座標コマンドの格納アドレスを計算する。この最初のテクスチャ座標コマンドの格納アドレスtexture_set_ptrは、上記のステップS15で求めた頂点カラーコマンドの格納アドレスに、ステップS13で求めた頂点コマンドの出力データ形式に応じた頂点カラーコマンドサイズを加算した値となる。図27は、各頂点カラーコマンド作成関数に対する頂点カラーコマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、出力データ形式はGDC_DL_FORMAT_FLOAT(浮動小数点形式)であり、頂点カラーコマンド作成関数は3Xto3Fである。従って、頂点カラーコマンドサイズは3ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
texture_set_ptr = 0x44000038 + (3 × 4) = 0x44000044
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名texture_set_ptrのデータ値には0x44000044が格納される。この様子が図28に示される。
【0055】
次に図6のステップS17で、次の頂点コマンド格納アドレスまでのオフセットを計算する。次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetは、頂点座標コマンドのサイズ、頂点カラーコマンドのサイズ、テクスチャ座標コマンドのサイズを加算した値となる。図29は、各テクスチャ座標コマンド作成関数に対するテクスチャ座標コマンドサイズの値を示す表である。図7に示す図形描画制御データ23の例の場合、テクスチャ座標コマンド作成関数は2Xto2Fである。従って、テクスチャ座標コマンドサイズは2ワードとなる。このようにして、図7に示す図形描画制御データ23の例の場合、
vertex_set_offset = (3 + 3 + 2) × 4 = 32
となる。従って、事前計算結果データ24(又は図形描画制御データ23の一部)において、データ名vertex_set_offsetのデータ値には32が格納される。この様子が図30に示される。
【0056】
図31は、図5のステップS3に示す図形描画データ作成処理の詳細を示すフローチャートである。図31に示す各ステップは、図1のCPU10により実行される。まずステップS1において、事前計算結果データ24(図形描画制御データ23の一部であってよい)を参照する。図32は、図7に示す図形描画制御データ23の例から求めた事前計算結果データ24を示す図である。便宜上、DL_formatも事前計算結果データ24の一部として示してある。なお事前計算結果データ24だけではなく、如何に説明するように、図形描画制御データ23の他のデータも参照する。
【0057】
図31のステップS2では、各種のコマンドを出力してVRAM16(図1参照)に格納する。具体的には、図形描画制御データ23のdraw_ptrとdraw_strideとを参照して、描画領域を設定するコマンドをDL_ptrが示すアドレスから格納する。なおdraw_ptrは矩形の描画領域の左上コーナーの位置を示すアドレスであり、draw_strideは描画領域のストライド(即ち矩形の描画領域の水平方向の長さ)を示すデータである。またtexture_flagが有効な場合は、図形描画制御データ23のimage_ptr、image_width、image_heightを参照し、テクスチャ画像の設定コマンドを作成し、描画領域を設定するコマンドに続けて格納する。最後に、図形描画開始コマンドGDC_TRIANGLESを作成し格納する。図33は、VRAM16のメモリ空間において、DL_ptrが示すアドレスから各種の設定コマンド及び図形描画開始コマンドを格納した状態を例示する図である。
【0058】
次に、図31のステップS3で、事前計算結果データ24に指定される頂点座標コマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、頂点座標コマンド作成関数としてgdcMakeVertexCoordDL_2XtoFが指定されているので、この頂点座標コマンド作成関数を呼び出す。次に、図31のステップS4で、事前計算結果データ24に指定される頂点カラーコマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、頂点カラーコマンド作成関数としてgdcMakeColorDL_3Xto3Fが指定されているので、この頂点カラーコマンド作成関数を呼び出す。次に、図31のステップS5で、事前計算結果データ24に指定されるテクスチャ座標コマンド作成関数を呼び出す。図32に示す事前計算結果データ24の例では、テクスチャ座標コマンド作成関数としてgdcMakeTextureCoordDL_2Xto2Fが指定されているので、このテクスチャ座標コマンド作成関数を呼び出す。最後にステップS6で、図形描画終了コマンドを出力する。これにより、図形描画終了を示すデータを、VRAM16中の図形データ22の一連の頂点コマンドの最後に配置する。
【0059】
図34は、図32に示す事前計算結果データ24の例の場合に頂点座標コマンド作成関数を呼び出す際の引数を示す図である。図31のステップS3において、頂点座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図34に示す各データ値を関数の引数に指定する。
【0060】
図35は、頂点座標コマンド作成関数における頂点座標コマンド作成処理の詳細を示すフローチャートである。図35に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、頂点座標コマンドを作成する。図32に示す事前計算結果データ24の例では、vertex_get_ptrから読み出した固定小数点形式の頂点座標データX及びYを浮動小数点形式に変換する。更に、変換後の頂点座標データX及びYに固定値の頂点コマンド(図2のG_Vertexコマンド)を付加して、頂点座標コマンド格納先vertex_set_ptrに保存する。ステップS3で、現在の頂点座標コマンドの格納アドレスvertex_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たな頂点座標コマンドの格納アドレスを求める。ステップS4で、現在の頂点座標データの取得先アドレスvertex_get_ptrに、次の頂点座標データまでのオフセットvertex_get_offsetを加算して、新たな頂点座標データの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図35に示す処理により、図形データ22の頂点座標データから図形描画データ20の頂点座標コマンド部分が作成される。
【0061】
図36は、頂点座標コマンド作成関数における頂点座標コマンド作成処理を模式的に示す図である。頂点座標データの先頭アドレスvertex_ptrから所定個数目の頂点(firstで示す頂点データ番号)の位置がvertex_get_ptrで示される。そのvertex_get_ptrを開始点として、vertex_get_offset間隔で並ぶ固定小数点形式のデータX(fixed X1〜X6)及びY(fixed Y1〜Y6)を読み出し、浮動小数点形式のデータX(float X1〜X6)及びY(float Y1〜Y6)に変換する。変換後の浮動小数点形式のデータX及びYが、vertex_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。
【0062】
図37は、図32に示す事前計算結果データ24の例の場合に頂点カラーコマンド作成関数を呼び出す際の引数を示す図である。図31のステップS4において、頂点カラーコマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図37に示す各データ値を関数の引数に指定する。
【0063】
図38は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理の詳細を示すフローチャートである。図38に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、頂点カラーコマンドを作成する。図32に示す事前計算結果データ24の例では、color_first_ptrから読み出した固定小数点形式の頂点カラーデータRGBを浮動小数点形式に変換する。更に、変換後の頂点カラーデータRGBを、頂点カラーコマンド格納先color_set_ptrに保存する。ステップS3で、現在の頂点カラーコマンドの格納アドレスcolor_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たな頂点カラーコマンドの格納アドレスを求める。ステップS4で、現在の頂点カラーデータの取得先アドレスcolor_first_ptrに、次の頂点カラーデータまでのオフセットcolor_offsetを加算して、新たな頂点カラーデータの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図38に示す処理により、図形データ22の頂点カラーデータから図形描画データ20の頂点カラーコマンド部分が作成される。
【0064】
図39は、頂点カラーコマンド作成関数における頂点カラーコマンド作成処理を模式的に示す図である。頂点カラーデータの先頭アドレスcolor_ptrから所定個数目(firstで示す頂点データ番号)の頂点の位置がcolor_first_ptrで示される。そのcolor_first_ptrを開始点として、color_offset間隔で並ぶ固定小数点形式のデータR(fixed R1〜R6)、G(fixed G1〜G6)、B(fixed B1〜B6)を読み出し、浮動小数点形式のデータRGBに変換する。変換後の浮動小数点形式のデータR(float R1〜R6)、G(float G1〜G6)、B(float B1〜B6)が、color_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。
【0065】
図40は、図32に示す事前計算結果データ24の例の場合にテクスチャ座標コマンド作成関数を呼び出す際の引数を示す図である。図31のステップS5において、テクスチャ座標コマンド作成関数を呼び出す際には、コマンド作成処理を制御するためのパラメータとして、図40に示す各データ値を関数の引数に指定する。
【0066】
図41は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理の詳細を示すフローチャートである。図41に示す各処理は、CPU10により実行される。まずステップS1で、頂点カウント値cntを1に初期設定する。ステップS2で、テクスチャ座標コマンドを作成する。図32に示す事前計算結果データ24の例では、texture_first_ptrから読み出した固定小数点形式のテクスチャ座標データX及びYを浮動小数点形式に変換する。更に、変換後のテクスチャ座標データX及びYを、テクスチャ座標コマンド格納先texture_set_ptrに保存する。ステップS3で、現在のテクスチャ座標コマンドの格納アドレスtexture_set_ptrに、次の頂点コマンド格納アドレスまでのオフセットvertex_set_offsetを加算して、新たなテクスチャ座標コマンドの格納アドレスを求める。ステップS4で、現在のテクスチャ座標データの取得先アドレスtexture_first_ptrに、次のテクスチャ座標データまでのオフセットtexture_offsetを加算して、新たなテクスチャ座標データの取得先アドレスを求める。ステップS5で、頂点カウント値cntが描画すべき頂点データ数count以上であるか否かを判定する。頂点カウント値cntが頂点データ数countよりも小さい場合には、ステップS6で頂点カウント値cntを1増加し、ステップS2に戻り以降の処理を繰り返す。以上の図41に示す処理により、図形データ22のテクスチャ座標データから図形描画データ20のテクスチャ座標コマンド部分が作成される。
【0067】
図42は、テクスチャ座標コマンド作成関数におけるテクスチャ座標コマンド作成処理を模式的に示す図である。テクスチャ座標データの先頭アドレスtexture_ptrから所定個数目の頂点(firstで示す頂点データ番号)の位置がtexture_first_ptrで示される。そのtexture_first_ptrを開始点として、texture_offset間隔で並ぶ固定小数点形式のデータS(fixed S1〜S6)及びT(fixed T1〜T6)を読み出し、浮動小数点形式のデータS(float S1〜S6)及びT(float T1〜T6)に変換する。変換後の浮動小数点形式のデータS及びTが、texture_set_ptrを開始点として、vertex_set_offset間隔でVRAM16に格納される。なおここでS及びTは、テクスチャ画像の2つの座標を示す。
【0068】
図43は、以上の処理によりVRAM16のメモリ空間に作成された図形描画データ20の構成を示す図である。浮動小数点形式で表現した頂点座標コマンドと、浮動小数点形式で表現した頂点カラーコマンドと、浮動小数点形式で表現したテクスチャ座標コマンドとを含む各頂点に関するデータが、複数の頂点(この例では6個の頂点)について並べられている。また図形描画データ20の終端には、図形描画終了コマンドが配置されている。
【0069】
図44は、従来の図形描画データの作成処理を示すフローチャートである。ステップS1で頂点番号を初期化する。ステップS2乃至S5が頂点座標データに関する処理部分であり、頂点座標コマンド格納アドレスの計算、頂点座標データ取得先アドレスの計算、頂点座標データの入出力データ形式の判定、及び頂点座標コマンドの作成が実行される。ステップS6乃至S9が頂点カラーデータに関する処理部分であり、頂点カラーコマンド格納アドレスの計算、頂点カラーデータ取得先アドレスの計算、頂点カラーデータの入出力データ形式の判定、及び頂点カラーコマンドの作成が実行される。ステップS10乃至S13がテクスチャ座標データに関する処理部分であり、テクスチャ座標コマンド格納アドレスの計算、テクスチャ座標データ取得先アドレスの計算、テクスチャ座標データの入出力データ形式の判定、及びテクスチャ座標コマンドの作成が実行される。ステップS14において全頂点の処理を終了したか否かを判定する。全頂点の処理が終了していない場合には、ステップS15で次の頂点に移動し、その後ステップS2に戻り以降の処理を繰り返す。このように従来の図形描画データの作成処理では、各頂点毎にデータ形式の判定及びアドレス計算処理が実行されるために効率が良くない。
【0070】
図45は、図44に示す従来の図形描画データの作成処理における処理負荷の値を示す表である。ここでNは、描画対象の頂点の数である。各処理についての処理負荷の値は、整数加算処理の負荷を1とした場合の相対的な値を示している。図45から分かるように、図44に示す従来の図形描画データの作成処理においては、描画対象の頂点数Nとした場合に、合計で38N+1の処理負荷がCPU10にかかることになる。
【0071】
図46は、図5のステップS2及びS3に示す図形描画データの作成処理における処理負荷の値を示す表である。図46から分かるように、図5に示す本実施例の図形描画データ作成処理においては、描画対象の頂点数Nとした場合に、合計で27N+117の処理負荷がCPU10にかかることになる。従って頂点数Nが大きい場合には、本実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約30%の処理負荷の低減が可能となる。
【0072】
但し頂点数が少ない場合には、図5のステップS2の事前処理にかかる処理負荷のために、本実施例の図形描画データ作成処理よりも従来の図形描画データ作成処理の方が、処理負荷が小さくなることが考えられる。そこで頂点数の大小に応じて、本実施例の図形描画データ作成処理と従来の図形描画データ作成処理とを切り替えることが考えられる。
【0073】
図47は、2つの図形描画処理を選択的に切り替えて実行する実施例の処理を示すフローチャートである。ステップS1で、描画対象の図形を構成する頂点数が閾値以上であるか否かを判定する。頂点数が閾値以上の場合には、ステップS2で、図5に示す本実施例の図形描画データ作成処理を実行する。頂点数が閾値よりも小さい場合には、ステップS3で、図44に示す従来の図形描画データの作成処理を実行する。
【0074】
図48は、図47のステップS1の判定処理で用いる閾値を設定するフローチャートである。このフローチャートでは、閾値変更関数を呼び出し、閾値となるべき頂点数をその引数に与える。これにより、引数として与えた数に、閾値を設定する。具体的な閾値の値は、CPUやメモリ等のハードウェアに依存して異なるので、このような閾値変更関数(閾値設定関数)を用いることにより、システム毎に適宜閾値を設定することが好ましい。例えば種々の頂点数の複数のテスト図形データに対して、従来の図形描画データ作成処理と本実施例の図形描画データ作成処理との両方を用いて図形描画データを生成し、それぞれの時間や処理負荷を調べることにより、適切な閾値を知ることができる。
【0075】
図49は、図形描画システムの変形例を示す図である。図49に示す図形描画システムは、CPU(Central Processing Unit)10A、ホストインターフェース11、図形描画処理装置12、表示装置13、データ格納ユニット14、メインメモリ15、及びVRAM(Video Random Access Memory)16を含む。図1の図形描画システムと異なり、CPU10Aは、複数のコア10a、10b、10cを含む構成となっている。この複数のコア10a、10b、及び10cにより、頂点座標コマンド作成処理、頂点カラーコマンド作成処理、及びテクスチャ座標コマンド作成処理をそれぞれ並行して実行する。
【0076】
図50は、図49に示すマルチコアCPUを用いた場合の図形描画処理を示すフローチャートである。図50に示すフローチャートは、図5に示すフローチャートと比較して、ステップS3−1乃至3−3の部分が異なる。図50に示すフローチャートでは、頂点座標コマンドを作成するステップS3−1の処理と、頂点カラーコマンドを作成するステップS3−2の処理と、テクスチャ座標コマンドを作成するステップS3−3の処理とが、複数のコアにより並行して実行される。この構成により、更に処理効率を向上させることが可能となる。
【0077】
図51は、図50のステップS2及びS3−1乃至3−3に示す図形描画データの作成処理における処理負荷の値を示す表である。図51から分かるように、図51に示す実施例の図形描画データ作成処理においては、描画対象の頂点数Nとした場合に、合計で9N+117の処理負荷がCPU10Aにかかることになる。従って頂点数Nが大きい場合には、この実施例の図形描画データ作成処理の方が、処理負荷が大幅に小さくなり有利である。具体的には、従来技術の処理と比較して約75%の処理負荷の低減が可能となる。
【0078】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【0079】
なお本発明は以下の内容を含むものである。
(付記1)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
(付記2)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする付記1記載の描画データ処理方法。
(付記3)
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記2記載の描画データ処理方法。
(付記4)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行することを特徴とする付記1記載の描画データ処理方法。
(付記5)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第3のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画システム。
(付記6)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする付記5記載の図形描画システム。
(付記7)
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする付記6記載の図形描画システム。
(付記8)
前記演算処理ユニットは、第1の演算処理ユニットと第2の演算処理ユニットとを含み、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2の演算処理ユニットにより実行することを特徴とする付記5記載の図形描画システム。
(付記9)
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記5記載の図形描画システム。
(付記10)
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成するための図形描画データ作成プログラムであって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
(付記11)
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行させ、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行させることを特徴とする付記10記載の図形描画データ作成プログラム。
(付記12)
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする付記10記載の図形描画データ作成プログラム。
【符号の説明】
【0080】
10 CPU
11 ホストインターフェース
12 図形描画処理装置
13 表示装置
14 データ格納ユニット
15 メインメモリ
16 VRAM
【特許請求の範囲】
【請求項1】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
【請求項2】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする請求項1記載の描画データ処理方法。
【請求項3】
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項2記載の描画データ処理方法。
【請求項4】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行することを特徴とする請求項1記載の描画データ処理方法。
【請求項5】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第3のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画システム。
【請求項6】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする請求項5記載の図形描画システム。
【請求項7】
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項6記載の図形描画システム。
【請求項8】
前記演算処理ユニットは、第1の演算処理ユニットと第2の演算処理ユニットとを含み、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2の演算処理ユニットにより実行することを特徴とする請求項5記載の図形描画システム。
【請求項9】
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする請求項5記載の図形描画システム。
【請求項10】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成するための図形描画データ作成プログラムであって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
【請求項1】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、描画処理装置へ入力する第3のリストを生成する描画データ処理方法であって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を含み演算処理ユニットにより実行することを特徴とする描画データ処理方法。
【請求項2】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする請求項1記載の描画データ処理方法。
【請求項3】
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項2記載の描画データ処理方法。
【請求項4】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、第2の演算処理ユニットにより実行することを特徴とする請求項1記載の描画データ処理方法。
【請求項5】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成する図形描画システムであって、
演算処理ユニットと、
プログラムを格納する格納ユニットと、
前記第3のリストに基づいて画像を描画する描画処理装置と、
メモリと
を含み、前記格納ユニットに格納される前記プログラムは、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を前記演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画システム。
【請求項6】
前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1のデータ生成処理に対応する第1の関数を呼び出すことにより実行され、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2のデータ生成処理に対応する第2の関数を呼び出すことにより実行されることを特徴とする請求項5記載の図形描画システム。
【請求項7】
前記第1の関数は、第1のオフセットが示す間隔で前記第1のリストから前記第1のデータを前記複数の頂点について読み出す段階を更に含み、前記第2の関数は、第2のオフセットが示す間隔で前記第2のリストから前記第2のデータを前記複数の頂点について読み出す段階を更に含むことを特徴とする請求項6記載の図形描画システム。
【請求項8】
前記演算処理ユニットは、第1の演算処理ユニットと第2の演算処理ユニットとを含み、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し前記生成した第1のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第1の演算処理ユニットにより実行し、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む段階は、前記第2の演算処理ユニットにより実行することを特徴とする請求項5記載の図形描画システム。
【請求項9】
前記格納ユニットに格納される前記プログラムは、
前記複数の頂点のうちの着目頂点について、前記第1データ形式と前記第3データ形式とに応じた第3のデータ生成処理を選択し、
前記第3のデータ生成処理を前記第1のリストの前記着目頂点の前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記着目頂点について生成して前記メモリに格納し、
前記着目頂点について、前記第2データ形式と前記第4データ形式とに応じた第4のデータ生成処理を選択し、
前記第4のデータ生成処理を前記第2のリストの前記着目頂点の前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記着目頂点について生成して前記メモリに格納する
各段階を前記複数の頂点の各々について前記演算処理ユニットに順次実行させる第2のプログラムコードを更に含み、前記複数の頂点の数に応じて前記第1のプログラムコードと前記第2のプログラムコードとの何れか一方を前記演算処理ユニットに実行させることを特徴とする請求項5記載の図形描画システム。
【請求項10】
各頂点に関する第1データ形式の第1のデータが複数の頂点について並べられた第1のリストと各頂点に関する第2データ形式の第2のデータが前記複数の頂点について並べられた第2のリストとを含む複数のリストが与えられたときに、前記第1データ形式と同一又は異なる第3データ形式で表現した前記第1のデータと前記第2データ形式と同一又は異なる第4データ形式で表現した前記第2のデータとを含む各頂点に関するデータを前記複数の頂点について並べることにより、第3のリストを生成するための図形描画データ作成プログラムであって、
前記第1データ形式と前記第3データ形式とに応じた第1のデータ生成処理を選択し、
前記第2データ形式と前記第4データ形式とに応じた第2のデータ生成処理を選択し、
少なくとも前記第3データ形式と前記第4データ形式とに応じて前記第3のリストにおける各頂点間のメモリアドレス距離を示すオフセットを計算し、
前記第1のデータ生成処理を前記第1のリストの前記第1のデータに対して実行することにより、前記第3データ形式で表現した前記第1のデータを前記複数の頂点について生成し、前記生成した第1のデータを前記オフセットが示す間隔でメモリに書き込み、
前記第2のデータ生成処理を前記第2のリストの前記第2のデータに対して実行することにより、前記第4データ形式で表現した前記第2のデータを前記複数の頂点について生成し、前記生成した第2のデータを前記オフセットが示す間隔で前記メモリに書き込む
各段階を演算処理ユニットに実行させる第1のプログラムコードを含むことを特徴とする図形描画データ作成プログラム。
【図1】
【図2】
【図3A】
【図3B】
【図3C】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【図2】
【図3A】
【図3B】
【図3C】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図47】
【図48】
【図49】
【図50】
【図51】
【公開番号】特開2010−277304(P2010−277304A)
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2009−128800(P2009−128800)
【出願日】平成21年5月28日(2009.5.28)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願日】平成21年5月28日(2009.5.28)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]