(57)【要約】【課題】アプリケーションプログラムの画像生成をデバッグ、チューニングまたは最適化するグラフィックスルーチンのライブラリの使用法を分析するための、改善された方法を提供すること。【解決手段】命令シーケンスによって表現されるプリミティブを、これらのプリミティブが表現される合成グラフィカル状態と共に識別するステップを含み、さらに、命令シーケンスの特徴を表す信号、具体的にはその命令シーケンスがプリミティブを表現する合成グラフィカル状態を示し、それらの合成グラフィカル状態でどのプリミティブが表現されるかを集計して示す信号、を生成するステップを含む。【選択図】図２
2008192164.tif 000002
【特許請求の範囲】
【請求項１】
複数のプリミティブで形成されるグラフィカル画像を生成するコンピュータの命令シーケンスを分析するグラフィカル画像生成分析方法であって、それぞれの前記プリミティブは、複数のサブステートによって規定される１つの合成グラフィカル状態において表現され、前記コンピュータの前記命令シーケンスは、（ｉ）前記プリミティブを表現するプリミティブ描写命令と、（ｉｉ）前記合成グラフィカル状態を規定する前記サブステートを設定する状態設定命令とを含んでいて、
Ａ．現在の前記合成グラフィカル状態を決定するために、前記命令シーケンスの前記状態設定命令に応答するステップと、
Ｂ．デジタルデータ処理システムの記憶手段において、（ｉ）前記現在の合成グラフィカル状態と、（ｉｉ）前記プリミティブ描写命令によって表現される前記プリミティブと、の識別を記憶するレコードの生成および更新の少なくとも一方を行うために、前記命令シーケンスの前記プリミティブ描写命令に応答するステップと、
Ｃ．前記命令シーケンスの前記グラフィカル画像生成の特徴を表す信号を、少なくとも１つの前記レコードから生成するために、前記デジタルデータ処理システムの記憶手段にアクセスするステップとを含み、
前記信号は前記プリミティブが表現される少なくとも１つの前記合成グラフィカル状態を示し、それぞれの前記合成グラフィカル状態に対して、少なくとも１つの前記プリミティブがその合成グラフィカル状態で表現される、グラフィカル画像生成分析方法。
【請求項２】
（ｉ）前記命令シーケンスの実行、および（ｉｉ）ソースコード形態の前記命令シーケンスの解釈のいずれかによって、前記命令シーケンス中の状態設定命令とプリミティブ描写命令とを識別するステップを含む請求項１に記載のグラフィカル画像生成分析方法。
【請求項３】
複数のプリミティブで形成されるグラフィカル画像を生成するコンピュータの命令シーケンスを分析するグラフィカル画像生成分析方法であって、それぞれの前記プリミティブは、複数のサブステートによって規定される１つの合成グラフィカル状態において表現され、前記コンピュータの前記命令シーケンスは、（ｉ）前記プリミティブを表現するプリミティブ描写命令と、（ｉｉ）前記合成グラフィカル状態を規定する前記サブステートを設定する状態設定命令とを含んでいて、
Ａ．現在の前記合成グラフィカル状態を決定するために、前記命令シーケンスの前記状態設定命令に応答するステップと、
Ｂ．デジタルデータ処理システムの記憶手段において、（ｉ）前記現在の合成グラフィカル状態と、（ｉｉ）前記プリミティブ描写命令によって表現される前記プリミティブと、の識別を記憶するレコードの生成および更新の少なくとも一方を行うために、前記命令シーケンスの前記プリミティブ描写命令に応答するステップと、
Ｃ．前記命令シーケンスの前記グラフィカル画像生成の特徴を表す信号を、少なくとも１つの前記レコードから生成するために、前記デジタルデータ処理システムの記憶手段にアクセスするステップとを含み、
前記信号は前記プリミティブが表現される少なくとも１つの前記合成グラフィカル状態を示し、それぞれの前記合成グラフィカル状態に対して、少なくとも１つの前記プリミティブがその合成グラフィカル状態で表現されており、
前記ステップ（Ｂ）が、
プリミティブが前記現在の合成グラフィカル状態で前に表現されているかどうかを決定するステップと、
前に表現されていないとの前記決定に応答して、前記識別を記憶する新しいレコードを生成するステップと、
前に表現されているとの前記決定に応答して、前記現在の合成グラフィカル状態の識別を記憶しているレコードにアクセスして、前記プリミティブ描写命令によって表現される前記プリミティブの識別を記憶するために前記レコードを更新するステップと、を含むことを特徴とするグラフィカル画像生成分析方法。
【請求項４】
最後の最も新しく表現されたプリミティブが、現在の合成状態と異なる合成状態で表現されたかどうか決定するステップと、表現されている場合は、前記最後の最も新しく表現されたプリミティブの合成グラフィカル状態と異なる合成グラフィカル状態で表現されたプリミティブの回数を反映するために、切替えカウンタを前記レコードで増分するステップと、を含むことを特徴とする請求項３に記載のグラフィカル画像生成分析方法。
【請求項５】
複数のプリミティブで形成されるグラフィカル画像を生成するコンピュータの命令シーケンスを分析するグラフィカル画像生成分析方法であって、それぞれの前記プリミティブは、複数のサブステートによって規定される１つの合成グラフィカル状態において表現され、前記コンピュータの前記命令シーケンスは、（ｉ）前記プリミティブを表現するプリミティブ描写命令と、（ｉｉ）前記合成グラフィカル状態を規定する前記サブステートを設定する状態設定命令とを含んでいて、
Ａ．現在の前記合成グラフィカル状態を決定するために、前記命令シーケンスの前記状態設定命令に応答するステップと、
Ｂ．デジタルデータ処理システムの記憶手段において、（ｉ）前記現在の合成グラフィカル状態と、（ｉｉ）前記プリミティブ描写命令によって表現される前記プリミティブと、の識別を記憶するレコードの生成および更新の少なくとも一方を行うために、前記命令シーケンスの前記プリミティブ描写命令に応答するステップと、
Ｃ．前記命令シーケンスの前記グラフィカル画像生成の特徴を表す信号を、少なくとも１つの前記レコードから生成するために、前記デジタルデータ処理システムの記憶手段にアクセスするステップとを含み、
前記信号は前記プリミティブが表現される少なくとも１つの前記合成グラフィカル状態を示し、それぞれの前記合成グラフィカル状態に対して、少なくとも１つの前記プリミティブがその合成グラフィカル状態で表現されており、
前記ステップ（Ａ）が、
前記状態設定命令で識別されたサブステートが既に前記現在の合成グラフィカル状態に含まれるかどうかを決定するステップと、
前記現在の合成グラフィカル状態の識別を記憶し、前記現在の合成グラフィカル状態で既に規定されたサブステートを設定する試みがなされた回数を反映する冗長カウントを前記レコードで増分するために、含まれているとの決定に応答するステップと、を含む
ことを特徴とするグラフィカル画像生成分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータグラフィックスに係り、とりわけグラフィカル画像の生成を分析する方法に関する。本発明は、例えば３次元グラフィックスソフトウェアのチューニングおよび最適化を容易にするために適用される。
【背景技術】
【０００２】
コンピュータは、グラフィカル画像を生成するために長い間使用されてきた。初期のコンピュータシステムは２次元のみの画像しか生成することができなかったが、自動製図や地図作製などではすぐに受け入れられた。１９７０年代中頃までに、３次元グラフィックスシステムが市販されるようになった。このシステムは非常に高価になる傾向があり、専用のハードウェアおよびカスタムソフトウェアを必要とした。
【０００３】
何年もたち、標準化されたグラフィカルプログラミングインタフェースおよびライブラリは市場で容易に手に入れることができるようになった。現在では、「ＯｐｅｎＧＬ」仕様に従うものなどの業界標準グラフィックスライブラリに備えられたサブルーチン（または関数）を呼び出すことにより、アプリケーションプログラムを書込み３次元画像を生成することができる。比較的容易にグラフィックスを生成できることにより、例えばビジネス、技術および科学シミュレーション、ユーザインタフェースや、アニメーションなどのグラフィックスアプリケーションが増加した。
【０００４】
グラフィカル画像、特に３次元画像のコンピュータによる生成は、集中的にコンピュータを使用するタスクである。物体の縁部のみを描写するワイヤフレーム画像の場合でも、例えば物体の遠近図を与え、見る人の視点からそれを表示するためには多数の数学的計算が必要とされる。物体を立体として描写する場合、すなわち（それらの縁部のみでなく）それらの表面を表現する場合には、計算の数は劇的に増加する。これらの例では、システムは、物体およびその表面の隠れた表面、色、陰影、質感、照度、およびその他の属性を考慮に入れなければならない。
【０００５】
３次元立体を描写する一般的な技術は、直線、三角形、四角形やその他の多角形など、「プリミティブ」な幾何形状から複雑な表面を構成することによるものである。例えば机の画像は、並んで配置され、個別に質感を出して実際の机に対応する表面を表す数千の小さな線分および三角形の内、数十または数百を描写することにより表現することができる。
【０００６】
通常の光景に必要とされるプリミティブの数が非常に多いため、この表現処理のデバッグまたはその他の分析が非常に困難になる可能性がある。ある光景を表現するのに時間が長くかかりすぎる場合、プログラマは基礎となるアプリケーションプログラムがグラフィックスライブラリに対して行った全ての呼出しをトラックすることを試みるであろう。あいにく、光景描写中に行われたグラフィックス呼出しの数はプリミティブ自体の数の数桁倍になる可能性がある。このような多くの呼出しを意味深長にトラックすることは、必要になる場合もあるが、実質的に不可能となることがある。
【０００７】
従来技術では、この点に関連していくつかの補助手段を提供している。従来のいくつかのグラフィックスパッケージでは、表現されるプリミティブのタイプによってグラフィックスの使用法をカタログすることができる。このような分析により、例えば、机を描写するグラフィックスプログラムが３万本の線分プリミティブおよび２万５千の三角形プリミティブを表現することが分かる。これで十分な場合もあるが、このような分析は、プログラマがグラフィックスプログラムを質的および量的に分析することを可能にするのに適当ではない。
【０００８】
なお、本発明の背景技術の一部を開示する特許文献、非特許文献を下記して参考に供する。
【特許文献１】特開平０６−２４２７７１号公報
【特許文献２】特開平０７−２６２４０５号公報
【特許文献３】特開平０７−２８２２９０号公報
【非特許文献１】木村浩三、外６名，画像生成用マルチスレッド・プロセッサのマイクロ・アーキテクチャ，情報処理学会研究報告  ９４−ＡＲＣ−１０４（９４−ＯＳ−６２），日本，社団法人情報処理学会，１９９４年１月２８日，Ｖｏｌ．９４  Ｎｏ．１３，P97〜P104
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、コンピュータグラフィックスアプリケーションの品質および性能の改善を容易にすることである。さらに具体的な目的は、このようなアプリケーションプログラムの画像生成の特徴を決定する方法を提供することである。
【００１０】
本発明の関連する目的は、画像の生成をデバッグ、チューニングまたは最適化するグラフィックスルーチンのライブラリの使用法を分析するための、改善された方法を提供することである。
【００１１】
さらに別の目的は、実行中のコンピュータプログラム、およびソースコードフォーマットのコンピュータプログラムの分析に使用する上記のような方法を提供することである。
【００１２】
本発明のさらに別の目的は、３次元画像を生成するコンピュータプログラムの分析に使用する上記のような方法を提供することである。
【課題を解決するための手段】
【００１３】
前述の目的は、表現される状態に従いプリミティブをカタログすることによってグラフィカル画像の生成を分析する方法を提供する本発明によって達成される。
【００１４】
具体的に言うと、本発明は一実施形態で、複数のプリミティブを含むグラフィカル画像を生成するタイプのコンピュータ命令シーケンス、例えばコンピュータプログラムの特徴を決定する方法を提供する。この方法は、命令シーケンスによって表現されるプリミティブを、それらのプリミティブが表現されるグラフィカル状態（なお、混同の恐れがないときは単に「状態」とも称する。）と共に識別するステップを含む。これに関して、合成グラフィカル状態とは、プリミティブが表現されるサブステート（substates）の集合を指す。いくつかの例では、サブステートの照度、陰影、質感などの組み合わせを含む。
【００１５】
この方法はさらに、命令シーケンスの特徴を表す信号、具体的にはその命令シーケンスがプリミティブを表現する合成グラフィカル状態を示し、それらの状態でどのプリミティブが表現されるかを示す信号を生成するステップを含む。この信号は、デジタルデータプロセッサの、例えばランダムアクセスメモリ（ＲＡＭ）やディスクドライブなどの記憶手段に含まれたレコードまたはデータ構造に記憶することができる。これを使用して、例えばモニタまたはプリンタ上に表示を生成することもできる。
【００１６】
関連する形態で、本発明は、画像生成中に切り換わる状態の量を定める方法を提供する。本発明のこの形態は、プリミティブが表現される各状態について、異なる状態でプリミティブを表現した後の状態で、プリミティブが表現される回数をカウントするステップをさらに含む上述の方法を提供する。各カウントは、そのそれぞれの状態と共に前述の信号中に示すことができる。
【００１７】
さらに別の形態で、本発明は、合成グラフィカル状態を設定する冗長の量を定めるステップを含む方法を提供する。本発明のこの形態は、現在の状態で既に規定されたサブステートを設定する試みがなされた回数を、各合成グラフィカル状態に対してカウントするステップをさらに含む上述の方法を提供する。本発明のこの形態でも、それらの「冗長」カウントを前述の信号中に含むようになっている。
【００１８】
別の形態で、本発明は、（ｉ）プリミティブを表現するプリミティブ描写命令、および（ｉｉ）合成グラフィカル状態を規定するサブステートを設定する状態設定命令を実行することによってグラフィカル画像を生成するタイプのコンピュータ命令シーケンスを分析する方法を提供する。この方法は、状態設定命令に応答して現在の合成グラフィカル状態、すなわち現在の全てのサブステートセットによって規定される合成状態を識別するステップを含む。これはさらに、プリミティブ描写命令に応答して、現在の合成グラフィカル状態およびそのプリミティブ描写命令によって表現されるプリミティブを識別する、例えばデータ構造などの記憶レコードを生成するステップを含む。プリミティブが既に現在の状態と同様の合成状態で表現されている場合には、その状態に関連するレコードにアクセスし、現在のプリミティブ描写命令によって表現されているプリミティブの識別を含むように更新する。この方法によって生成される信号は、プリミティブをそれらが表現された状態によって識別する。
【００１９】
本発明の別の形態は、例えばオブジェクトコードなどの実行可能な形態の命令シーケンスをデジタルデータプロセッサ上で実行する上述の方法を提供する。プログラムによる、少なくとも選択されたサブルーチンおよび関数の呼出しは、プリミティブ設定命令および状態設定命令を識別するために（例えば「シェル」または「スタブ（stub）」手続きによって）インタセプト（intercept）される。本発明の代替の形態では、これらの命令はソースコード形態の命令シーケンスを解析するインタプリタ（interpreter）によって識別される。
【発明の効果】
【００２０】
上述のように本発明によれば、アプリケーションプログラムの動作とグラフィックスライブラリの相互作用に対するはるかに大きな洞察を、グラフィックスのプログラマに与えることができる。したがって、プログラマはデバッグ、チューニング、および／または最適化などに関するプログラムの動作をより容易に理解することができる。
【００２１】
本発明の以上およびその他の形態は、図面および以下の説明において明らかである。図面を参照することによって、本発明をより完全に理解することができる。
【発明を実施するための最良の形態】
【００２２】
図１は、本発明を実施するために使用するタイプのデジタルデータ処理システム５を示す図である。デジタルデータ処理システム５は、バックプレーンまたはバス１８により相互接続された中央処理装置（ＣＰＵ）１２、ランダムアクセスメモリ（ＲＡＭ）１４、および入出力コントローラ（Ｉ／Ｏ）１６を含むデジタルデータプロセッサ１０を含む。キーボード２２および指示装置２４は、データおよび制御情報を入力するために、その他の入力装置（図示せず）とともに入出力コントローラ１６を介してデジタルデータプロセッサ１０に結合される。デジタルデータプロセッサ１０は、情報にアクセスし記憶するために、記憶装置であるディスクドライブ２６およびその他の静的記憶装置（図示せず）にも接続される。モニタ２８およびその他の出力装置（図示せず）もまた、３次元グラフィックスなどの情報を表示するために入出力コントローラ１６に結合される。
【００２３】
構成要素１０〜２８を含む図示のデジタルデータ処理システム５は、既知の任意の汎用または専用コンピュータシステムにすることができる。それらは、例えば本発明の譲受人が利用できるタイプであり、改善したグラフィックス生成の分析に関する本発明の技術に従ってプログラムされ、および／または動作する３次元グラフィックスが可能なワークステーションであることが好ましい。
【００２４】
図２を参照すると、本発明の一実施形態で、図示のデジタルデータ処理システム５が、ユーザから受信した命令に例えば入力装置であるキーボード２２および／または指示装置２４を介して応答し、例えば机の３次元画像を生成するなどの特定のグラフィックスタスクを実行するアプリケーションプログラムを実行する（３０）様子が示されている。出力装置であるモニタ２８でのグラフィックスの生成を容易にするために、アプリケーションプログラム３０はグラフィックスライブラリ３２に含まれる手続きに対する呼出しを生成する。これらの呼出しの内少なくとも選択した呼出しは本発明によって分析およびカタログするためにインタセプタ（interceptor）３１により識別され、その他の呼出しは分析されずに直接グラフィックスライブラリ３２に渡される。
【００２５】
グラフィックスライブラリ３２はデータ構造を初期化し、表現する物体の状態をトラックし、グラフィックスを表示するようハードウェア装置ドライバ３４にコマンドを発行する。これは、データ構造を維持し、グラフィックスを表示するコマンド（通常はハードウェアとは無関係）を発行する、例えば性質が手続き型やオブジェクト指向型である手続きおよびデータ構造の任意のセットである。このライブラリは、ＯｐｅｎＧＬアプリケーションプログラムインタフェース（ＡＰＩ）仕様など、任意の業界標準に従って動作することができる。また、任意ベンダー特有の標準または特別の標準に従って動作することもできる。本発明の一実施形態ではグラフィックスライブラリ３２が存在する（かつこれを有利に利用する）ものと想定するが、本発明のその他の実施形態ではこの要素を必要としない。
【００２６】
ハードウェア装置ドライバ３４は、これらのコマンドをハードウェアに特定の命令として解釈および再フォーマットし、これをモニタ２８、プリンタまたはその他の出力装置に送信して所望のグラフィック画像を表示する。これは、市販またはその他の方法で入手可能な、ハードウェア固有コマンドを出力装置に駆動する任意のソフトウェアドライバである。図示の実施形態ではハードウェア装置ドライバ３４を含むが、本発明のその他の実施形態ではこれを含まない。
【００２７】
アプリケーションプログラム３０は、オブジェクトコードまたはその他のデジタルデータプロセッサ１０上で実行される命令を表す。例えばこれは、机など特定の物体の画像を作成および処理するための専用コンピュータプログラムにすることができる。これはまた、別の例として、計算機援用設計（ＣＡＤ）、またはその他のユーザが発行したコマンドに応答して物体の画像を生成できる汎用グラフィックスプログラムにすることもできる。
【００２８】
図２の実施形態では、インタセプタ３１は、グラフィックスライブラリ３２へのアプリケーションプログラム３０によってなされ、またプリミティブの描写およびそれらの状態設定を行う関数または手続き呼出し（まとめて「手続き呼出し」とする）を識別する。ＯｐｅｎＧＬと互換性のあるライブラリとともに使用する好ましい実施形態では、プリミティブ描写の呼出しは関数ｇｌＢｅｇｉｎ、ｇｌＥｎｄ、ｇｌＶｅｒｔｅｘなどを含み、状態設定呼出しは特に、ｇｌＣｕｌｌＦａｃｅ、ｇｌＤｅｐｔｈＦｕｎｃ、ｇｌＤｉｓａｂｌｅ、ｇｌＥｎａｂｌｅ、ｇｌＦｒｕｓｔｕｍ、ｇｌＬｉｇｈｔＭｏｄｅｌ、ｇｌＬｉｇｈｔ、ｇｌＬｉｎｅＷｉｄｔｈ、ｇｌＰｏｉｎｔＳｉｚｅ、ｇｌＰｏｌｙｇｏｎＭｏｄｅ、ｇｌＲｅｎｄｅｒＭｏｄｅ、ｇｌＳｈａｄｅＭｏｄｅｌなどの関数を含む。ｇｌＣｏｌｏｒやｇｌＬｏａｄＭａｔｒｉｘなどの属性設定呼出しは、状態設定呼出しと同様に扱うことができることが理解されるであろう。
【００２９】
その他の業界標準または企業標準と互換性のあるライブラリとともに使用する実施形態では、インタセプタ３１はプリミティブを描写しそれらの状態を設定するアナログ呼出しを識別することを当業者は理解するであろう。インタセプタ３１はまた、グラフィックスライブラリ３２を利用しない、すなわちアプリケーションプログラム３０が直接ハードウェア装置ドライバ３４または出力装置を呼び出す実施形態では、アナログ呼出しまたは命令（すなわちプリミティブを描写する、または状態を設定する命令）も識別する。
【００３０】
インタセプタ３１は、非侵害的に、すなわちアプリケーションプログラム３０またはグラフィックスライブラリ３２のソースコードに影響を与えることなく、ライブラリ呼出し（またはその他の呼出しおよび命令）を識別することが好ましい。
図２の実施形態では、分析すべき呼出しと同じ名前およびパラメータリストを有する「シェル」または「スタブ（stub）」手続きとしてインタセプタ３１を実施することにより、このことが認識される。シェル手続きは、例えばグラフィックスライブラリ３２にリンクされる前にアプリケーションプログラム３０にリンクされる動的リンクライブラリ（ＤＬＬ）として実施することができる。もちろん、当技術分野で一般に既知の任意数のその他の方法でシェル手続きをアプリケーションプログラム３０にリンクできることを当業者なら理解するであろう。
【００３１】
当業者なら、アプリケーションプログラム３０からグラフィックスライブラリ３２になされた呼出しをその他の方法でも識別できることを理解するであろう。例えば、図３に示すように、インタプリタ（interpreter）３１'を使用して、例えばアプリケーションプログラム３０をソースコードフォーマットで表すソースコード３０'のファイルに含まれるソースコード流を解析する。
【００３２】
このようなソースコードファイルは、本発明と同時に出願され、同時係属であり共通の譲受人に譲渡され、その教示が参照により本明細書に組み込まれる、発明者Ｊｏｈｎ Ｍ．Ｂｒｏｗｎ、Ｄｏｎ Ｗ．Ｄｙｅｒ、Ｇａｕｔａｍ ＭｅｈｒｏｔｒａおよびＣａｒｏｌ Ｌ．Ｌａｎｇによる米国特許出願に開示のタイプの方法を使用して生成されるタイプにすることができる。この出願の教示によれば、コンピュータプログラムを実行することによって発行される呼出しに対応するソースコード命令は、ファイルに記憶される。そのソースコードファイルはファイルの役目を果たし、その呼出しをインタプリタ３１'によって識別することができる。別の方法として、そのソースコードファイルをデジタルデータプロセッサ１０上でコンパイルおよび実行し、その呼出しをインタセプタ３１によって識別することもできる。
【００３３】
当技術分野で一般に使用されるタイプのインタプリタ３１'は、従来の方法でソースコードを解析し、その中の状態設定およびプリミティブ描写命令を識別する。従って、インタセプタ３１はアプリケーションプログラム３０の実行によって発行された呼出しをインタセプトすることを介してそれらの命令を識別するが、インタプリタ３１'は対応するソースコード３０'を解析することを介してそれらの命令を識別する。
【００３４】
上記に加えて、本発明のさらに別の実施形態では、各呼出しが行われるごとに識別する出力信号を生成するプログラミングステートメントを直接アプリケーションプログラム３０またはグラフィックスライブラリ３２に組み込むなど、プリミティブ描写命令および状態設定命令を識別する侵害性の技術を企図する。
【００３５】
好ましい実施形態では、アプリケーションプログラム３０からグラフィックスライブラリ３２に発行される全ての手続き呼出しは、インタセプタ３１によって分析のためにインタセプトされる。代替の実施形態では、プリミティブの状態または描写に影響を与えない呼出しはインタセプトおよびトラックされない。これは例えば、ｇｌＧｅｔＬｉｇｈｔ（ｇｌＧｅｔＸｘｘｘｘの形態のその他の呼出しを含む）などの状態検索呼出しを含むことができる。
【００３６】
インタセプタ３１（およびインタプリタ３１'）によって識別された状態設定呼出しおよびプリミティブ描写呼出しの、識別およびパラメータが分析器３３に供給され、分析器３３は、アプリケーションプログラム３０（またはソースコード３０'に相当するもの）を、それが描写するプリミティブとプリミティブが描写される状態とを共にカタログすることによって特徴付ける。その特徴を反映する中間および最後の状態レコード３９またはその他のデータ構造は、デジタルデータプロセッサ１０の例えばＲＡＭ１４などの動的または静的メモリ、および／またはディスクドライブ２６上に存在する可能性があるメモリ３８に含まれる。
【００３７】
図４は、分析器３３が動作する方法を示す図である。この図面を参照すると、この方法はステップ４２で、アプリケーションプログラム３０からグラフィックスライブラリ３２に対して行われる呼出しのタイプを決定する。プリミティブを描写する呼出しはステップ４４以下で処理される。状態を設定する呼出しはステップ５８以下で処理される。
【００３８】
ステップ４４でこの方法は、現在の合成グラフィカル状態に対する状態レコード３９が前もって生成されているかどうかを決定する。生成されている場合、そのレコードを検索し（ステップ４６）、現在のプリミティブがその状態で描写されていることを示すように修正する（ステップ４８）。ステップ５０でこの方法は、現在の合成状態を最も最近表現された最後のプリミティブを描写した状態と比較する。これら２つの合成状態が異なる場合、現在のプリミティブが最も最近表現されたプリミティブとは異なる合成状態で描写されていることを反映するように現在のレコード中の「切換え」カウンタを増分する（ステップ５０）。
【００３９】
現在の状態と同じ状態でプリミティブを表現することに関する状態レコード３９が前もって生成されていない場合、この方法はステップ５２で現在の合成状態に関する新しいレコードを作成する（ステップ５２）。その後この方法は、呼出し中で識別されたプリミティブの識別をそのレコードに記録し（ステップ５４）、「切換え」カウンタを１に初期化する（ステップ５６）。
【００４０】
ステップ５８でこの方法は、状態設定呼出し中で要求されたサブステートが最後のプリミティブが描写された合成状態に含まれるかどうかを決定する（ステップ５８）（例えばそのサブステートが現在の合成状態の一部である場合でも、その呼出しがカル（culling）の設定を要求する）。含まれる場合、この方法はそのプリミティブの描写が記録されたレコードを検索し（ステップ６０）、その「冗長」カウンタを増分し（ステップ６２）、現在の状態設定呼出しが冗長であることを示す。要求されたサブステートが冗長でない場合、この方法は別のプリミティブに備えて合成状態を更新する（ステップ６４）。
【００４１】
図２に示すタイプの「実時間」実施形態では、上記に概説した処理ステップに続いて、ステップ６６でこの方法は、インタセプタ３１中の対応するシェル手続きの引き起こした呼出しと同じ手続き呼出し（およびパラメータ）でグラフィックスライブラリ３２を呼び出すことができる（ステップ６６）。
【００４２】
分析器３３の前述の動作は、アプリケーションプログラム３０に含まれるグラフィックス呼出し（例えば状態設定およびプリミティブ描写命令）によってメモリ３８中の状態レコード３９を作成および更新する。以下の表１を参照すれば、よりよく理解することができる。
【００４３】
【表１】
2008192164.tif 000003
【００４４】
表１のステップ１を参照すると、アプリケーションプログラム３０はイネーブルサブステート１に対する呼出しを行う。これは例えば、特定のライティング（lighting）構成、またはプリミティブの表現に対してグラフィックスライブラリ３２が許す多くのサブステートの内の任意の１つにすることができる。分析器３３は、合成状態のデータ構造（図示せず）を０−０−０（デフォルト初期状態）から１−０−０に更新して呼出しに応答する。
【００４５】
表１のステップ２で、アプリケーションプログラム３０はイネーブルサブステート２に対する呼出しを発行する。この場合も、これはライティング条件、またはグラフィックスライブラリ３２が許すその他の任意の描写状態にすることができる。分析器３３は合成状態を１−１−０に更新して呼出しに応答する。
【００４６】
表１のステップ３で、アプリケーションプログラム３０は描写プリミティブＡ、例えば点、直線、三角形、多角形、またはグラフィックスライブラリ３２が表現できるその他の任意のプリミティブに対する呼出しを発行する。分析器３３は状態１−１−０に対する状態レコード３９を作成して呼出しに応答する。図示の実施形態では、このレコードは現在の合成状態および描写すべきプリミティブを識別する。このレコードはまた、それぞれに１および０に初期化される「切換え」および「冗長」の２つのカウンタも含む。カウンタ「切換え」は、別の状態でプリミティブを表現した後でプリミティブを表現するために、関連する状態（ここでは１−１−０）が何回使用されたかをトラックする。カウンタ「冗長」は、状態設定呼出しがその合成状態に既に存在する状態を何回要求したかをトラックする。
【００４７】
表１のステップ４で、アプリケーションプログラム３０はイネーブルサブステート３に対する呼出しを発行する。グラフィック使用情報収集セクション３６は合成状態を１−１−１に更新して応答する。
【００４８】
表１のステップ５で、アプリケーションプログラム３０は使用不能サブステート１に対する呼出しを発行する。グラフィック使用情報収集セクション３６は合成状態を０−１−１に更新して応答する。
【００４９】
表１のステップ６で、アプリケーションプログラム３０は描写プリミティブＢに対する呼出しを発行する。分析器３３は状態０−１−１に対するレコードを作成して応答する。このレコードはその合成状態および描写すべきプリミティブを識別する。前記の場合と同様に、２つのカウンタ「切換え」および「冗長」はそれぞれ１および０に初期化される。
【００５０】
表１のステップ７〜ステップ９で、アプリケーションプログラム３０はイネーブルサブステート１、使用不能サブステート３、および描写プリミティブＢに対する呼出しを発行する。分析器３３は、上記のように合成状態を１−１−０に設定して応答する。その後対応するレコードをメモリ３８から獲得し、そのレコードをプリミティブＢの描写を反映するように更新し、それをメモリ３８に戻す。そのレコードへのアクセスおよびその更新を、例として図２の分析器３３およびメモリ３８を接続する矢印で図示する。重要なことは、そのレコードのエントリを識別するプリミティブが、プリミティブＡおよびＢを表現するためにこの状態が使用されていることを反映することである。
【００５１】
表１のステップ１０〜ステップ１２で、アプリケーションプログラム３０はイネーブルサブステート３、使用不能サブステート３、および描写プリミティブＡに対する呼出しを発行する。分析器３３は上記の表１に示すように応答する。重要なことは、１−１−０レコードの「切換え」カウンタが、描写プリミティブＡに対する呼出しを受信したときに増分されないことである。これは、描写すべき最後のプリミティブ（プリミティブＢ）が現在のプリミティブ（Ａ）と同じ状態（１−１−０）で表現されたためである。本発明の代替の実施形態では、分析器３３はレコードの追加フィールドでのサブステート３の余分なイネーブル化および使用不能化をトラックする。
【００５２】
表１のステップ１３〜ステップ１５で、アプリケーションプログラム３０は使用不能サブステート１、イネーブルサブステート３、および描写プリミティブＡに対する呼出しを発行する。分析器３３は上記の表１に示すように応答する。
【００５３】
表１のステップ１６で、アプリケーションプログラム３０は描写プリミティブＣに対する呼出しを発行する。このプリミティブは最後のプリミティブと同じ状態で描写されるので、対応する状態レコードは現在のプリミティブの識別を含むことによってのみ更新される。
【００５４】
表１のステップ１７で、アプリケーションプログラム３０はイネーブルサブステート３に対する呼出しを発行する。このサブステートは既に合成状態で規定されているので、分析器３３は、冗長状態設定呼出しが発行されたことを反映するように対応する状態レコードを更新する。
【００５５】
分析器３３の動作の結果、メモリ３８はアプリケーションプログラム３０を特徴付ける状態レコード３９を含む。具体的に言うと、これらの状態レコード３９は、アプリケーションプログラム３０によって描写されたプリミティブをそれらのプリミティブが描写された状態と共にカタログする。以前は当技術分野で知られていなかったこの特徴付けにより、アプリケーションプログラム３０の動作とこれのグラフィックスライブラリ３２との相互作用に対するはるかに大きな洞察を、グラフィックスのプログラマに与えることができる。したがって、これによりプログラマは、例えばデバッグ、チューニング、および／または最適化に関するプログラムの動作をより容易に理解することができる。
【００５６】
分析器３３によって生成され、メモリ３８に含まれる特徴付けを反映する信号は、例えばバイナリデータ構造（例えばレコード）やテキストなどの従来の任意の形態で出力することができる。好ましい実施形態では、出力セクション４０がモニタ２８、プロッタ、またはプリンタなどの出力装置にこれらの信号を駆動してオペレータに表示する。このような１つの表示は、描写された状態でカタログされたプログラムによって描写されるプリミティブを識別する、文字によるレポートにすることができる。
【００５７】
上記の表１に基づく、このようなレポートの例を以下の表２に示す。これは上述の、各状態で描写されるプリミティブの数およびそれらのタイプ、ならびに「切換え」および「冗長」呼出しの数を示す。
【００５８】
【表２】
2008192164.tif 000004
【００５９】
表２に示した例および上記のレポートは相当に簡略化したものであることを、当業者なら理解するであろう。従来の３Ｄグラフィックスのアプリケーションプログラム３０およびグラフィックスライブラリ３２の場合は、数千乃至数百万のプリミティブをそれぞれに記録する百を越える状態レコードが生成される可能性がある。好ましい実施形態では、本発明により、オペレータはトラックするサブステートを選択することができる。例えばプログラマは、照度に関係する状態の変化のみをトラックしようとする可能性がある。これによりグラフィックスの使用法のより集中した分析が容易になることが当業者には理解されるであろう。
【００６０】
本発明が、メモリ３８中の分析器３３によって作成および維持される状態レコード３９内に、より多くの情報を含むことを企図するものであることも当業者なら理解するであろう。好ましい実施形態では、例えば各レコードは、各プリミティブの表現中に描写された直線および／または小面の数についての情報を追加的に含む。この情報もまた出力セクション４０から出力されることが好ましい。これらのレコードおよびレポートもまた、プリミティブが表現される詳細な属性（例えば色、法線、材質など）に関する情報を記憶および提供することができる。
【００６１】
出力セクション４０が、上記に示したフォーマット以外のレポートを適当な出力装置に駆動できることを、当業者ならさらに理解するであろう。これは、図表、グラフ、アニメーションなどを含む。
【００６２】
本発明による方法は、状態によって使用法をカタログおよびレポートせず、描写されるプリミティブの数と、おそらくはこれらを構成する直線および小面の数とをトラックするだけの従来技術のシステムとは大幅に異なる。本発明によるシステムおよび方法を使用することにより、プログラムの動作およびそれのライブラリとの相互作用に対するはるかに大きな洞察が、グラフィックスのプログラマに与えられる。したがって、プログラマは、例えばデバッグ、チューニングおよび／または最適化に関するプログラムの動作をより容易に理解することができる。
【００６３】
上述したのは、コンピュータグラフィックス、具体的に言うと上記に述べた物体と一致するグラフィカル画像の生成を分析するための改善した方法に関するものである。図面に示し上記に説明した実施形態は単に例として与えたものであること、および修正形態がその中に組み込まれるその他の実施形態が本発明の範囲内にあることは理解されるであろう。したがって例えば、３次元画像と同様に、２次元画像およびアニメーション画像の分析にも本発明を適用できることが理解されるであろう。さらに別の例として、状態（照度、陰影、質感など）に加えて属性（色や変換行列など）をトラックするために、本発明を利用可能であることが理解されるであろう。さらに別の例として、手続き指向プログラムと同様にオブジェクト指向プログラムにも本発明を適用できることが理解されるであろう。また、本発明は、グラフィックスの手続きおよびライブラリと同様に、非グラフィックの手続きおよびライブラリに対して行われた呼出しの解釈にも適用することができる。
【００６４】
以下に本発明の実施の形態を要約する。
１． それぞれが合成グラフィカル状態で表現される複数のプリミティブからグラフィカル画像を生成するコンピュータの命令シーケンス（３０）の特徴を決定するグラフィカル画像生成分析方法であって、Ａ．前記命令シーケンスによって表現される少なくとも１つのプリミティブを識別するステップ（４４）と、Ｂ．該プリミティブが表現される合成グラフィカル状態を識別するステップ（５８）と、Ｃ．段階Ｂで識別した少なくとも１つの前記合成グラフィカル状態を示し、該合成グラフィカル状態のそれぞれに対して前記合成グラフィカル状態の前記命令シーケンスによって表現される少なくとも１つの前記プリミティブを示す、前記命令シーケンスのグラフィカル画像生成の特徴を統計的に集計して表す信号を生成するステップ（３９）と、を含むグラフィカル画像生成分析方法。
【００６５】
２． 前記命令シーケンスをデジタルデータ処理システム（５）上で実行するステップと、前記命令シーケンスによって表現される前記プリミティブを識別するために段階Ａにおける実行を監視するステップ（３１）と、該プリミティブが表現される前記合成グラフィカル状態を識別するために段階Ｂにおける実行を監視するステップ（３１）と、を含む上記１に記載のグラフィカル画像生成分析方法。
【００６６】
３． 前記命令シーケンスがソースコードを含み、少なくとも前記命令シーケンス中のグラフィカル画像生成呼出しを識別するソースコードインタプリタ（３１'）で前記命令シーケンスを解釈するステップと、前記命令シーケンスによって表現される前記プリミティブを識別するために段階Ａにおける解釈を監視するステップ（３１）と、該プリミティブが表現される前記合成グラフィカル状態を識別するために段階Ｂにおける解釈を監視するステップ（３１）と、を含む上記１に記載のグラフィカル画像生成分析方法。
【００６７】
４． 任意の動的および静的記憶手段（３８）で段階Ｃにより生成された前記特徴を表す信号を記憶するステップ、および／または段階Ｂで識別された少なくとも１つの前記合成グラフィカル状態を示し、該合成グラフィカル状態のそれぞれに対して前記合成グラフィカル状態の前記命令シーケンスによって表現される少なくとも１つの前記プリミティブを示す、段階Ｃで生成された前記特徴を表す信号に基づいて表示信号を生成するステップ（４０）、の内の少なくとも１つを段階Ｃが含む上記１に記載のグラフィカル画像生成分析方法。
【００６８】
５． 段階Ｂが、各合成グラフィカル状態に対して、異なる合成状態でプリミティブを表現した後の合成状態でプリミティブが表現された回数をカウントするステップ（５０）を含み、段階Ｃが、前記特徴を表す信号を生成して、前記合成グラフィカル状態のそれぞれに対して、異なる合成状態でプリミティブを前記表現した後の合成状態でプリミティブが表現された回数を示すステップを含む上記１に記載のグラフィカル画像生成分析方法。
【００６９】
６． 前記合成グラフィカル状態が少なくとも１つのサブステートを含み、各合成グラフィカル状態に対して、前記命令シーケンスの実行中に現在の合成グラフィカル状態で既に規定されたサブステートを設定する試みがなされた回数をカウントするステップ（６２）を含み、段階Ｃが、前記特徴を表す信号を生成して、各合成グラフィカル状態に対して、前記命令シーケンスの実行中に前記現在の合成グラフィカル状態で既に規定されたサブステートを設定する試みがなされた前記回数を示すステップを含む上記１に記載のグラフィカル画像生成分析方法。
【００７０】
７． 複数のサブステートによって規定される合成グラフィカル状態でそれぞれに表現される複数のプリミティブから形成されたグラフィカル画像を生成し、（ｉ）プリミティブを表現するプリミティブ描写命令と、（ｉｉ）合成グラフィカル状態を規定するサブステートを設定する状態設定命令と、を含むコンピュータの命令シーケンス（３０）の特徴を決定するグラフィカル画像生成分析方法であって、Ａ．前記命令シーケンス中の状態設定命令に応答して現在の合成グラフィカル状態を決定するステップ（５８）と、Ｂ．前記命令シーケンス中のプリミティブ描写命令に応答して、デジタルデータ処理システム（５）の記憶手段（３８）中で、（ｉ）前記現在の合成グラフィカル状態と、（ｉｉ）前記プリミティブ描写命令によって表現されるプリミティブと、の識別を記憶するレコード（３９）の生成および更新の少なくとも一方を行うステップ（４４〜５６）と、Ｃ．前記デジタルデータ処理システム（５）の前記記憶手段（３８）にアクセスして、少なくとも１つの前記レコード（３９）から、プリミティブが表現される少なくとも１つの合成グラフィカル状態を示し、このような各合成グラフィカル状態に対して、当該合成グラフィカル状態で表現される少なくとも１つの前記プリミティブを示す、前記命令シーケンスのグラフィカル画像生成特徴を表す信号を生成するステップとを含むグラフィカル画像生成分析方法。
【００７１】
８． （ｉ）前記命令シーケンスの実行（３１）、および（ｉｉ）ソースコード形態の前記命令シーケンスの解釈（３１'）のいずれかによって、前記命令シーケンス中の状態設定命令およびプリミティブ描写命令を識別するステップを含む上記７に記載のグラフィカル画像生成分析方法。
【００７２】
９． 段階Ｂが、プリミティブが前記現在の合成グラフィカル状態で前もって表現されているかどうかを決定するステップ（４４）と、該決定に否定応答し、前述の前記識別を記憶する新しいレコードを生成するステップ（５２）と、該決定に肯定応答し、前記現在の合成グラフィカル状態の識別を記憶するレコードにアクセスし、前記プリミティブ描写命令によって表現される前記プリミティブの識別を記憶するように前記レコードを更新するステップ（４６）と、を含む上記７に記載のグラフィカル画像生成分析方法。
【００７３】
１０． 段階Ａが、前記状態設定命令で識別されたサブステートが既に前記現在の合成グラフィカル状態に含まれるかどうかを決定するステップ（５８）と、該決定に肯定応答し、含まれる場合には前記現在の合成グラフィカル状態の識別を記憶し、前記現在の合成グラフィカル状態で既に規定されたサブステートを設定する試みがなされた回数を反映する冗長カウントを前記レコード中で増分するステップ（６２）と、を含む上記７に記載のグラフィカル画像生成分析方法。
【図面の簡単な説明】
【００７４】
【図１】本発明の一実施形態に係るデジタルデータ処理システムを示す説明図である。
【図２】グラフィカル画像の生成を分析するシステムを示す説明図である。
【図３】アプリケーションプログラムによって行われるグラフィックス呼出しを識別する、代替技術を示すブロック図である。
【図４】本発明によるシステムにおいて、プリミティブをカタログするステップを示すフローチャートである。
【符号の説明】
【００７５】
５ デジタルデータ処理システム
１０ デジタルデータプロセッサ
１２ 中央処理装置
１４ ランダムアクセスメモリ
１６ 入出力コントローラ
１８ バス
２２ キーボード
２４ 指示装置
２８ モニタ
【図１】
2008192164.tif 000005
【図２】
2008192164.tif 000006
【図３】
2008192164.tif 000007
【図４】
2008192164.tif 000008