"頂点データへの参照値がメモリエレメントに配列として記憶されるインデックスバッファと,前記頂点データから構成されるプリミティブ列の演算処理を少なくとも2ステージ以上の処理で行うジオメトリシェーダとを備え,前記ジオメトリシェーダのステージでは,当該ステージ以前のステージにおける出力結果を再利用することができる画像処理装置であって,前記インデックスバッファに記録される前記プリミティブ列と同様の前記頂点データから構成されたプリミティブ列が,当該インデックスバッファに既に存在するか否かを判定するプリミティブ判定手段と,前記プリミティブ判定手段により,前記プリミティブ列が存在しないと判定された場合には,前記インデックスバッファに前記プリミティブ列を構成する頂点データへの参照値を記憶するとともに,当該プリミティブ列の先頭データの直前に,当該プリミティブ列のサイズをS値として記憶するプリミティブ記憶手段と,前記プリミティブ判定手段により,前記プリミティブ列が既に存在すると判定された場合には,当該プリミティブ列が現在位置よりいくつ前のプリミティブ列であるかを示す参照情報を,負の整数にて記憶する参照情報設定手段と,前記インデックスバッファをフェッチングし,フェッチされた値に,前記S値又は前記参照情報のどちらが含まれるかを判断するインデックス値判定手段と,前記インデックス値判定手段により,前記S値が含まれると判定された場合には,当該S値の一つ後方の記録要素からS個分の前記頂点データを取得して,当該頂点データから構成されるプリミティブ列に対して,演算処理を行うジオメトリシェーダと,前記ジオメトリシェーダにおける出力情報をキャッシュバッファに追加して記憶するキャッシュ手段と,前記インデックス値判定手段により,前記参照情報が含まれると判断された場合には,当該参照情報に含まれる参照先のプリミティブ列に対する前記ジオメトリシェーダの前記出力情報を,前記キャッシュバッファからフェッチして利用する再利用手段と,を備えるプリミティブ列の演算処理を行う画像処理装置。頂点データへの参照値がメモリエレメントに配列として記憶されるインデックスバッファと,前記頂点データから構成されるプリミティブ列の演算処理を少なくとも2ステージ以上の処理で行うジオメトリシェーダとを備え,前記ジオメトリシェーダのステージでは,当該ステージ以前のステージにおける出力結果を再利用することができる画像処理装置であって,前記インデックスバッファに記録される前記プリミティブ列と同様の前記頂点データから構成されたプリミティブ列が,当該インデックスバッファに既に存在するか否かを判定するプリミティブ判定手段と,前記プリミティブ判定手段により,前記プリミティブ列が存在しないと判定された場合には,前記インデックスバッファに前記プリミティブ列を構成する頂点データを記憶し,当該プリミティブ列の先頭データの直前に,当該プリミティブ列を識別可能なプリミティブIDを含む定義コマンドを記録するプリミティブ記憶手段と,前記プリミティブ判定手段により,前記プリミティブ列が存在すると判定された場合には,前記定義コマンドへの参照コマンドを記録するとともに,前記インデックスバッファに記録された前記定義コマンドに含まれる前記プリミティブIDにより定義されるプリミティブ列の情報を取り除くプリミティブ参照情報設定手段と,前記インデックスバッファをフェッチングし,フェッチされた値に,前記定義コマンド又は前記参照コマンドのどちらが含まれるかを判断するインデックス値判定手段と,前記インデックス値判定手段により,前記定義コマンドが含まれると判断された場合に,前記プリミティブ記憶手段により定義された前記プリミティブ列の頂点データを取得し,当該プリミティブ列に対して演算処理を行うジオメトリシェーダと,キャッシュバッファに前記定義コマンドと同様の識別子が存在する場合にはこれを取り除き,前記ジオメトリシェーダにおける出力情報を,当該キャッシュバッファに,前記定義コマンドと関連付けて記憶するキャッシュ手段と,前記インデックス値判定手段により,前記参照コマンドが含まれると判断された場合には,当該参照コマンドによって前記定義コマンドを参照し,当該定義コマンドと関連付けられた前記プリミティブ列に対する前記ジオメトリシェーダの処理の出力情報を,前記キャッシュバッファからフェッチして利用する再利用手段と,を備えるプリミティブ列の演算処理を行う画像処理装置。請求項2に記載のプリミティブ列の演算処理を行う画像処理装置において,前記プリミティブ列は可変サイズのプリミティブであり,前記プリミティブ記憶手段は,前記定義コマンドとともに,当該定義コマンドによって宣言されたプリミティブ列の頂点数を同じメモリエレメントに記憶するプリミティブ列の演算処理を行う画像処理装置。請求項1~3のいずれか一項に記載のプリミティブ列の演算処理を行う画像処理装置において,前記ジオメトリシェーダの出力情報を再びジオメトリシェーダへの入力情報として送信し,前記出力情報に含まれる前記プリミティブ列の処理結果を利用した処理を行うプリミティブ列の演算処理を行う画像処理装置。請求項4に記載のプリミティブ列の演算処理を行う画像処理装置において,前記ジオメトリシェーダからの出力情報を再度前記ジオメトリシェーダへの入力情報として渡すまでの間に,複数のプリミティブ列を統合または分割し,新たなプリミティブ列として前記キャッシュバッファに記録するプリミティブ再設定手段を備えるプリミティブ列の演算処理を行う画像処理装置。請求項1~5のいずれか一項に記載のプリミティブ列の演算処理を行う画像処理装置において,前記キャッシュバッファに対して前記ジオメトリシェーダの出力情報を記録させる場合は,当該キャッシュバッファに対し,FIFOにて,前記出力情報が記憶されるプリミティブ列の演算処理を行う画像処理装置。しかしながら,様々なデータ長のプリミティブを処理するパイプラインにおいては,シェーダ,特にジオメトリシェーダにおいて,プリミティブ単位での処理が重複する頂点データを利用するアルゴリズムが発生する。また,ジオメトリシェーダでの処理を二回以上行う場合もあるが,このような場合であっても,一回目のジオメトリシェーダのステージでの出力結果を,二回目のステージで再利用するといった状況が発生しうる。例えば,一回目のジオメトリシェーダのステージにおいて出力されたプリミティブを個別に二回目のステージで処理するではなく,複数のプリミティブを一つにまとめて,一つのプリミティブとして,ジオメトリシェーダにおいて再び演算を行いたい場合などである。このような場合,既に処理を行ったプリミティブに対して,同様の処理を繰り返し行うことなり,処理の速度の観点や,メモリ容量の抑制という観点においても好ましくない。そこで,本発明は,プリミティブを処理するためのパイプラインを有する画像処理装置において,計算コストの抑制と処理の高速化を達成することを目的とする。このような課題を解決するために,本発明においては,次のような手段を採用することができる。第一の手段としては,この画像処理装置は,頂点データへの参照値がメモリエレメントに配列として記憶されるインデックスバッファと,頂点データから構成されるプリミティブ列の演算処理を行う少なくとも2ステージ以上の処理が行われるジオメトリシェーダとを備え,前記ジオメトリシェーダのステージではその以前のステージにおける出力結果を再利用する構成が採られている。そして,インデックスバッファにおいて記録される前記プリミティブ列と同様の前記頂点データから構成されたプリミティブ列が既に存在するか否かを判定するプリミティブ判定手段とを備えている。ここで,プリミティブ判定手段により,前記プリミティブ列が存在しないと判定された場合には,前記インデックスバッファに前記プリミティブ列を構成する頂点データへの参照値を記憶するとともに,記録した前記プリミティブ列の先頭データの直前に同プリミティブ列のサイズをS値として記憶するプリミティブ記憶手段による処理が実行される。一方,前記プリミティブ判定手段により,前記プリミティブ列が存在すると判定された場合には,前記インデックスバッファに既に記憶されたプリミティブ列が現在位置よりいくつ前のプリミティブ列であるかを示す参照情報を負の整数にて記憶する参照情報設定手段による処理が実行される。この処理の後に,前記インデックスバッファをフェッチングし,フェッチされた値に前記S値,あるいは前記参照情報のいずれが含まれるかを判断するインデックス値判定手段が実行される。この前記インデックス値判定手段により,前記S値が含まれると判定される場合には,同S値の一つ後方の記録要素からS個分の前記頂点データを取得して,同頂点データから構成されるプリミティブ列に対して演算処理を行うジオメトリシェーダと,前記ジオメトリシェーダにおける出力情報をキャッシュバッファに追加して記憶するキャッシュ手段とによる処理が実行される。一方,前記インデックス値判定手段により,前記参照情報が含まれると判断される場合には,同参照情報に含まれる参照先のプリミティブ列の前記ジオメトリシェーダでの処理の前記出力情報を前記キャッシュバッファからフェッチして利用する再利用手段とが実行される。また,第2の解決手段として,次のような構成を採ることもできる。すなわち,前記プリミティブ判定手段により,前記プリミティブ列が存在しないと判定された場合には,前記インデックスバッファに前記プリミティブ列を構成する頂点データを記憶し,記録した前記プリミティブ列の先頭データの直前にプリミティブ列を識別可能なプリミティブIDを含む定義コマンドを記録するプリミティブ記憶手段とによる処理が実行される。一方,前記プリミティブ判定手段により,前記プリミティブ列が存在することと判定された場合には,前記定義コマンドを参照する参照コマンドを記録するとともに,前記インデックスバッファに記録されている前記定義コマンドに含まれる前記プリミティブIDにより定義される前記プリミティブ列の情報を取り除くプリミティブ参照情報設定手段による処理が実行される。そして,前記インデックスバッファをフェッチングし,フェッチされた値に定義コマンド,あるいは前記参照コマンドのいずれが含まれるかを判断するインデックス値判定手段により判定が行われ,このインデックス値判定手段により,前記定義コマンドが含まれると判断される場合には,前記プリミティブ記憶手段により定義された前記プリミティブ列の頂点データを取得し,当該プリミティブ列に対して演算処理を行うジオメトリシェーダと,キャッシュバッファより前記定義コマンドと同様の識別子が存在する場合にはこれを取り除き,前記ジオメトリシェーダにおける出力情報を当該キャッシュバッファに前記定義コマンドと関連付して記憶するキャッシュ手段とによる処理が実行される。一方,前記インデックス値判定手段により,前記参照コマンドが含まれると判断される場合には,同参照コマンドによって参照される前記定義コマンドによって関連づけられた前記プリミティブ列の前記ジオメトリシェーダにおける処理の出力情報を前記キャッシュバッファからフェッチして利用する再利用手段とによる処理が実行される。また,この第2の解決手段の場合において,前記プリミティブ列は可変サイズのプリミティブであり,前記プリミティブ記憶手段は,前記定義コマンドとともに,同定義コマンドによって宣言されたプリミティブ列の頂点数を同じメモリエレメントに記憶する構成の場合もある。更には,前記ジオメトリシェーダの出力情報を再度ジオメトリシェーダへの入力情報として送信し,再び処理を実行しても良い。また,前記ジオメトリシェーダからの出力情報を再度ジオメトリシェーダへの入力情報として渡すまでの間に,複数のプリミティブ列を統合,または分割して新たにプリミティブ列として前記キャッシュバッファに記録するプリミティブ再設定手段を備えても良い。また,前記プリミティブキャッシュに対して前記ジオメトリシェーダの出力情報を記録させる場合は,当該キャッシュバッファに対してFIFOにて前記出力情報が記憶されるようにしてもよい。本発明によれば,プリミティブを処理するためのパイプラインを有する画像処理装置において,計算コストの抑制と処理の高速化とを行うことができるようになる。以下,発明を実施するための形態について説明する。本発明は,以下に説明する実施態様に限定されるものではない。本発明は,以下に説明する実施態様から当業者に自明な範囲で適宜修正される範囲を含む。本発明における3D画像は,プリミティブを用いて表現されるものである。プリミティブはジオメトリの基本単位であり,3Dグラフィックスの場合,プリミティブはポリゴン典型的には三角形,法線ベクトル,点などを含むことが通常である。プリミティブが三角形の場合,各三角形は3つの頂点によって画定され,各線は2つの頂点によって画定される。各頂点が有するデータは,様々な属性,例えば,空間座標,明度,又はテクスチャ座標と関連付けられている。本明細書において,シェーダは,一般に,シェーディングを実行するGPUのハードウェアサブユニットを参照するために使用されるものである。また,シェーダは,シェーディングを実行するために使用されるメモリ例えばレジスタ記憶装置にロードされ,GPUにダウンロードされる命令セット,又はトークンを参照するために使用され得る。シェーダプログラムは,一般に,グラフィックスパイプラインに存在し実行するプログラム又はプロセスを参照することができ,画面上の最終的な画像の表面特性,又は3次元画面環境におけるオブジェクトの決定/定義を支援するために使用される。シェーダは,それらの特定のタスクを実行するために,毎秒十億以上の計算を実行可能である。図1は,画像処理装置であるGPU100に関して3次元グラフィックスパイプラインのブロック図を示す。頂点シェーダ110は,三角形や線のようなプリミティブを包含する形状データについて,頂点処理を実行する。例えば,頂点シェーダ110は,頂点に対する明るさなどを計算し,形状に関してブレンディングを実行することができる。また,頂点シェーダ110は,各頂点の座標と属性の成分値例えばx,y,z,wを決定し,三角形セットアップ,及び深さグラディエントセットアップユニット120に頂点座標を提供し,キャッシュバッファ130に頂点属性成分値を提供するものであってもよい。キャッシュバッファ130は,頂点とプリミティブについて,属性成分値やその他のデータを格納する。ジオメトリシェーダ140は,頂点シェーダ110で処理された頂点データから構成されるプリミティブ全体または隣接したプリミティブの情報を持つプリミティブを,入力情報として受け取り,頂点データの増減や頂点データから新たなプリミティブを生成するといったプリミティブ単位での処理を行う部位である。また,このジオメトリシェーダ140は,2以上のステージに分割されて処理が行われる場合が存在する。例えば,複数のプリミティブを加工して,その出力結果を一つのプリミティブとしてまとめて取り扱い,ジオメトリシェーダにおいて再度の加工を行いたい場合などである。このような処理が行われる場合,ジオメトリシェーダ140の出力情報は,一度キャッシュバッファ130に記録され,このキャッシュバッファ130に記録された出力情報が,再び,ジオメトリシェーダ140の次のステージへの入力情報となる。本実施形態は,特にこのような場合において,有効な技術である。詳細については後述する。ラスタライザ150は,各プリミティブをピクセルに分解し,各ピクセルについて,スクリーン座標を生成する。初期深さ/ステンシルテストユニット160は,ピクセルがレンダリングされるか破棄されるべきかどうか決定するために,ピクセルに関してステンシルテストを行なってもよい。初期深さ/ステンシルテストユニット160は,ピクセルについてのステンシルバッファ図1においては示されないに格納されたステンシル値を基準値と比較し,その比較結果に基づいて,ピクセルをパスするか破棄するかを決定する。初期深さ/ステンシルテストユニット160は,適用可能な場合,ピクセルがレンダリングされるべきか破棄されるべきかどうかを決定するために,ピクセルごとに深さテストzテストとも称されるを行なってもよい。例えば,初期深さ/ステンシルテストユニット160は,ピクセルに対するz値現在のz値をzバッファにおいて対応するz値格納されたz値と比較する。そして,現在のz値が,格納されたz値に対してより近いならば,ピクセルをパスし,zバッファやステンシルバッファを更新する。一方,初期深さ/ステンシルテストユニット160は,現在のz値が,格納されたz値よりさらに後方であるならば,ピクセルを破棄する。属性グラディエントセットアップおよび属性補間ユニット170は,プリミティブ内のピクセルについて属性成分値を得るために,プリミティブの頂点について属性成分値を補間する。属性グラディエントセットアップおよび属性補間ユニット170は,最初に,頂点の属性成分値に基づいて,属性補間のためのパラメータを計算してもよい。これらのパラメータは,属性補間のための一次方程式の属性グラディエントまたは係数であってもよい。その後,属性グラディエントセットアップおよび属性補間ユニット170は,そのピクセルのスクリーン座標および補間パラメータに基づいて,各プリミティブ内の各ピクセルについて属性成分値を計算することができる。ピクセル/フラグメントシェーダ180は,ピクセルとフラグメントについて種々のグラフィックス処理を実行してもよい。フラグメントは,ピクセルと,その関連情報である。例えば,ピクセル/フラグメントシェーダ180は,可能であるならば,ピクセルにテクスチャを適用するテクスチャマッピングを実行してもよい。テクスチャ化は,そのピクセルのテクスチャ座標によって示された位置におけるテクスチャ画像のカラーでピクセルのカラーを修正することにより実現される。ポストプロセッサ190は,各フラグメントについて,アルファテスト,フォグブレンディング,アルファブレンディング,論理演算,又はディザリング演算のような他のグラフィックス処理を実行してもよい。ポストプロセッサ170は,ディスプレイデバイス上での提示のためのカラーバッファ両方とも図1には示されないに出力ピクセルを提供する。また,本実施形態のGPU100においては,ジオメトリシェーダ140による処理結果も,キャッシュバッファ130に記録される。これは前述したジオメトリシェーダ140が複数のステージを有しており,前段階のステージでの処理結果を再度利用するときなどに有効な手段である。このキャッシュバッファ130は,FIFOファーストインファーストアウト方式が採用されており,そのキャッシュ可能なシーケンスの数は,例えば4つに設定されている。なお,このシーケンス数は,適宜変更することも可能である。図2は,プリミティブ例えば三角形または線の頂点データや配列情報が,記録されるバッファの構造を示す。頂点バッファ210は,プリミティブについて,頂点座標および属性補間係数を格納する。頂点バッファロケーションは,それぞれ,1つの頂点についてx,y,z,w座標,および属性補間係数α,βを格納することができる。各頂点バッファロケーションは,当該バッファロケーションが有効な頂点を格納しているかどうかを示す有効/無効フラグを持つ。インデックスバッファ220は,プリミティブ頂点についてのインデックスを格納する。これらインデックスは,頂点が格納される頂点バッファ210のロケーションを指す。インデックスバッファ220の各メモリエレメントは,1つの頂点バッファロケーションについてのポインタまたはインデックスを格納できる。このインデックスバッファ220には,プリミティブの先頭の前には,プリミティブのサイズ長,すなわちプリミティブ列を構成する頂点データの数が,記録されるロケーションが確保されている。インデックスバッファ220は,連続したストレージの領域を形成しているが,このサイズ長のデータを起点として,その値分のロケーションに存在するデータが,ある特定のプリミティブ列を構成する頂点データとして認識され,その次の領域には,隣接するプリミティブ列のサイズ長データSが,位置するという構成となっている。また,本実施形態においては,インデックスバッファ220における領域を節約するための工夫として,既出のプリミティブ列についてはそのプリミティブ列を構成する頂点バッファロケーションへのポイント等を格納するのではなく,マイナスの値によって表される参照情報Nを,インデックスバッファ220に格納している。この参照情報Nは,インデックスバッファ220上のN個前のプリミティブと同じ頂点の配列を有するプリミティブが繰り返されているということを意味している。また,このようなサイズ長データSは,可変サイズのプリミティブを扱う時には必要であるが,固定サイズの決まったプリミティブを扱う場合にはこれを省略した構成を採ることもできる。次に,このインデックスバッファ220へ頂点データ等をインプットするアルゴリズムについて図3を参照に解説する。この頂点データの値をインプットする工程は,通常であれば頂点シェーダ110における処理の前段階で行われるが,本実施形態では可変サイズのプリミティブを取り扱うため,シェーダプログラムの過程において適宜実施されても良い。まず始めに,あるプリミティブを対象にこのプリミティブが既,にインデックスバッファに記録されているかを判定するステップ301を実施する。具体的な判定方法としては,プリミティブの頂点の配列を取得して,この配列と同じ値がインデックスバッファ220上に存在するか否かにより判定する方法を採ることができる。次いで,ステップ301における判定によって,プリミティブが存在しないと判定される場合Noである場合は,ステップ302に移行する。ステップ302では,インデックスバッファ220に,頂点バッファ210上の頂点データへの参照を配列として入力するとともに,その先頭の領域に,このプリミティブのサイズ,すなわちこのプリミティブを構成する配列数を,サイズ長データSとして記録する。また,ステップ301における判定によって,プリミティブが存在すると判定された場合Yesである場合は,ステップ303に移行する。ステップ303では,頂点データのメモリ上の位置情報を配列として記録する代わりに,既存のプリミティブへの参照情報Nをオフセット値既存のプリミティブが現在の位置からいくつ前のプリミティブかを示すマイナス値の形式で記録する。このオフセット値の設定の方法としては,前述したステップ301におけるプリミティブの検査時に,インデックスバッファ220の先頭から検索を開始して,ヒットした時点でカウンターの値を1にセットし,その後に,サイズ長データS又は参照情報Nのいずれかにヒットするごとにカウンターを1ずつ増加させ,最後尾に到達した際に,このカウンターの値にマイナスをつけて参照情報Nとしてセットするといった方法がとり得る。前述したように,ジオメトリシェーダ140の複数のステージに亘って処理を行うよう場合が存在しているが,本実施形態は,この場合に,処理を高速化するための工夫がされている。具体的には,図4に示されるアルゴリズムを用いて説明する。図4は,ジオメトリシェーダ140の処理結果を,プリミティブ単位で,キャッシュバッファ190に記録していく処理の流れを示している。まず,ステップ401において,インデックスバッファ220のメモリエレメントに記録されたインデックス値を,順次フェッチしていき,フェッチされたインデックス値に,上述したサイズ長データS又は参照情報Nのいずれが含まれるかを判定する。ステップ401の判定で,サイズ長データSが含まれるとされた場合には,ステップ402において,インデックスバッファ220よってS個分の頂点データへの位置情報を配列として取得し,この配列によって表されるプリミティブに対して,ジオメトリシェーダ140で演算処理が実行される。ここでは,このプリミティブに対して行われた一回目のジオメトリシェーダ140の処理結果を,プリミティブ出力GS1と示す。次にステップ403において,このジオメトリシェーダ140により行われたプリミティブ出力GS1を,キャッシュバッファ130に追加して記録させる。この値は,ステップ404において,ジオメトリシェーダ140の次のステージの入力値として送信される。一方,ステップ401における判定の結果,参照情報Nが含まれると判定される場合,このプリミティブは,既にジオメトリシェーダ140において処理がされていることから,キャッシュバッファ130上には,プリミティブ出力GS1が存在しているといえる。したがって,ステップ405において,このプリミティブ出力GS1を取得し,これを再利用する。そして,次のステップ406にて,プリミティブ出力GS1を,ジオメトリシェーダ140の次のステージへの入力値として送信する。この処理を,各インデックスバッファ220上のプリミティブに対し,繰り返し行うことで,ジオメトリシェーダ140の次のステージでは,キャッシュバッファ130上にキャッシュ化された各プリミティブが,再利用される。したがって,プリミティブに対して,再度演算処理をする必要が無くなるため,処理の高速化や記憶領域の抑制を図ることができるようになる。また,ジオメトリシェーダ140によって行われる2回目以降のステージでの処理においても,このプリミティブ出力GS1を再利用することにより,処理の高速化を図ることができる。本発明の画像処理装置において,実際に画像を処理する場合と,どのような動作をするかについて,図5を用いて説明する。図5aで示される多角形メッシュ500は,22の頂点から構成されるメッシュである。本実施形態では,この多角形メッシュ500に対しCatmullClarksubdivision法を用いて,頂点9-14-15-10からなる四角形501,及び頂点10-11-16-15からなる四角形502に対して処理を行う。この処理方法においては,ジオメトリシェーダ140に対しては,各頂点をその隣接する頂点を含めたプリミティブをジオメトリシェーダ140の入力として取り扱われる。すなわち,四角形501の処理にあっては,9,14,15,10を中心とする4つのプリミティブを用いた処理が行われ,四角形502の処理にあっては,10,11,16,15を中心とする4つのプリミティブを用いた処理が行われる。図5bは,多角形メッシュ500を,上記の処理に則して,ジオメトリシェーダ140で処理が行われる単位であるプリミティブに分解したものであり,SET0~SET4として示されている。また,図5cは,このSET0~SET4のプリミティブが記録されたインデックスバッファ220の状態を示している。図5b及びcに示されるように,SET0は,9-3-2-1-8-13-14-15-10-5-4の11の頂点からなるプリミティブである。このため,インデックスバッファ220には,このプリミティブのサイズを表すサイズ長データSとして,11が記録されている。このSet0に隣接するインデックスバッファ220上には,Set1が記録されている。Set1は,14-9-8-13-18-19-20-15-10からなるプリミティブであり,この先頭には,サイズ長データSとして,9が記録されている。同様に,Set2は,先頭に,S値として9が記憶され,15-10-9-14-19-20-21―16-11の順に記録されている。Set3は,先頭に,サイズ長データSとして9が記憶され,10-5-4-9-14-15-16-11-6の順に記録されている。続いて,Set3及びSet2が繰り返し用いられるが,インデックスバッファ220においては,これらのプリミティブは既に存在していることから,再び頂点データへの参照値が記録される代わりに,前述したオフセット値の値で示される参照情報Nが記憶される。ここで,Set3の位置は,一つ前であるため参照情報Nには-1が記憶され,続いてSet2の参照情報Nには-3が記憶されている。さらに,Set4として,頂点16-11-10-15-20-21-22-17-12の順番のプリミティブがインデックスバッファ220に記録され,先頭に,サイズ長データSの9が記録されている。最後に,Set5として,11-6-5-10-15-16-17-12-7の順番のプリミティブがインデックスバッファ220に記憶され,先頭に,サイズ長データSの9が記録されている。次に,この多角形メッシュ500において,ジオメトリシェーダ140の処理結果をキャッシュバッファ130に記録する動作について,図6を用いて説明する。図6は,キャッシュバッファ130のうち,ジオメトリシェーダ140の出力であるプリミティブGS1を記録する領域の構成を示したブロック図である図6に示されるように,キャッシュバッファ130は,4つのメモリエレメントを備えている。このキャッシュバッファ130には,ジオメトリシェーダ140での処理が行われるごとに,プリミティブごとの出力情報が記憶されている。この処理については,前述した図4におけるステップ403が相当する。まず,Set0~Set3の処理がおこなわれる際には,キャッシュバッファ130の先頭から順に,それぞれのプリミティブ出力GS1が入力される。ここでは,各出力値をSet0~Set3として示している。Set3の出力結果が記憶された際,このキャッシュバッファ130のメモリエレメントは,全て埋まってしまう。続く,Set3参照情報Nの-1の出力情報を記録する際には,最初に記録されたSet0の情報を削除し,Set1~Set3の情報を先頭側に一つずつずらして移動させ,空きとなった4つめのメモリエレメントに,新たにSet3の出力結果を記憶させる。以降のSet2への参照を行う際や,Set4,Set5の記録をする際にも,同様の手順で処理が行われる。次に,本発明の異なる実施例について説明する。実施例2においては,インデックスバッファ220における参照情報の記録の仕方が,実施例1とは異なっている。図7は,実施例2におけるインデックスバッファ220にプリミティブを記録するアルゴリズムを示している。まず始めに,あるプリミティブを対象にこのプリミティブが既にインデックスバッファ220に記録されているかを判定するステップ701を実施する。具体的な判定方法としては,プリミティブの頂点情報を取得して,この頂点から構成されるプリミティブの配列と同じ値が,インデックスバッファ220上に存在するか否かにより,判定することができる。ステップ701における判定により,プリミティブが存在しないと判定された場合Noである場合,ステップ702において,インデックスバッファ220の最後尾にプリミティブを構成する頂点データの位置情報を配列として記録する。また,このプリミティブの先頭データの直前に,プリミティブの配列情報の定義を宣言して,定義コマンドDが記録される。また,この定義コマンドDは,このプリミティブのジオメトリシェーダ140での処理結果である出力情報であって,キャッシュバッファ130に記録されたプリミティブ出力GS1のキャッシュバッファ130のアドレスにも関連付けられている。また,この定義コマンドDの宣言の際には,プリミティブ列を特定するためのプリミティブIDがその宣言の中で関連づけられる。また,定義コマンドDは,これと関連付けされたプリミティブのサイズ長データSと共に同一のメモリエレメントに記録することもできる。この定義コマンドDは,既にその識別情報が使用されているのであれば,これを消去しそこに新しい定義コマンドDによって定義されるプリミティブの配列情報と,そのキャッシュバッファ130上に記憶された処理結果であるジオメトリシェーダGS1を上書きする。本実施形態においては,この定義コマンドDとして宣言可能な個数は,キャッシュバッファ130の記録領域の領域数に相当す。本実施例において,定義コマンドDとして宣言可能な個数は4であり,D0~D3を選択可能である。一方,ステップ701における判定により,プリミティブが存在することと判定された場合Yesである場合には,定義コマンドDへの参照コマンドRを記録するとともに,インデックスバッファ220に記録されているプリミティブの情報を削除する。ここでプリミティブの情報を削除する理由は,この時すでにこのインデックスバッファ220上のプリミティブに対する処理は完了し,その結果がキャッシュバッファ130に記録されていることから,こプリミティブの情報を削除することで,記録領域の解放を行うためである。次に,図8を用いて本実施例における,ジオメトリシェーダ140における処理の流れを説明する。最初に,ステップ801において,インデックスバッファ220からインデックス値をフェッチングしていき,フェッチされたインデックス値に定義コマンドD,あるいは参照コマンドRのどちらが含まれるかを判定する。ステップ801における判定において,定義コマンドDが含まれている判定される場合には,ステップ802において,記録されているプリミティブのサイズ情報を取得し,プリミティブに対してジオメトリシェーダ140において演算処理を行う。また,プリミティブのサイズが固定の場合であれば,サイズを取得しなくともこの処理は実行可能である。次いで,ステップ803において,キャッシュバッファ130より定義コマンドDに含まれるプリミティブIDと同じ識別子で事前に定義されたプリミティブの出力情報が存在する場合にはこれを取り除き,ジオメトリシェーダ140における出力情報をキャッシュバッファ130に同定義コマンドDと関連付して記憶する。すなわち,既にこの定義コマンドDと同じ識別情報が存在する場合には上書きが行われ,存在しない場合には新たに定義コマンドDが設定されている。そして,ステップ804において,このジオメトリシェーダ140におけるプリミティブ出力GS1を次のジオメトリシェーダ140のステージに対しての入力値として送信する。一方,ステップ801における判定において,参照コマンドRが含まれていると判定される場合には,ステップ805においてキャッシュバッファ130から同参照コマンドRによって参照される定義コマンドDに含まれるプリミティブIDによって既に定義済みのプリミティブのジオメトリシェーダ140での処理の出力をフェッチして利用する。そして,ステップ806において,このフェッチされたプリミティブ出力GS1をジオメトリシェーダ140の次のステージへの入力値として送信する。次に,この実施例において実施例1で例示した多角形メッシュ500がどのようにインデックスバッファ220上に記憶されているかについて,図9を用いて説明する。図9に示されるようにSET0は,9-3-2-1-8-13-14-15-10-5-4の11の頂点からなるプリミティブであり,インデックスバッファ220には,このプリミティブのサイズを表すデータサイズ長Sとして,11と,定義コマンドD0が記録されている。このSet0に隣接するインデックスバッファ220上には,Set1が記録されている。Set1は,14-9-8-13-18-19-20-15-10からなるプリミティブであり,この先頭にはサイズ長データSとして。9と,プリミティブ定義コマンドD1が記録されている。同様に,Set2は先頭にデータサイズ長サイズ長データSとして。9と,定義コマンドD2が記憶され,15-10-9-14-19-20-21―16-11の順に記録されている。Set3は,先頭にサイズ長データSとして,9と,定義コマンドD3が記憶され,10-5-4-9-14-15-16-11-6の順に記録されている。続いてSet3,Set2が繰り返し用いられるが,インデックスバッファ220においては,これらのプリミティブは既に存在していることから,再び頂点データへの参照値が記録される代わりに,プリミティブへの参照コマンドRが記憶される。したがって,参照コマンドR3,R2が。順次記録される。続いて,Set4として頂点16-11-10-15-20-21-22-17-12の順番のプリミティブが,インデックスバッファ220に記録され,先頭にデータサイズ長Sとして,9と,定義コマンドD0が記録されている。この時,既にD0~D3の全てのコマンドが定義されてしまっていることから,最初に宣言されたD0のコマンドに新たな定義が上書きされている。最後に,Set5として11-6-5-10-15-16-17-12-7の順番のプリミティブがインデックスバッファ220に記憶され,先頭にサイズ長データSとして。9と,定義コマンドD1が記録されている。次に,この多角形メッシュ500によってジオメタリシェーダ140における処理結果をキャッシュバッファ130に記録していく動作について,図10を用いて説明する。図10は,キャッシュバッファ130の構成を示したブロック図であるまず,Set0~Set3に対する処理がおこなわれる際には,キャッシュバッファ130の先頭から順に,それぞれの出力結果であるプリミティブ出力GS1が,入力される。Set3の出力結果が記憶された際,このキャッシュバッファ130の記憶領域,は全て埋まってしまう。続く,参照コマンドR3,R2が宣言される際には,キャッシュバッファ130には変更が加えられず,既に記録されているSet3,Set2のプリミティブ出力GS1が再利用される。続いて,Set4が記録される際には,既にD0~D3が使用されていることから,このうち最初に記憶されたD0に対してコマンド定義がされる。したがって,Set0が記憶されていた場所に,Set4のプリミティブ出力GS1が記録される。次のSet5の記憶においても,同様にD1に対してコマンド定義がなされ,Set1が記録されていた場所に,Set5のプリミティブ出力GS1が記録される。以上のことから,この第2の実施形態の画像処理装置においても,キャッシュバッファ130上に記録されたプリミティブのジオメトリシェーダ140での処理結果が,プリミティブ出力GS1として記録され,しかも,この処理結果を定義コマンドD及び参照コマンドRとして再利用可能である。このため,第2の実施形態の画像処理装置は,プリミティブの処理結果を効率よく再利用でき,処理の高速化を図ることができる。"