(57)【要約】【課題】表示用に図形オブジェクトを描画する際オブジェクト頂点を変換する方法および装置。【解決手段】図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換する方法はオブジェクト空間における変換される各オブジェクト頂点に積行列を掛けることを含む。積行列はモデル・ビュー行列および投影行列の積である。その結果各オブジェクト頂点は単一の積算演算経由でオブジェクト空間からクリップ空間に変換される。【選択図】図２
2008047108.tif 000002
【特許請求の範囲】
【請求項１】
図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換する方法で、
オブジェクト空間における変換される各オブジェクト頂点に積行列を掛けるステップで、前記積行列はモデル・ビュー行列および投影行列の積で、各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換するもの、を含む方法。
【請求項２】
請求項１に記載される方法で、さらに、
前記積算の前に状態情報を確認するステップで、前記状態情報が前記積行列を使用すべきでないことを意味するか判定するステップと、
積行列が使用される場合は前記積算を行なうステップと、
積行列が使用されない場合、オブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換するステップと、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換するステップと、を含む方法。
【請求項３】
前記積行列が使用されない場合少なくとも１つのフラグが設定される、請求項２に記載される方法。
【請求項４】
前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合前記少なくとも１つのフラグが設定される、請求項３に記載される方法。
【請求項５】
さらに、
前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合積行列を再計算するステップを含む、請求項４に記載される方法。
【請求項６】
前記少なくとも１つのフラグは少なくとも１つの選択されたラスター化機能がイネーブルされた場合に設定される、請求項３に記載される方法。
【請求項７】
前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択される、請求項６に記載される方法。
【請求項８】
前記少なくとも１つのフラグは少なくとも１つの選択されたラスター化機能がイネーブルされた場合に設定される、請求項５に記載される方法。
【請求項９】
前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択される、請求項８に記載される方法。
【請求項１０】
図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するコンピュータ・プログラムを具現するコンピュータ読み取り可能な媒体で、前記コンピュータ・プログラムは、
オブジェクト空間における変換される各オブジェクト頂点に積行列を掛けるコンピュータ・プログラム・コードで、前記積行列はモデル・ビュー行列および投影行列の積で各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換するコンピュータ・プログラム・コード、を含む、コンピュータ読み取り可能な媒体。
【請求項１１】
コンピュータ・プログラムはさらに、
状態情報を確認し、前記状態情報が前記積行列を使用すべきでないことを意味するか前記積算の前に判定するコンピュータ・プログラム・コード、および
前記積行列をいつ使用すべきでないかを判定するコンピュータ・プログラム・コードに応答して、積行列が使用されない場合オブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換し、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換するコンピュータ・プログラム・コード、を含む、請求項１０に記載されるコンピュータ読み取り可能な媒体。
【請求項１２】
図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するラスター化エンジンで、
モデル・ビュー行列、投影行列、および積行列を格納し、前記積行列は前記モデル・ビューおよび投影行列の積である、行列メモリ、
状態情報メモリ、および
オブジェクト空間における変換される各オブジェクト頂点に積行列を掛け、各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換する図形プロセッサ、を含むラスター化エンジン。
【請求項１３】
前記状態情報メモリは少なくとも１つの設定可能なフラグを格納し、前記状態情報メモリのフラグが設定されると前記図形プロセッサはオブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換し、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換する、請求項１２に記載されるラスター化エンジン。
【請求項１４】
前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合前記少なくとも１つのフラグが設定される、請求項１３に記載されるラスター化エンジン。
【請求項１５】
前記少なくとも１つのフラグは１つの選択されたラスター化機能がイネーブルされた場合に設定される、請求項１４に記載されるラスター化エンジン。
【請求項１６】
前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択される、請求項１５に記載されるラスター化エンジン。
【請求項１７】
前記図形プロセッサはモデル・ビューおよび投影行列の少なくとも１つが変更された場合積行列を再計算する、請求項１４に記載されるラスター化エンジン。
【請求項１８】
前記少なくとも１つのフラグは１つの選択されたラスター化機能がイネーブルされた場合に設定される、請求項１３に記載されるラスター化エンジン。
【請求項１９】
前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択される、請求項１８に記載されるラスター化エンジン。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にグラフィックス・アプリケーションに関し、具体的には表示用に図形オブジェクトを描画する際オブジェクト頂点を変換する方法および装置に関する。
【背景技術】
【０００２】
ＯｐｅｎＧＬは二次元（２Ｄ）および三次元（３Ｄ）のグラフィックス・アプリケーション向けの業界標準のグラフィックス・アプリケーション・プログラミング・インタフェース（ＡＰＩ）である。一般的にＯｐｅｎＧＬ  ＡＰＩはホスト・アプリケーションから受信した描画オブジェクトを表す図形データを処理し、ユーザが閲覧できるように図形オブジェクトを表示装置上で描画する。各オブジェクトの図形データは３Ｄ座標のアレーと関連データからなり、これは通常頂点と呼ばれる。オブジェクトの頂点は４要素同次ベクトル［ｘ，ｙ，ｚ，ｗ］として表され、ここでｘ、ｙ、およびｚは３Ｄ空間の頂点座標でｗは１である。オブジェクト頂点が受信されると、ＯｐｅｎＧＬ  ＡＰＩはオブジェクト頂点を変換し、オブジェクト頂点の組をグループ化して点、線、三角形、および多角形を形成し図形要素を組み立てる。組み立てられた図形プリミティブは次に表示装置上に図形オブジェクトを描画するために用いられる。
【０００３】
オブジェクト頂点を処理する手法は多々文書化されている。例えば、テイラー他の米国特許第６５５２７３３号明細書は専用ハードウェア内でモーフィングおよびスキニング操作の双方が支援される設定可能な頂点ブレンディング回路を開示している。頂点ブレンディング回路は頂点ブレンディング操作の各部分に結びついた行列を格納するために用いられる行列アレーを含む。頂点データはモーフィング操作に結びついた複数の位置が格納できるような複数の位置バッファを含む入力頂点バッファに格納される。スキニング操作に通常結び付く単独位置は位置バッファの１つに格納できる。入力頂点バッファはさらに頂点ブレンディング操作全体に含まれる各種の要素操作に結びつくブレンディング・ウェイトを格納する。変換コントローラで設定され制御される算術演算装置が頂点ブレンディング操作全体に含まれる複数の要素操作の各々に必要な計算を実行する。これら要素操作各々の結果を次に組み合わせブレンドされた頂点を生み出す。
【０００４】
Ｍａｎｇ他の米国特許第６５６７０８４号明細書は照明効果演算ブロックおよび方法を開示している。照明効果演算ブロックはビデオ図形要素用の照明効果計算を並列に実行されるが順序に依存する形で蓄積されるいくつかのより簡単な計算に分離する。個々の計算は各々別個のスレッド・コントローラによって管理される。要素の頂点に関する照明効果計算は単独の親照明スレッド・コントローラおよびいくつかのサブ照明スレッド・コントローラを用いて実行することができる。各スレッド・コントローラはその特定頂点に対する照明パラメータの決定に関する操作コードのスレッドを管理する。スレッド・コントローラは各種操作コード間の予期される待ち時間および相互依存に基づき操作コードを裁定モジュールに提出する。裁定モジュールは特定サイクルにおいてどの操作コードが実行されるかを判定し、その操作コードを演算エンジンに提供する。演算エンジンは操作コードに基づき計算を実行し、結果をメモリまたはその特定頂点照明効果ブロックに対応する蓄積バッファに格納する。順序に依存する操作が正しく実行されることを保証するため各サブ照明スレッド・コントローラは自己の操作コードを裁定モジュールに提出する前に先行するスレッドに対する蓄積操作が開始されたか判定する。
【０００５】
Ｉｄａｓｚａｋ他の米国特許第６５７３８９４号明細書はＯｐｅｎＧＬ  ＲＴＭシステムのような平面形画像図形コンピュータ・システムを用い、画像データを非平面形画像データに変換して非平面形ディスプレーに表示する方法を開示している。方法において、平面形画像図形コンピュータ・システムから変換行列が取得される。画像データの複数の頂点が取得された変換行列により積算され、変換画像データを生み出す。変換画像データは非平面形歪みを補正して非平面形画像データにしたものである。単一行列のようなパススルー変換行列が平面形画像図形コンピュータ・システムに提供される。非平面形画像データは次に平面形画像図形コンピュータ・システムに入力されさらに処理される。平面形画像図形コンピュータ・システムで処理された非平面形画像データは次に非平面形ディスプレーに表示される。
【０００６】
Ｄｅｍｅｒｓの米国特許第６７００５８６号明細書は２Ｄおよび３Ｄ図形およびサラウンド・サウンドを生み出すカスタム図形および音声プロセッサを含む図形システムを開示している。モデル・ビュー行列演算装置に追加行列積算演算装置がカスケード状に接続され、骨格アニメーション・モデル化用にスキニングの区分的線形バージョンを支援する。カスケードされた行列積算演算装置間に接続されたノーマライザは歪んだ視覚化を避けるために正規化を提供する。追加行列積算演算装置は骨格アニメーション・モデル化以外の用途（例えば環境マッピング）に用いることができる。
【０００７】
Ｍａｒｉｎｏの米国特許第６７３１３０３号明細書は図形データを受信する入力を含む図形システムを開示している。図形データはオブジェクトの位置座標および深度座標を含む。処理された図形データを伝送するために出力が含まれる。図形システムは処理された図形データを生成する処理要素も含む。処理要素の１つは入力に接続され、別の処理要素は出力に接続される。選ばれた処理要素が位置座標および深度座標を受信し、深度座標を反転させ、反転深度座標を位置座標に掛ける。
【０００８】
Ｋｉｌｇａｒｄ他の米国特許第６８９４６８７号明細書は頂点処理中に頂点属性をエイリアス化システム、方法、および製造物品を開示している。最初に、複数の識別子が頂点データに結びついた複数のパラメータの１つにマップされる。その後、識別子を用いてパラメータを照合できる頂点プログラムを利用してパラメータをコールすることにより頂点データが処理される。
【０００９】
Ｇｌａｎｖｉｌｌｅ他の米国特許出願番号２００３／０００９７４８号明細書は図形処理中の性能を向上させるシステムを開示しており、アプリケーション・プログラマブルな頂点処理が係わっている。中央演算装置（ＣＰＵ）はＣＰＵ上で図形処理を実施できるコード・セグメントを実行するオペレーティング・システムを含む。図形処理規格に従って図形処理を実施できるハードウェア実施の図形パイプラインを含む図形用用途向け集積回路（ＡＳＩＣ）がＣＰＵに結び付いている。図形処理規格に従って書かれたソフトウェアは図形処理を実施するよう図形用ＡＳＩＣに指示するよう適合される。ソフトウェアの拡張子は図形用ＡＳＩＣで実施される図形処理の第１部分およびＣＰＵで実施される図形処理の第２部分を特定する。図形処理の第２部分は図形用ＡＳＩＣでは計算できないアプリケーション・プログラマブルな頂点処理を含む。コンパイラが拡張子に従い図形処理の第１部分および図形処理の第２部分を実行するのに用いられるソフトウェアをコンパイルする。
【００１０】
Ｋａｕｆｍａｎ他の米国特許出願番号２００４／０１２５１０３号明細書はリアルタイムの体積処理および汎用３Ｄ描画の装置および方法を開示している。装置は三次元（３Ｄ）メモリ装置、グローバルな水平通信を提供するピクセル・バス、描画パイプライン、ジオメトリ・バス、および制御装置を含む。円形光線積分パイプラインを有するブロック・プロセッサがボクセル・データおよび光線データを処理する。光線は一般的に画像順序で処理され、それにより柔軟性が得られる（例えば遠近法投影、グローバルな照明）。
【００１１】
Ｚｕｉｄｅｒｖｅｌｄの米国特許出願番号２００５／０１４３６５４号明細書は異なった区分け領域を用いたボクセルからなる３Ｄの体積データを視覚化するシステムおよび方法を開示している。区分けマスク・ベクトルが各ボクセルに結び付けられ、そのボクセルが属する区分け領域を定義する。視覚化の際、区分けマスクは補間され区分けマスク重みのベクトルを得る。各サンプル点に対し視覚化値のベクトルを区分けマスク重みのベクトルで掛けることにより、合成フラグメント値を生ずる。フラグメント値は合成を用いてピクセル値に組み合わされる。汎用プログラマブル・ビデオ・カードの演算効率を活用して複数区分けデータ領域のサブサンプルされた部分的寄与の重みを判定することにより色および不透明度など区分け固有の特徴をフラグメント毎に正しく組み合わせることができ、これは体積描画に適している。
【００１２】
上述の引用は頂点処理手法を開示しているが、オブジェクトの頂点を変換する際に生じる演算上の問題に対応できていない。表示用に描画されるオブジェクトが作成されると、オブジェクトを定義する頂点は典型的には通常オブジェクト空間と呼ばれるモデルまたはオブジェクト座標システム内にある。図形オブジェクトを表示用に描画するためには、オブジェクト空間のオブジェクト頂点は通常画面空間と呼ばれるウィンドウ座標システムに投影またはマップされる必要がある。
【００１３】
【特許文献１】米国特許出願公開第２００３０００９７４８号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１４】
オブジェクト頂点をオブジェクト空間から画面空間に投影するのは通常一連の行列演算が必要となる。図１はＯｐｅｎＧＬ図形パイプラインでオブジェクト空間におけるオブジェクト頂点を画面空間におけるオブジェクト頂点に変換するために実行される演算を示す。示されるように、頂点変換プロセスの際、オブジェクト空間１１０における各オブジェクト頂点｛Ｖo｝は以下に従い各オブジェクト頂点｛Ｖo｝にモデル・ビュー行列［Ｍmv］を掛けることにより視覚空間１２０におけるオブジェクト頂点｛Ｖe｝に変換される。
【００１５】
｛Ｖe｝＝［Ｍmv］＊｛Ｖo｝      （１）
または
【００１６】
【数１】
2008047108.tif 000003
【００１７】
視覚空間１２０における各オブジェクト頂点｛Ｖe｝は次に以下に従い各オブジェクト頂点｛Ｖe｝を投影行列［Ｍp］で掛けることによりクリップ空間におけるオブジェクト頂点に変換される。
【００１８】
｛Ｖc｝＝［Ｍp］＊｛Ｖe｝      （２）
または
【００１９】
【数２】
2008047108.tif 000004
【００２０】
一旦オブジェクト頂点がクリップ空間１３０に入ると、オブジェクト頂点｛Ｖc｝は正規化装置座標（ＮＤＣ）空間１４０および次に画面空間１５０に変換される。
【００２１】
理解されるように、オブジェクト空間におけるオブジェクト頂点をクリップ空間におけるオブジェクト頂点に変換することはオブジェクト頂点毎に少なくとも２つの行列ベクトル積算が必要になるため演算上高価になる。従って改良が望まれる。
【００２２】
そこで本発明の一目的は図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換する新規な方法および装置を提供することである。
【課題を解決するための手段】
【００２３】
従って、一態様で図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換する方法で、オブジェクト空間における変換される各オブジェクト頂点に積行列を掛けることで、前記積行列はモデル・ビュー行列および投影行列の積で各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換すること、を含む方法が提供される。
【００２４】
一実施形態で、積算の前に状態情報を確認して、積行列を使用すべきでないことを状態情報が意味しているかを判定する。確認後、積行列が使用される場合、積算が行なわれる。積行列が使用されない場合、オブジェクト空間にある各オブジェクト頂点にモデル・ビュー行列を掛け、各オブジェクト頂点を視覚空間に変換し、視覚空間に各オブジェクト頂点に投影行列を掛け、各オブジェクト頂点をクリップ空間に変換する。積行列が使用されない場合少なくとも１つのフラグが設定される。前記少なくとも１つのフラグはモデル・ビュー行列および投影行列の少なくとも１つが変化し、および／あるいは少なくとも１つの選択されたラスター化がイネーブルされた場合設定される。
【００２５】
別の態様で、図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するコンピュータ・プログラムを具現するコンピュータ読み取り可能な媒体が提供され、前記コンピュータ・プログラムは、変換すべきオブジェクト空間における各オブジェクト頂点に積行列で掛けるためのコンピュータ・プログラム・コードで、前記積行列はモデル・ビュー行列および投影行列の積で、それにより単一の積算演算経由で各オブジェクト頂点をオブジェクト空間からクリップ空間に変換するコンピュータ・プログラム・コード、を含む。
【００２６】
さらに別の態様で、図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するラスター化エンジンが提供され、モデル・ビュー行列、投影行列、および積行列を格納する行列メモリで、前記積行列は前記モデル・ビューおよび投影行列の積である行列メモリ、状態情報メモリ、および各オブジェクト頂点に前記積行列を掛け単一の積算演算で各オブジェクト頂点をオブジェクト空間からクリップ空間に変換する図形プロセッサ、を含む。
【００２７】
オブジェクト空間におけるオブジェクト頂点を単一のせ積算演算でモデル・ビューおよび投影行列の変化の間をぬってクリップ空間におけるオブジェクト頂点に変換することにより、またラスター化エンジンの選択された機能がイネーブルされていない時、オブジェクト頂点の変換は迅速かつ容易に実行でき、それにより演算負荷をかなり低減する。
【００２８】
本発明の、図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換する方法は、オブジェクト空間における変換される各オブジェクト頂点に積行列を掛けるステップで、前記積行列はモデル・ビュー行列および投影行列の積で、各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換するものを含む。また、前記積算の前に状態情報を確認するステップで、前記状態情報が前記積行列を使用すべきでないことを意味するか判定するステップと、積行列が使用される場合は前記積算を行なうステップと、積行列が使用されない場合、オブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換するステップと、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換するステップと、を含んでもよい。また、前記積行列が使用されない場合少なくとも１つのフラグが設定されてもよい。また、前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合前記少なくとも１つのフラグが設定されてもよい。また、さらに、前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合積行列を再計算するステップを含んでもよい。また、前記少なくとも１つのフラグは少なくとも１つの選択されたラスター化機能がイネーブルされた場合に設定されてもよい。また、前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択されてもよい。また、前記少なくとも１つのフラグは少なくとも１つの選択されたラスター化機能がイネーブルされた場合に設定されてもよい。また、前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択されてもよい。
【００２９】
本発明の、図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するコンピュータ・プログラムを具現するコンピュータ読み取り可能な媒体は、前記コンピュータ・プログラムが、オブジェクト空間における変換される各オブジェクト頂点に積行列を掛けるコンピュータ・プログラム・コードで、前記積行列はモデル・ビュー行列および投影行列の積で各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換するコンピュータ・プログラム・コードを含む。また、前記コンピュータ・プログラムはさらに、状態情報を確認し、前記状態情報が前記積行列を使用すべきでないことを意味するか前記積算の前に判定するコンピュータ・プログラム・コード、および前記積行列をいつ使用すべきでないかを判定するコンピュータ・プログラム・コードに応答して、積行列が使用されない場合オブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換し、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換するコンピュータ・プログラム・コードを含んでもよい。
【００３０】
本発明の、図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するラスター化エンジンは、モデル・ビュー行列、投影行列、および積行列を格納し、前記積行列は前記モデル・ビューおよび投影行列の積である、行列メモリ、状態情報メモリ、およびオブジェクト空間における変換される各オブジェクト頂点に積行列を掛け、各オブジェクト頂点を単一の積算演算でオブジェクト空間からクリップ空間に変換する図形プロセッサを含む。また、前記状態情報メモリは少なくとも１つの設定可能なフラグを格納し、前記状態情報メモリのフラグが設定されると前記図形プロセッサはオブジェクト空間における各オブジェクト頂点に前記モデル・ビュー行列を掛けて各オブジェクト頂点を視覚空間に変換し、視覚空間における各オブジェクト頂点に前記投影行列を掛けて各オブジェクト頂点をクリップ空間に変換してもよい。また、前記モデル・ビューおよび投影行列の少なくとも１つが変更された場合前記少なくとも１つのフラグが設定されてもよい。また、前記少なくとも１つのフラグは１つの選択されたラスター化機能がイネーブルされた場合に設定されてもよい。また、前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択されてもよい。また、前記図形プロセッサはモデル・ビューおよび投影行列の少なくとも１つが変更された場合積行列を再計算するものでもよい。また、前記少なくとも１つのフラグは１つの選択されたラスター化機能がイネーブルされた場合に設定されるものでもよい。また、前記少なくとも１つの選択されたラスター化機能は照明効果、霧効果、およびクリップ面からなるグループから選択されるものでもよい。
【発明を実施するための最良の形態】
【００３１】
以下の説明において、表示用に描画する際にオブジェクト頂点を変換する方法およびラスター化エンジンが提供される。方法の際、変換されるオブジェクト空間における各オブジェクト頂点に積行列を掛ける。積行列はもでる・ビュー行列および投影行列の積である。その結果各オブジェクト頂点は単一の積算演算経由でオブジェクト空間からクリップ空間に変換される。積行列が使用されない場合、オブジェクト空間におけるオブジェクト頂点は従来の方法でクリップ空間におけるオブジェクト頂点に変換される。すなわちオブジェクト空間におけるオブジェクト頂点にモデル・ビュー行列を掛けてオブジェクト頂点を視覚空間に変換し、視覚空間におけるオブジェクト頂点に投影行列を掛けてオブジェクト頂点をクリップ空間に変換する。
【００３２】
次に図２において、オブジェクト頂点をオブジェクト空間からクリップ空間に変換するラスター化エンジン２００が示されている。図で見られるように、ラスター化エンジン２００はオブジェクト頂点変換アプリケーションを実行する図形プロセッサ２０２、ランダムアクセス・メモリ（以降、ＲＡＭと称する）２０４、ならびに行列メモリ２０６，２０８，２１０および状態情報メモリ２１２からなる非揮発性メモリ・アレー２０５を含む。行列メモリ２０６はオブジェクト空間におけるオブジェクト頂点を視覚空間におけるオブジェクト頂点に変換するために用いるモデル・ビュー行列［Ｍmv］を格納する。行列メモリ２０８は視覚空間におけるオブジェクト頂点をクリップ空間におけるオブジェクト頂点に変換する投影行列［Ｍp］を格納する。行列メモリ２１０はモデル・ビューおよび投影の各々のモデル・ビュー行列［Ｍmv］および投影行列［Ｍp］の積の結果である積行列［Ｍv］を格納する。状態情報メモリ２１２はオブジェクト頂点をオブジェクト空間からクリップ空間に変換する際どの行列を使用すべきかを判定するために図形プロセッサ２０２が調べるフラグを格納する。
【００３３】
図形データ処理の際、何百もの、さもなければ何千ものオブジェクト頂点がモデル・ビュー行列［Ｍmv］または投影行列［Ｍp］のいずれかの変化の間をぬってオブジェクト空間からクリップ空間への変換を必要とする。前述のとおり、上記方程式（１）および（２）に従ってオブジェクト頂点を処理するとオブジェクト頂点はオブジェクト空間からクリップ空間に変換する。方程式（１）および（２）を組み合わせると以下が得られる。
｛Ｖc｝＝［Ｍp］＊（［Ｍmv］＊｛Ｖo｝）      （３）
方程式（３）は、次のように書き直すことができる。
｛Ｖc｝＝（［Ｍp］＊［Ｍmv］）＊｛Ｖo｝
または
｛Ｖc｝＝［Ｍx］＊｛Ｖo｝      （４）
ここで、｛Ｖo｝は、オブジェクト空間におけるオブジェクト頂点、｛Ｖc｝は、クリップ空間におけるオブジェクト頂点、および［Ｍx］は、投影行列［Ｍp］およびモデル・ビュー行列［Ｍmv］の積によりもたらされる積行列である。
【００３４】
このように積行列［Ｍx］が利用できると、オブジェクト空間におけるオブジェクト頂点は単に１つの行列積算演算を実施することにより、すなわちオブジェクト空間におけるオブジェクト頂点に積行列［Ｍx］を掛けることにより、クリップ空間におけるオブジェクト頂点に変換できる。ラスター化エンジン２００が積行列を行列メモリ２１０に格納するため、オブジェクト頂点のオブジェクト空間からクリップ空間への変換は迅速かつ容易に生成することができる。
【００３５】
次に図３において、オブジェクト頂点をオブジェクト空間からクリップ空間に変換する際、ラスター化エンジン２００により実施される工程が示される。本考察の上で、積行列［Ｍx］は行列メモリ２１０に格納され、図形プロセッサ２０２によりＲＡＭ２０４にロードされたと想定される。図形プロセッサ２０２が描画される図形オブジェクトを表すオブジェクト空間におけるオブジェクト頂点を受信すると、状態情報メモリ２１２が確認され、オブジェクト空間におけるオブジェクト頂点をクリップ空間におけるオブジェクト頂点に変換するのに積行列［Ｍx］を用いるべきでないことを意味する状態情報メモリ内の１つ以上のフラグが設定されたか判定する（工程３００および工程３０２）。このようなフラグが設定されていない場合、図形プロセッサ２０２はオブジェクト頂点を選択し（工程３０４）、選択されたオブジェクト頂点に積行列［Ｍx］を掛け、それにより選択されたオブジェクト頂点を１つの積行列演算でクリップ空間に変換する（工程３０６）。次にオブジェクト頂点のカウントが増分され（工程３０８）、確認がなされてさらに選択すべきオブジェクト頂点が存在するか判定される（工程３１０）。さらに選択すべきオブジェクト頂点が存在しない場合、オブジェクト頂点変換プロセスが完了したとみなされる（工程３１２）。工程３１０においてさらに選択すべきオブジェクト頂点が１つ以上存在する場合、プロセスは工程３００に戻る。理解されるように、状態情報メモリ２１２におけるフラグが設定されていない場合、オブジェクト空間における各オブジェクト頂点は単一の積算演算でクリップ空間におけるオブジェクト頂点に変換される。
【００３６】
積行列が古くなり、および／あるいは視覚空間におけるオブジェクト頂点が必要となる事態が生じる可能性があるため状態情報メモリ２１２は積行列［Ｍx］が用いられる前に調べられる。後者の場合、ＯｐｅｎＧＬユーザ・クリップ面、ＯｐｅｎＧＬ照明効果、またはＯｐｅｎＧＬ霧効果など、ラスター化エンジン２００の特定機能がイネーブルされていると視覚空間におけるオブジェクト頂点が必要となる。図形プロセッサ２０２はこれらＯｐｅｎＧＬの機能の状態を監視し、これらの機能の１つ以上がイネーブルされていると図形プロセッサ２０２はイネーブルされた各機能に対し対応フラグを状態情報メモリ２１２に設定する。このようなフラグが設定されると、設定されたフラグは工程３００で検出され、その結果、積行列［Ｍx］はオブジェクト頂点の変換に使用されないことになる。
【００３７】
この場合、オブジェクト頂点は通常の方法でオブジェクト空間からクリップ空間に変換される（工程３１４）。このように、図形プロセッサ２０２はモデル・ビュー行列［Ｍmv］および投影行列［Ｍp］をＲＡＭ２０４にロードする。オブジェクト空間における各オブジェクト頂点に対し図形プロセッサ２０２はオブジェクト頂点にモデル・ビュー行列［Ｍmv］を掛け、オブジェクト頂点を視覚空間に変換する。図形プロセッサ２０２は次に視覚空間における各オブジェクト頂点に投影行列［Ｍp］を掛け、オブジェクト頂点をクリップ空間に変換する。
【００３８】
図形プロセッサ２０２はさらにモデル・ビュー行列［Ｍmv］および投影行列［Ｍp］の状態を監視し、これら行列のいずれかまたは双方が変化したか判定する。これら行列の変化は更新されたモデル・ビューおよび／あるいは投影行列をラスター化エンジン２００に手動でロードした結果、拡大、翻訳、または回転変換操作の結果、現行行列スタックのポッピングおよび／あるいはビュー位置または錐台の変更の結果起こり得る。モデル・ビューまたは投影行列に変更が生じた場合、図形プロセッサ２０２は対応フラグを状態情報メモリ２１２に設定する。このようなフラグが設定された場合、設定されたフラグは工程３００で検出され、その結果積行列がオブジェクト頂点変換の際用いられない結果となる。モデル・ビューおよび／あるいは投影行列に変更があると、一旦現行オブジェクト頂点変換タスクが完了した後、図形プロセッサ２０２は更新されたモデル・ビュー行列［Ｍmv］および投影行列［Ｍp］をＲＡＭ２０４にロードし、積行列［Ｍx］を再計算し、今後の使用に向け新しい積行列［Ｍx］を行列メモリ２１０に格納する。
【００３９】
説明されないが、一旦オブジェクト頂点がクリップ空間に変換されると、オブジェクト頂点は図形プロセッサ２０２によりＮＤＣ空間に変換することができ、その後従来の方法で画面空間に変換することができる。
【００４０】
ラスター化エンジン２００はパソコン（ＰＣ）等々の中央演算装置（ＣＰＵ）に具現されることができ、またはパソコン等々にインストールされる別個の図形処理装置に具現されることができる。
【００４１】
オブジェクト頂点変換ソフトウェアは図形プロセッサなどの処理装置で実行されるコンピュータ実行可能な命令を含む。ソフトウェア・アプリケーションはルーチン、プログラム、オブジェクト・コンポーネント、データ構造等々を含むプログラム・モジュールからなることができ、コンピュータ読み取り可能な媒体に格納されるコンピュータ読み取り可能なプログラムとして具現されることができる。コンピュータ読み取り可能な媒体は後でコンピュータ・システムにより読み取ることができるデータを格納できる任意の記憶装置である。コンピュータ読み取り可能な媒体の例は例えば読み取り専用メモリ、フラッシュ・メモリ、ランダムアクセス・メモリ、ハードディスク・ドライブ、磁気テープ、ＣＤ−ＲＯＭおよび他の光データ記憶装置を含む。コンピュータ読み取り可能なプログラム・コードは、コンピュータ読み取り可能なプログラム・コードが分散的な形で格納され実行されるよう、連結コンピュータ・システムを含むネットワーク上に分散されることができる。
【００４２】
一実施形態が説明されたが、当業者であれば添付クレームに定義される精神および範囲から逸脱することなく変更や修正が可能であることを理解しよう。
【図面の簡単な説明】
【００４３】
【図１】オブジェクト空間におけるオブジェクト頂点を画面空間におけるオブジェクト頂点に変換する従来のＯｐｅｎＧＬ図形パイプライン。
【図２】図形オブジェクトを表示用に描画する際にオブジェクト頂点を変換するＯｐｅｎＧＬのラスター化エンジンのブロック図。
【図３】オブジェクト頂点変換の際図２のラスター化エンジンで実施される工程を示すフローチャート。
【符号の説明】
【００４４】
１１０…オブジェクト空間、１２０…視覚空間、１３０…クリップ空間、１４０…ＮＤＣ空間、１５０…画面空間、２０４…ＲＡＭ、２０５…図形プロセッサ、２０６…行列メモリ、２０８…行列メモリ、２１０…行列メモリ、２１２…状態情報メモリ。
【図１】
2008047108.tif 000005
【図２】
2008047108.tif 000006
【図３】
2008047108.tif 000007