(57)【要約】  ３次元グラフィックスなどの動画を表示する場合に表示フレームレートを維持し、表示内容の破綻を抑制し、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示する。  複数の領域を備えたフレームバッファ４０と描画が終了したフレーム数を計数する描画フレームカウンタ１５と、描画が終了した各フレームの中で画面への表示が完了したフレーム数を計数する表示フレームカウンタ１７と、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づき前記フレームバッファ上に空き領域が存在するか否かを識別し空き領域が存在する場合は次フレームの描画を許可する描画制御部１１と、描画所要時間を予測する描画所要時間予測部１３と、表示フレームカウンタの値とフレーム表示周期と予測した描画所要時間とに基づき表示前に描画が完了するか否かを識別し完了しない場合は続く描画命令の実行を省略して次フレームの処理に進む描画省略制御部１２とを設けた。
2008105092.tif 000002
【特許請求の範囲】
【請求項１】
時系列で順次に現れる複数の表示フレームを順次に描画するグラフィックス描画装置であって、
１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、
描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、
描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、
描画所要時間を予測する描画所要時間予測部と、
前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部と
を設けたことを特徴とするグラフィックス描画装置。
【請求項２】
請求項１に記載のグラフィックス描画装置において、
前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、
前記描画所要時間予測部は、前記描画制御部が描画を許可した場合に、描画所要時間を予測することを特徴とするグラフィックス描画装置。
【請求項３】
請求項１に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、１フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。
【請求項４】
請求項１に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、１フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。  
【請求項５】
請求項１に記載のグラフィックス描画装置において、
それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に２種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、
前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とするグラフィックス描画装置。
【請求項６】
時系列で順次に現れる複数の表示フレームを順次に描画するためのグラフィックス描画方法であって、
１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、
描画が終了したフレーム数に応じて変化する第１の値を計数し、
描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第２の値を計数し、
前記第２の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とするグラフィックス描画方法。
【請求項７】
請求項１に記載のグラフィックス描画装置を搭載したグラフィックス表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置及びグラフィックス描画方法に関する。
【背景技術】
【０００２】
例えば、携帯電話端末や携帯型情報端末（ＰＤＡ）のような装置においては、様々なアプリケーションプログラムを必要に応じて実行可能なものが多い。実行可能なアプリケーションプログラムの中には、立体的に表示される様々なキャラクタを利用する３Ｄゲームや、立体的な地図を表示するナビゲーションや、立体的な図形などを表示するシミュレータのように、３次元グラフィックスを利用して様々な図形やキャラクタを画面上に表示するものも多く含まれている。【０００３】
また、上記のようなアプリケーションプログラムにおいては、画面上に動画を表示する必要があり、アプリケーションプログラムによって画面上に表示される内容は、短い時間周期で頻繁に更新される。特に、ゲームなどのアプリケーションプログラムにおいて、滑らかに変化する高品質の動画を表示しようとする場合には、一定のフレーム周期で画面上に表示する画像の内容を高速で更新する必要がある。【０００４】
但し、３次元グラフィックスのような像を描画するためには非常に高い描画処理能力が要求される。しかも、動画を構成する各フレームの描画に許される時間はフレーム周期によって制限されるので、非常に短い時間内に大量の表示要素を描画しなければならない。      【０００５】
コンピュータグラフィックスシステムでは、できるだけ高精細で美しい画像を描画したいという要望とともに、できるだけ表示のフレームレートを高く保持したいという要望がある。表示レートを低くしても構わなければ、美しい高精細画像をゆっくり描画すれば良いが、ゲームアプリケーションなど、動きがある画像を描画しなければならない場合は、フレームレートを保持できなければ、利用者に対して適切なプレゼンテーションができないことにもなりかねない。【０００６】
こうした要望に応えるために考案されたコンピュータグラフィックスシステムの描画パフォーマンスの調整方法が、例えば特許文献１に開示されている。特許文献１においては、表示要素のレンダリングに要する時間を算出するためのシミュレーションアルゴリズムを提示しており、描画処理を実行する元となる情報を作成するクリエータに対して、つまりゲームアプリケーションであればゲーム開発者に対して、最適な描画パラメータを選定させ、フレームレートが保持できないような無理な描画処理を初めから作らせないようにすることを目的としている。【０００７】
また、特許文献２に開示された従来技術においては、レンダリングエンジンの描画能力に基づき、生成する３次元キャラクタのポリゴン数を、画面への占有面積に対する見栄えに応じて加減することで、１フレームに割り当て可能な描画量をレンダリングエンジンの描画能力以内に抑えることを提案している。
【特許文献１】特表２００２−５０３８５４号公報
【特許文献２】特開２０００−２４２８０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
例えば、フレーム周期に相当する時間内に５０００個の表示要素を描画可能な処理能力を有する描画エンジンを採用している場合に、１フレーム内に１００００個の表示要素を表示させるような命令のデータを作成すると、実際には許された時間内に全てのデータの表示要素を描画できないため、表示すべき画像の一部分が欠落した内容が画面上に表示されることになり表示内容の破綻を来すことになる。特許文献１に開示された従来の方法を採用すれば、描画処理に先立ってクリエータが表示の破綻を来たさない完璧なデータを予め作成することが可能である。【０００９】
また、このような従来技術は、例えば携帯電話端末などでゲームコンテンツなどをダウンロードした場合において、そのコンテンツソフトの描画処理実行時に、表示レートを保持できるかできないかのリアルタイム判定に活用できる。しかし、表示レートの保持そのものに対して具体的な解決策を提供することはできない。【００１０】
特に携帯電話端末に関しては、機種が多岐に渡っており、それぞれの携帯電話端末に描画のために搭載されるレンダリングエンジンは、機種毎に描画能力が大きく異なる可能性が高い。従って、特定の機種向けに表示レートが維持できるようにゲームなどのコンテンツを作成しても、機種が異なれば描画能力が劣るために正しく再生できなくなるケースが起こり得る。【００１１】
また、特許文献２の従来技術を採用する場合には、ポリゴン描画の間引きを実施することにより、表示のフレームレートを保持することが可能である。しかし、間引きの際には、その使用するレンダリングエンジンの能力のみに基づいて３次元キャラクタのポリゴン数割り当てが決定されるため、必ずしもコンテンツの作成者が許容する間引きが実現されるとは限らないという虞がある。つまり、表示のフレームレートを保持するために、描画するポリゴン数を必要以上に削減することになり、コンテンツの作成者が希望する品質の画面が表示されない可能性がある。【００１２】
本発明は、３次元グラフィックスのように高い描画処理能力を要求される動画を表示する場合に、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持し、かつ表示内容の破綻を抑制すると共に、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することが可能なグラフィックス描画装置及びグラフィックス描画方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明のグラフィックス描画装置は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置であって、１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、前記描画制御部が描画を許可した場合に、描画所要時間を予測する描画所要時間予測部と、前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部とを設けたことを特徴とする。【００１４】
この構成により、フレームバッファが表示内容のデータを格納する領域を複数フレーム分備えているので、各フレームの像を画面に表示する前に、描画処理を前記フレームバッファの各領域に対して行い、描画が完了した各領域のフレームバッファの内容を必要なタイミングで画面に表示することができる。従って、ある１フレームの像を画面に表示している時に、他の複数フレームのそれぞれについて像の描画を実施することも可能になる。例えば、一定のフレーム周期で各フレームの像を画面に順次に表示する場合であっても、１フレームの時間内に描画する内容は１フレームに限定されず、実際の描画処理能力に余裕があれば、１フレームの時間内に２フレーム以上の像を描画することも可能になる。つまり、あるタイミングで次に表示すべきフレームの表示内容の描画が終了していれば、次の次に表示すべきフレームの表示内容の描画も開始することもできる。そのため、実際には描画処理が実施されない待ち時間を減らして描画処理を効率的に実行できるので、描画エンジンの処理能力を最大限に発揮することが可能になる。【００１５】
但し、フレームバッファ上の領域の数は有限であるため、特定数の領域のそれぞれを順番に循環的に繰り返し描画に使用する必要がある。そのため、実際の描画処理能力に比べて各フレームに表示する表示要素の数が比較的少ないような場合には、描画が完了した後、まだ表示が終了していないフレームの領域に対しても更なる描画処理により描画内容の上書きが実行されるおそれがある。【００１６】
それを防止するために、描画フレームカウンタと、表示フレームカウンタと、描画制御部とを設けてある。描画フレームカウンタは、描画が終了したフレーム数に応じて変化する値を計数する。表示フレームカウンタは、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数する。描画制御部は、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域（表示の済んだデータを保持する領域も空きとみなす）が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する。【００１７】
ところで、表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に（該当するフレームの表示を開始するまでに）処理できるとは限らない。【００１８】
そこで、前記描画省略制御部が、前記表示フレームカウンタの値とフレームの表示周期と前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御する。これにより、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。【００１９】
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、１フレームの描画に関する所要時間を推定することを特徴とする。【００２０】
この構成により、それぞれの描画命令を実行した時に検出された所要時間の累積値を算出するので、実際に使用する描画エンジンの描画処理能力が変化した場合であっても、１フレームの描画に関する所要時間を正確に推定することができる。【００２１】
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、１フレームの描画に関する所要時間を推定することを特徴とする。【００２２】
所定の描画エンジンが処理対象のそれぞれの描画命令を実行するときにかかる所要時間は、描画エンジン自体の処理能力と、描画命令の種類に応じて大きく変化する。処理能力が既知の描画エンジンを採用するのであれば、描画命令毎の所要時間については、描画命令の種類毎に特定可能な定数に基づいて計算により推定することができる。【００２３】
この構成により、描画命令の種類毎に特定される定数の累積値を算出することにより、１フレームの描画に関する所要時間を推定する。【００２４】
また、本発明のグラフィックス描画装置は、それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に２種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とする。【００２５】
表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に（該当するフレームの表示を開始するまでに）処理できるとは限らない。【００２６】
しかし、可能な範囲内でより品質の高い像を表示できる方が望ましいので、表示対象のデータ（描画命令のリスト）については、なるべく高精度のものを大量に用意しておく必要がある。但し、実際に使用する描画エンジンの描画処理能力の限界により、許される時間内に全ての描画命令を実行できない状況も発生しうる。そのような場合、表示内容の破綻を来すことになり、コンテンツの作成者（例えばゲームクリエータ）が希望する品質の画面が表示されない可能性がある。【００２７】
この構成により、描画命令のリスト中の描画命令毎に優先度情報を持たせることができるので、優先度の高い描画命令についてはできる限り描画が省略されないように優先的に扱うことができる。また、優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別するので、処理能力の高い描画エンジンを採用している装置においては、優先度の低い描画命令についても描画が省略されないように処理できる。従って、コンテンツの作成者は自分自身の意図（描画エンジンの性能が低い場合でもこれだけは表示したい）を各描画命令の優先度に反映させることができ、表示内容の破綻を抑制できる。【００２８】
また、本発明のグラフィックス描画方法は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するためのグラフィックス表示方法であって、１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、描画が終了したフレーム数に応じて変化する第１の値を計数し、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第２の値を計数し、前記第１の値と前記第２の値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画処理を許可すると共に描画所要時間を予測し、前記第２の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とする。【００２９】
この方法では、表示前に描画が完了するか否かを識別し、表示前に描画が完了しないと予想される場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
【発明の効果】
【００３０】
本発明によれば、３次元グラフィックスのように高い描画処理能力を要求される動画を描画する場合に、各フレームの描画に許される時間が短い場合であっても、表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、表示フレームレートを維持でき、しかも表示内容の破綻を抑制することができる。そのため、表示される像のトータルの品質をそこそこに維持できる。また、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することも可能である。
【図面の簡単な説明】
【００３１】
【図１】実施の形態におけるグラフィックス表示装置のハードウェア構成例を示すブロック図である。
【図２】図１に示す装置の主要部の動作例を示すフローチャートである。
【図３】図１に示す装置及び従来例の動作例を示すタイムチャートである。
【図４】図１に示す装置の動作例を示すタイムチャートである。
【図５】図１に示す装置及び従来例の動作例を示すタイムチャートである。
【図６】描画所要時間を検出するため構成要素の具体例を示すブロック図である。
【図７】描画命令リストの構成例を示す模式図である。
【図８】図１に示す装置の主要部の動作例を示すフローチャートである。
【符号の説明】
【００３２】
１０  グラフィックス処理部
１１  マイクロプロセッサ
１２  ポリゴン描画エンジン
１３  描画時間検出部
１４  描画時間累積計算部
１５  描画カウンタ
１６  表示エンジン
１７  表示カウンタ
２０  描画命令保持部
２１  描画命令リスト
３０  表示デバイス
４０  リングバッファ
４１  記憶領域
【発明を実施するための最良の形態】
【００３３】
本発明のグラフィックス描画装置及びグラフィックス描画方法に関する具体的な１つの実施の形態について、図１〜図８を参照しながら以下に説明する。【００３４】
図１は実施の形態におけるグラフィックス描画装置を搭載したグラフィックス表示装置のハードウェア構成例を示すブロック図である。図２は図１に示す装置の主要部の動作例を示すフローチャートである。図３は図１に示す装置及び従来例の動作例を示すタイムチャートである。図４は図１に示す装置の動作例を示すタイムチャートである。図５は図１に示す装置及び従来例の動作例を示すタイムチャートである。図６は描画所要時間を検出するため構成要素の具体例を示すブロック図である。図７は描画命令リストの構成例を示す模式図である。図８は図１に示す装置の主要部の動作例を示すフローチャートである。【００３５】
図１に示すグラフィックス表示装置は、グラフィックス処理部１０と、描画命令保持部２０と、表示デバイス３０と、リングバッファ４０とで構成されている。また、グラフィックス処理部１０は、マイクロプロセッサ（ＣＰＵ）１１と、ポリゴン描画エンジン１２と、描画時間検出部１３と、描画時間累積計算部１４と、描画カウンタ１５と、表示エンジン１６と、表示カウンタ１７とを備えている。
なお、グラフィックス表示装置は、例えば携帯電話やＰＤＡ、携帯ゲーム機等である。      【００３６】
グラフィックス処理部１０は、グラフィックスに関する様々な処理を実施するためのハードウェアである。表示デバイス３０は、例えば液晶表示装置のように２次元の表示画面を備えた表示装置である。描画命令保持部２０は、画面の各フレームに表示すべき各表示要素（ポリゴンなどのグラフィックス）に相当する描画命令を一覧として並べた描画命令リスト２１のデータを保持するための記憶装置である。リングバッファ４０は、表示デバイス３０の画面に表示すべき表示内容のデータをフレーム毎に保持するための記憶装置である。【００３７】
図１に示す具体例においては、リングバッファ４０上に３つの記憶領域４１(0)、４１(1)、４１(2)が設けてあり、それぞれの記憶領域４１(0)、４１(1)、４１(2)が各々独立したフレームの表示内容に相当するデータを保持することができる。３つの記憶領域４１(0)、４１(1)、４１(2)は、連続的に現れる表示デバイス３０の各表示フレームに対応付けて、順番にかつ巡回的に使用されるので、リングバッファとして機能する。つまり、記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の順番で各表示フレームに対応付けられる。【００３８】
マイクロプロセッサ１１は、表示内容を決定するデータである描画命令を作成し、描画命令リスト２１として描画命令保持部２０に蓄積するとともに、グラフィックス処理部１０の全体の制御を実施する。【００３９】
ポリゴン描画エンジン１２は、描画処理専用のハードウェアであり、描画命令リスト２１に存在する各描画命令に従ってポリゴンの描画を実行する。ポリゴン描画エンジン１２の描画結果は、リングバッファ４０上のいずれかの記憶領域４１に格納される。また、ポリゴン描画エンジン１２が描画命令リスト２１から描画命令を取り込む際には、マイクロプロセッサ１１を経由せず、ＤＭＡ（Direct Memory Access）により描画命令のデータが描画命令保持部２０からポリゴン描画エンジン１２に転送される。また、一連の描画処理がポリゴン描画エンジン１２内で完了すると、マイクロプロセッサ１１の処理に対して割り込みがかかるように設計されている。【００４０】
表示エンジン１６は、描画内容を表示デバイス３０の画面に表示するための処理を行うための専用のハードウェアである。具体的には、表示エンジン１６はリングバッファ４０上の各記憶領域４１の内容（データ）を表示デバイス３０上のメモリに対して高速で転送するための処理を実施する。また、表示エンジン１６は、１フレームのデータを表示デバイス３０に転送する処理が完了するたびに、所定の完了通知割り込みを、フレーム同期割り込みとしてマイクロプロセッサ１１に与える。【００４１】
表示カウンタ１７は、表示デバイス３０に表示済みのフレーム数を計数するカウンタである。ここでは、表示カウンタ１７の内容を変数Ｌで表す。描画カウンタ１５は、描画処理が終了したフレーム数を計数するカウンタである。ここでは、描画カウンタ１５の内容を変数Ｋで表す。描画時間検出部１３は、ポリゴン描画エンジン１２が各描画命令を実行する際にかかった描画所要時間を測定する。描画時間累積計算部１４は、描画時間検出部１３が検出した描画所要時間に関する累積処理を実施する。【００４２】
図１に示したグラフィックス表示装置の主要な処理に関する制御手順の具体例が図２に示されている。図２に示す処理は、マイクロプロセッサ１１によって制御され、互いに独立して動作するプログラムの処理内容を表す描画スレッドと、表示スレッドとの２つで構成されている。【００４３】
まず、図２に示した表示スレッドのアルゴリズムについて説明する。なお、表示可能な描画データが完成していなければ表示は始められないので、表示スレッドの起動は、描画スレッドから規定時間だけ遅れて、ないし表示可能なデータが出来てから開始されるのが普通である。【００４４】
表示スレッドが開始された際、初期化のステップ（Ｓ３１）にて表示カウンタ１７の内容（Ｌ）は０に初期化される。次に、終了判定のステップ（Ｓ３２）を経て、周期Ｔにて発生する表示フレームの割り込みがマイクロプロセッサ１１に入るのを待つ。なお、周期Ｔは表示フレームの更新周期を表し、例えば（１／６０）秒程度の一定時間になる。【００４５】
表示フレームの割り込みが入るとステップＳ３４に進み、表示カウンタ１７の内容（Ｌ）をリングバッファ４０の巡回数Ｎ（図１の例ではＮ＝３）を底とする剰余系で示したインデックス（変数）に対応するリングバッファ４０（記憶領域４１(0)、４１(1)、４１(2)のいずれか）に保持されているデータを、表示エンジン１６を用いて表示デバイス３０に転送しその内容を画面に表示する。【００４６】
その後、ステップＳ３５で表示カウンタ１７の内容（Ｌ）をインクリメントし、次に表示を行うべきリングバッファ４０のインデックスを更新する（Ｓ３６）。このインデックスは、前述のとおり表示カウンタ１７の内容（Ｌ）の値を、Ｎを底とする剰余系で示すことで得られる。その後、表示の終了判定のステップ（Ｓ３２）に戻る。終了が検出されると、表示スレッドが終了する。【００４７】
つまり、図２に示す表示スレッドを繰り返し実行することにより、表示フレームの割り込みが入る度に、リングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に表示デバイス３０に転送され画面上に表示される。なお、表示フレームの割り込みが入る度にリングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に転送されると説明したが、表示フレームの割り込みが所定回数入ったときにリングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に転送されるように構成してもよい。表示フレームの割り込み周期は液晶画面の走査周期である１/６０秒が標準的であり、１秒間のうち６０回画像が更新されることになるが、表示する画像の内容によっては、１秒間に３０回、２０回または１５回画像が更新されればよいものもある。このように１秒間に画像を更新する回数を調整するために、表示フレームの割り込みが２回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に３０回画像を更新することができり、表示フレームの割り込みが３回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に２０回画像を更新することができ、表示フレームの割り込みが４回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に１５回画像を更新することができる。このとき、表示カウンタＬは、表示フレームの割り込みが２回、３回、４回入ったときに更新されるようにすればよい。【００４８】
次に、図２に示す描画スレッドのアルゴリズムについて説明する。なお、図２に示す比較処理の各ステップの中で、「！＝」は左辺と右辺の値が等しくないかどうかの比較を意味し、「｜｜」は論理和（ＯＲ）を意味し、「＝＝」は左辺と右辺の値が等しいかどうかの比較を意味している。【００４９】
描画が開始されると、まず初期化のステップ（Ｓ１１）にて各種カウンタ類の０クリアがなされる。次に、終了判定のステップ（Ｓ１２）を経て、マイクロプロセッサ１１によるＫフレーム目の描画命令リスト２１の生成が行われ（Ｓ１３）、図１に示す描画命令保持部２０に描画命令リスト２１が保存される。【００５０】
次のステップＳ１４では、現在ポリゴン描画エンジン１２が描画している先のリングバッファ４０の記憶領域４１を表すインデックス（書き込み位置すなわち描画位置を表す変数）と、次に表示がなされるべき、もしくは今表示のためにデータ転送中の記憶領域４１を表すインデックス（読み出し位置すなわち表示位置を表す変数）とを比べることにより、リングバッファ４０の仕組み上で、描画のインデックスが表示のインデックスを追い越さないかどうかを判定する。【００５１】
簡単な判別方法としては、描画と表示のインデックスの差分値について、底をＮとした剰余系で見た時に、０でなければ（（（Ｋ−Ｌ）％Ｎ！＝０）の条件を満たせば）、リングバッファ４０上の重なりが発生しないので、追い越しも追い着きもせず安全であり、リングバッファ４０上の空いている領域（又は表示が済んだ不要なデータを保持している領域）に対して描画処理を行うことになる。なお、描画スレッドを開始したばかり、すなわち描画カウンタ１５の内容（Ｋ）が０の場合には、無条件にこの判定ステップ（Ｓ１４）を抜けて次の描画命令実行のステップに移る。判定の結果、追い着きが認められると、表示カウンタＬが更新されて描画と表示のバッファの重なりがなくなるまで、描画命令実行のステップには移らずに待ちのステップ（Ｓ１５）に入る。なぜ待つ必要があるかについては後で述べる。【００５２】
次に、描画命令実行のステップについて説明する。ポリゴン描画エンジン（レンダリングエンジン）１２は、描画を実行して良いという命令をマイクロプロセッサ１１から受けると、描画命令保持部２０のバッファからＤＭＡ転送にて描画命令リスト２１の命令列を取得し、その命令内容に従って描画処理を行う（Ｓ１６）。【００５３】
また、図１に示すように描画時間検出部１３がポリゴン描画エンジン１２に接続されており、描画時間検出部１３はポリゴン描画エンジン１２の動作状態と時間を監視している。そして、それぞれの描画命令毎に、その命令の実行開始から終了までにかかった所要時間δをステップＳ１６で検出する。【００５４】
また、描画時間検出部１３に接続されている描画時間累積計算部１４は、描画時間検出部１３が各時点で検出した所要時間δを順次に累積し、累積時間ｔを算出する（Ｓ１７）。この累積時間ｔは、図２の描画スレッドが開始された時間からの累積経過時間を表す。【００５５】
次にポリゴン描画エンジン１２がいま描画中のＫ番目のフレームに対する処理が、表示のタイミングに間に合うか否かを判定するためのステップに移る。すなわちステップＳ１８では、描画時間累積計算部１４が算出した累積時間ｔを、次に表示スレッドにて表示がなされる時刻を表す（Ｌ×Ｔ）と比較する。Ｌは表示カウンタの値であり、Ｔは表示のフレーム周期である。【００５６】
ｔが（Ｌ×Ｔ）より小さければ表示までの時刻に間に合うので次のステップＳ１９に進む。間に合わないと判断した場合には、せっかく描画中のデータであっても表示までに完成しないので継続する意味がないと判断し、現在処理中のフレームに対する描画を中断して次のフレームの描画に移行するべく、カウンタＫの更新ステップ（Ｓ２１）にジャンプする。なぜジャンプするかについての詳細説明は、図５を用いて後で述べる。【００５７】
ｔが（Ｌ×Ｔ）より小さい場合には、次のステップＳ１９で、現在描画中のＫ番目のフレームが完成したか否か、つまり描画命令リスト２１上の全ての描画命令の実行を終了したか否かを判定する。未完成と判定した場合には、次の描画命令を実行するためにステップＳ２０に進み、描画命令リスト２１から次の描画命令を取り出す。そしてステップＳ１６以降の処理をループ状に繰り返す。【００５８】
Ｋ番目のフレームの描画が完成したと判定した場合には、ステップＳ１９からステップＳ２１に進み、描画カウンタ１５の値Ｋを更新する。更に、次のステップＳ２２で描画を行うターゲットのバッファ（リングバッファ４０上の該当する１つの記憶領域４１）を次のインデックスに対応するものに切り替える。なおこのインデックスの値は、描画カウンタ１５の値Ｋを、Ｎを底とする剰余系で示す（Ｋ％Ｎ）ことで得られる。【００５９】
図２に示す描画スレッドの処理においては、描画先のターゲットバッファを切り替えたあと、次のフレームの描画を休みなく進めるために終了判定ステップ（Ｓ１２）にループし、最終フレームに到達しない限り次のフレームの描画を継続する。この理由については図３を用いて次に説明する。【００６０】
図３は、図１に示すグラフィックス表示装置における描画動作及び表示動作のタイミングの具体例を表している。図３（ａ）は図２に示す動作を実行する場合のタイミングを示し、図３（ｂ）は一般的な（従来の）動作を実行する場合のタイミングを示している。【００６１】
図３（ｂ）に示す動作例では、フレーム毎に、フレームの開始時刻に描画処理を開始し、１つのフレームに許される時間内（フレーム間隔Ｔ以内）を経過する前に描画処理を終了する。そして、描画処理が終了した表示内容のデータを次フレームが開始するタイミングに合わせて画面に表示する。従って、フレーム間隔Ｔを超える前に描画処理が確実に終了するように、描画対象のデータ（描画命令リスト２１の内容に相当）を予め少なめに用意しておく必要がある。その結果、各フレームの描画処理が完了してから次のフレームが開始するまでに、ポリゴン描画エンジン１２が描画処理を停止している「余り時間」が発生する。従って、フレーム間隔Ｔの全体を描画処理のために有効に利用できず、処理能力の高いポリゴン描画エンジン１２を採用した場合でも、大量の描画命令を実行することができなかった。そこで、図２に示した動作を実行することにより、効率的な描画処理の実行が実現する。【００６２】
すなわち、図３（ａ）に示す動作例では、ポリゴン描画エンジン１２が１つのフレームについて描画処理が終了した後、次フレームが開始するタイミングを待つことなしに、後続のフレームに対する描画処理を開始する。そのため、図３（ｂ）に示すような「余り時間」が発生せず、限られた時間（フレーム間隔Ｔ）の全体を描画処理のために有効に利用できる。図１に示すグラフィックス表示装置においては、リングバッファ４０に複数の記憶領域４１を設けてあるので、表示しているフレーム以外の複数フレームに関する描画処理を同時に行うことができる。従って、事前に描画命令リスト２１として大量の描画命令を用意しておけば、「余り時間」を有効に使ってより複雑高度な絵を描くことができるようになる。【００６３】
しかし、リングバッファ４０上の記憶領域４１の数が有限であるため、特別な制御を行わないと図４（ｂ）に示すような問題が生じる可能性がある。すなわち、図４（ｂ）に示す例では、１フレームの時間（フレーム間隔Ｔ）内に３（Ｎ）フレーム以上の表示内容をポリゴン描画エンジン１２が実行できる場合を想定している。そのため、１つのフレームの描画時間内に、記憶領域４１(0)、４１(1)、４１(2)に順番に書き込んだ後、記憶領域４１(0)の内容を画面に表示する前に、更に記憶領域４１(0)に後続フレームの表示内容を書き込むことになり、先に記憶領域４１(0)に書き込まれた表示内容が上書きによって破壊される可能性がある。【００６４】
そこで、図２に示すような描画スレッドの処理を実行することにより、このような問題の発生を防止する。つまり、図２のステップＳ１４で、描画処理が表示を追い越さないかどうか、すなわち表示を完了していないデータが書き込まれている領域以外の空き領域がリングバッファ４０に存在するかどうかを識別することにより、上記のような上書きによるデータの破壊を防止できる。【００６５】
例えば、図４（ａ）に示す動作例では、１つのフレームの描画時間内に、ポリゴン描画エンジン１２が記憶領域４１(0)、４１(1)、４１(2)に順番に書き込んだ後、まだ表示されていない記憶領域４１(0)のデータの破壊を防ぐために、次フレームが開始するタイミングになるまで描画処理を中断して待機する（図２のＳ１５に対応）。【００６６】
ところで、１フレームの描画時間にある程度の幅の許容量を持たせた場合でも、絵（表示すべき内容）がいっそう複雑高度になると、そのフレームの表示時刻に対して描画処理の完了が間に合わなくなるケースが出てくる。【００６７】
例えば、図５（ｂ）に示す動作例では、時刻ｔａ〜時刻ｔｂの間の期間（Ｔ）内に処理すべきフレームの描画が、時刻ｔｂまでに終了していない。従って、描画処理の終了が表示開始のタイミング（ｔｂ）に間に合わず、不完全な絵が画面に表示されることになる。更に、時刻ｔｂになっても前フレームの描画処理が継続しているため、時刻ｔｂ〜時刻ｔｃの間の期間（Ｔ）内に処理すべきフレームの描画開始が遅くなり、後続するフレームの描画も間に合わなくなる可能性が高い。従って、実際に表示される絵の内容に破綻を来すことになる。【００６８】
しかし、図２に示す描画スレッドの処理においてステップＳ１８を実行することにより、このような問題の発生を回避できる。すなわち、あるフレームに対する描画処理の実行中に、当該フレームを表示するタイミングを超過するか、もしくはそのタイミングまでに描画処理が完了しないと認識した場合には、続く描画命令の実行を省略して後続フレームの描画処理に進む。【００６９】
例えば、図５（ａ）に示す動作例では、時刻ｔａ〜時刻ｔｂの間の期間（Ｔ）内に処理すべきフレームの描画が、時刻ｔｂまでに終了しないので、時刻ｔｂを超過した時点で当該フレームに対する描画を中断し、後続フレームの描画に進む。このため、時刻ｔａ〜時刻ｔｂの期間に間に合わなかった特定のフレームについては不完全な絵が表示されることになるが、後続フレームの描画には影響を及ぼさないので、表示内容の破綻は最小限に抑制される。【００７０】
なお、図２に示した描画スレッドのステップＳ１８においては、描画処理が表示開始のタイミングを超過した時点で処理を中断するように制御しているが、ステップＳ１８における比較の内容を変更することにより、描画処理が表示開始のタイミングを超過する前に処理を中断することも可能である。【００７１】
図１に示したグラフィックス表示装置に搭載可能な描画時間検出部１３に関する構成例が図６に示されている。図６（ａ）に示す構成例では、図１の構成と同様に、描画時間検出部１３がポリゴン描画エンジン１２の動作状態と時間とを監視して、実際の描画処理に要した所要時間を測定するように構成されている。【００７２】
一方、図６（ｂ）に示す構成例では、描画時間検出部１３が描画命令リスト２１からポリゴン描画エンジン１２に入力される各描画命令の内容を把握して、この内容から描画処理に要する所要時間を推定する場合を想定している。具体的には、描画命令の種類毎にそれを実行するのに要する所要時間を表す定数を予め保持するデータベースを利用し、検出した描画命令の種類に基づき前記データベースにアクセスして描画の所要時間を推定する。なお、実際の描画所要時間は使用するポリゴン描画エンジン１２の性能に応じて変化する。しかし、性能の異なる複数種類のポリゴン描画エンジン１２について描画所要時間を検出する場合であっても、実際に使用するポリゴン描画エンジン１２の能力に応じた補正係数を用いてデータベース上の定数を補正することにより、正確な所要時間を推定できる。【００７３】
ところで、使用するポリゴン描画エンジン１２の性能に比べて過大な（大量の）描画命令を処理しようとする場合には、各フレームに許される限られた時間内に全ての描画命令を処理しきれないので、例えば図５（ａ）に示すように描画を途中で中断せざるを得ない場合が生じる。その場合、コンテンツ作成者の意志とは無関係に、ポリゴン描画エンジン１２の性能に応じて不完全な絵が表示されることになり、表示内容の見栄えが悪化するのは避けられない。【００７４】
このような問題を解消するための方法について以下に説明する。描画命令保持部２０上に保持する描画命令リスト２１には、例えば図７に示すように、描画命令と共に各々の描画命令に対応付けた優先度情報を保持する。図７に示す例では、「優先度Ａ」と「優先度Ｂ」との２種類以上の優先度が割り当て可能な場合を想定している。例えば、画面上に表示する各表示要素の中で、比較的大きい要素や、他の要素の手前側に存在する要素のように目立ちやすい要素、あるいは影響度の高い要素を描画するための描画命令に対しては優先度の高い「優先度Ａ」を割り当て、比較的小さい要素や、他の要素の後ろ側に存在する要素のようにあまり目立たない要素を描画するための描画命令に対しては優先度の低い「優先度Ｂ」を割り当てるようにすればよい。【００７５】
従って、携帯電話などハード性能上の制約が多いシステムにおいてゲームコンテンツなどのアプリケーションプログラムを実行する場合において、コンテンツ作成者が見栄えを考慮した上での描画の間引き方、および表示レートの保持を実現するために、優先度の割り当てを利用することができる。【００７６】
つまり、「優先度Ａ」の描画命令１〜４は優先して描画されるが、「優先度Ｂ」の描画命令５以降は、もともとのポリゴン描画エンジン１２のポテンシャルから考えて、フレームレート維持には描画が間に合いそうにない場合、描画をスキップして次の描画命令の実行に移行させるように制御することができる。すなわち、「優先度Ｂ」が割り当てられる描画命令については、１画面を構成する上で「別段、無くてもプレーヤーに画面の意図を伝えられる、もしくは、有ったほうがよりリッチな表現になるが無くても困らないオブジェクト」になるようにコンテンツ作成者に最初から指定しておいてもらうことができる。これにより、コンテンツ作成者の意志を反映した表示内容の決定が可能になる。【００７７】
図７に示すように優先度の情報を有する描画命令リスト２１が存在する場合には、図２に示した動作例の代わりに、図８に示す動作例のようにマイクロプロセッサ１１の制御の内容を変更すればよい。図８に示す動作例では、ステップＳ４６及びステップＳ４７が追加された点が図２と異なっているが、それ以外は図２と同様である。【００７８】
図８のステップＳ４６では、処理対象の描画命令の優先度が「優先度Ａ」か「優先度Ｂ」かを判定する。優先度が「優先度Ｂ」である場合には次のステップＳ４７に進み、「優先度Ａ」である場合はステップＳ４８の処理に進む。【００７９】
ステップＳ４７では、ポリゴン描画エンジン１２を主体とするこの装置のハードウェアが「優先度Ｂ」の描画命令を実行するに足りる性能を具備しているか否かを判定する。すなわち、能力の高いハードウェアを搭載している場合には処理に余裕があるので比較的優先度の低い描画命令も含めて実行することにより情報量の多い高品質の絵を表示できる。しかし、能力の低いハードウェアを搭載している場合には処理に余裕がないので優先度の低い描画命令の実行を省略することにより、時間的に処理が間に合わない状況の発生を防止すると共に、コンテンツ作成者の意志を反映するように、優先度の高い必要最小限の描画命令はもれなく実行できるように制御することが可能になる。【００８０】
なお、ステップＳ４７で検出するハードウェアの性能については、使用しているポリゴン描画エンジン１２の種類とその動作周波数とに基づいて特定することができる。従って、例えばポリゴン描画エンジン１２の種類を表す情報と、ポリゴン描画エンジン１２の動作周波数を表す情報とを基本情報としてＲＯＭ（読み出し専用メモリ）などに予め登録しておき、ステップＳ４７を実行する際には、前記ＲＯＭから読み出した情報に基づいてハードウェアの性能を検出し、その結果と事前に「優先度Ｂ」に対応付けられた定数（閾値）とを比較すればよい。【００８１】
なお、図７及び図８に示す具体例では、優先度が「優先度Ａ」と「優先度Ｂ」との２種類だけの場合を想定しているが、３種類以上の優先度を各描画命令に割り当てるようにしても良い。その場合には、割り当て可能な優先度の数に応じて、図８におけるステップＳ４６、Ｓ４７と同等の処理を更に追加すればよい。【００８２】
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
【産業上の利用可能性】
【００８３】
本発明は、例えば携帯電話端末や携帯型情報端末（ＰＤＡ）のように、必ずしも高性能のポリゴン描画エンジンを搭載できない装置において、３Ｄゲームアプリケーションプログラムなどを実行し、高品質のグラフィックス表示を行おうとする場合であっても、描画エンジンの処理能力を最大限に引き出すことが可能であるため、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持したり、表示内容の破綻を抑制することが可能になる。
【図１】
2008105092.tif 000003
【図２】
2008105092.tif 000004
【図３】
2008105092.tif 000005
【図４】
2008105092.tif 000006
【図５】
2008105092.tif 000007
【図６】
2008105092.tif 000008
【図７】
2008105092.tif 000009
【図８】
2008105092.tif 000010
【手続補正書】
【提出日】平成21年6月25日(2009.6.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
時系列で順次に現れる複数の表示フレームを順次に描画するグラフィックス描画装置であって、
１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、
描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、
描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、
描画所要時間を予測する描画所要時間予測部と、
前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部と
を設けたことを特徴とするグラフィックス描画装置。
【請求項２】
請求項１に記載のグラフィックス描画装置において、
前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、
前記描画所要時間予測部は、前記描画制御部が描画を許可した場合に、描画所要時間を予測することを特徴とするグラフィックス描画装置。
【請求項３】
請求項１に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、１フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。
【請求項４】
請求項１に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、１フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。
【請求項５】
請求項１に記載のグラフィックス描画装置において、
それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に２種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、
前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とするグラフィックス描画装置。
【請求項６】
時系列で順次に現れる複数の表示フレームを順次に描画するためのグラフィックス描画方法であって、
１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、
描画が終了したフレーム数に応じて変化する第１の値を計数し、
描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第２の値を計数し、
前記第２の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とするグラフィックス描画方法。
【請求項７】
請求項１に記載のグラフィックス描画装置を搭載したグラフィックス表示装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置及びグラフィックス描画方法に関する。
【背景技術】
【０００２】
例えば、携帯電話端末や携帯型情報端末（ＰＤＡ）のような装置においては、様々なアプリケーションプログラムを必要に応じて実行可能なものが多い。実行可能なアプリケーションプログラムの中には、立体的に表示される様々なキャラクタを利用する３Ｄゲームや、立体的な地図を表示するナビゲーションや、立体的な図形などを表示するシミュレータのように、３次元グラフィックスを利用して様々な図形やキャラクタを画面上に表示するものも多く含まれている。
【０００３】
また、上記のようなアプリケーションプログラムにおいては、画面上に動画を表示する必要があり、アプリケーションプログラムによって画面上に表示される内容は、短い時間周期で頻繁に更新される。特に、ゲームなどのアプリケーションプログラムにおいて、滑らかに変化する高品質の動画を表示しようとする場合には、一定のフレーム周期で画面上に表示する画像の内容を高速で更新する必要がある。
【０００４】
但し、３次元グラフィックスのような像を描画するためには非常に高い描画処理能力が要求される。しかも、動画を構成する各フレームの描画に許される時間はフレーム周期によって制限されるので、非常に短い時間内に大量の表示要素を描画しなければならない。
【０００５】
コンピュータグラフィックスシステムでは、できるだけ高精細で美しい画像を描画したいという要望とともに、できるだけ表示のフレームレートを高く保持したいという要望がある。表示レートを低くしても構わなければ、美しい高精細画像をゆっくり描画すれば良いが、ゲームアプリケーションなど、動きがある画像を描画しなければならない場合は、フレームレートを保持できなければ、利用者に対して適切なプレゼンテーションができないことにもなりかねない。
【０００６】
こうした要望に応えるために考案されたコンピュータグラフィックスシステムの描画パフォーマンスの調整方法が、例えば特許文献１に開示されている。特許文献１においては、表示要素のレンダリングに要する時間を算出するためのシミュレーションアルゴリズムを提示しており、描画処理を実行する元となる情報を作成するクリエータに対して、つまりゲームアプリケーションであればゲーム開発者に対して、最適な描画パラメータを選定させ、フレームレートが保持できないような無理な描画処理を初めから作らせないようにすることを目的としている。
【０００７】
また、特許文献２に開示された従来技術においては、レンダリングエンジンの描画能力に基づき、生成する３次元キャラクタのポリゴン数を、画面への占有面積に対する見栄えに応じて加減することで、１フレームに割り当て可能な描画量をレンダリングエンジンの描画能力以内に抑えることを提案している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００２−５０３８５４号公報
【特許文献２】特開２０００−２４２８０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
例えば、フレーム周期に相当する時間内に５０００個の表示要素を描画可能な処理能力を有する描画エンジンを採用している場合に、１フレーム内に１００００個の表示要素を表示させるような命令のデータを作成すると、実際には許された時間内に全てのデータの表示要素を描画できないため、表示すべき画像の一部分が欠落した内容が画面上に表示されることになり表示内容の破綻を来すことになる。特許文献１に開示された従来の方法を採用すれば、描画処理に先立ってクリエータが表示の破綻を来たさない完璧なデータを予め作成することが可能である。
【００１０】
また、このような従来技術は、例えば携帯電話端末などでゲームコンテンツなどをダウンロードした場合において、そのコンテンツソフトの描画処理実行時に、表示レートを保持できるかできないかのリアルタイム判定に活用できる。しかし、表示レートの保持そのものに対して具体的な解決策を提供することはできない。
【００１１】
特に携帯電話端末に関しては、機種が多岐に渡っており、それぞれの携帯電話端末に描画のために搭載されるレンダリングエンジンは、機種毎に描画能力が大きく異なる可能性が高い。従って、特定の機種向けに表示レートが維持できるようにゲームなどのコンテンツを作成しても、機種が異なれば描画能力が劣るために正しく再生できなくなるケースが起こり得る。
【００１２】
また、特許文献２の従来技術を採用する場合には、ポリゴン描画の間引きを実施することにより、表示のフレームレートを保持することが可能である。しかし、間引きの際には、その使用するレンダリングエンジンの能力のみに基づいて３次元キャラクタのポリゴン数割り当てが決定されるため、必ずしもコンテンツの作成者が許容する間引きが実現されるとは限らないという虞がある。つまり、表示のフレームレートを保持するために、描画するポリゴン数を必要以上に削減することになり、コンテンツの作成者が希望する品質の画面が表示されない可能性がある。
【００１３】
本発明は、３次元グラフィックスのように高い描画処理能力を要求される動画を表示する場合に、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持し、かつ表示内容の破綻を抑制すると共に、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することが可能なグラフィックス描画装置及びグラフィックス描画方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明のグラフィックス描画装置は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置であって、１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、前記描画制御部が描画を許可した場合に、描画所要時間を予測する描画所要時間予測部と、前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部とを設けたことを特徴とする。
【００１５】
この構成により、フレームバッファが表示内容のデータを格納する領域を複数フレーム分備えているので、各フレームの像を画面に表示する前に、描画処理を前記フレームバッファの各領域に対して行い、描画が完了した各領域のフレームバッファの内容を必要なタイミングで画面に表示することができる。従って、ある１フレームの像を画面に表示している時に、他の複数フレームのそれぞれについて像の描画を実施することも可能になる。例えば、一定のフレーム周期で各フレームの像を画面に順次に表示する場合であっても、１フレームの時間内に描画する内容は１フレームに限定されず、実際の描画処理能力に余裕があれば、１フレームの時間内に２フレーム以上の像を描画することも可能になる。つまり、あるタイミングで次に表示すべきフレームの表示内容の描画が終了していれば、次の次に表示すべきフレームの表示内容の描画も開始することもできる。そのため、実際には描画処理が実施されない待ち時間を減らして描画処理を効率的に実行できるので、描画エンジンの処理能力を最大限に発揮することが可能になる。
【００１６】
但し、フレームバッファ上の領域の数は有限であるため、特定数の領域のそれぞれを順番に循環的に繰り返し描画に使用する必要がある。そのため、実際の描画処理能力に比べて各フレームに表示する表示要素の数が比較的少ないような場合には、描画が完了した後、まだ表示が終了していないフレームの領域に対しても更なる描画処理により描画内容の上書きが実行されるおそれがある。
【００１７】
それを防止するために、描画フレームカウンタと、表示フレームカウンタと、描画制御部とを設けてある。描画フレームカウンタは、描画が終了したフレーム数に応じて変化する値を計数する。表示フレームカウンタは、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数する。描画制御部は、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域（表示の済んだデータを保持する領域も空きとみなす）が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する。
【００１８】
ところで、表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に（該当するフレームの表示を開始するまでに）処理できるとは限らない。
【００１９】
そこで、前記描画省略制御部が、前記表示フレームカウンタの値とフレームの表示周期と前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御する。これにより、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
【００２０】
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、１フレームの描画に関する所要時間を推定することを特徴とする。
【００２１】
この構成により、それぞれの描画命令を実行した時に検出された所要時間の累積値を算出するので、実際に使用する描画エンジンの描画処理能力が変化した場合であっても、１フレームの描画に関する所要時間を正確に推定することができる。
【００２２】
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、１フレームの描画に関する所要時間を推定することを特徴とする。
【００２３】
所定の描画エンジンが処理対象のそれぞれの描画命令を実行するときにかかる所要時間は、描画エンジン自体の処理能力と、描画命令の種類に応じて大きく変化する。処理能力が既知の描画エンジンを採用するのであれば、描画命令毎の所要時間については、描画命令の種類毎に特定可能な定数に基づいて計算により推定することができる。
【００２４】
この構成により、描画命令の種類毎に特定される定数の累積値を算出することにより、１フレームの描画に関する所要時間を推定する。
【００２５】
また、本発明のグラフィックス描画装置は、それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に２種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とする。
【００２６】
表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に（該当するフレームの表示を開始するまでに）処理できるとは限らない。
【００２７】
しかし、可能な範囲内でより品質の高い像を表示できる方が望ましいので、表示対象のデータ（描画命令のリスト）については、なるべく高精度のものを大量に用意しておく必要がある。但し、実際に使用する描画エンジンの描画処理能力の限界により、許される時間内に全ての描画命令を実行できない状況も発生しうる。そのような場合、表示内容の破綻を来すことになり、コンテンツの作成者（例えばゲームクリエータ）が希望する品質の画面が表示されない可能性がある。
【００２８】
この構成により、描画命令のリスト中の描画命令毎に優先度情報を持たせることができるので、優先度の高い描画命令についてはできる限り描画が省略されないように優先的に扱うことができる。また、優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別するので、処理能力の高い描画エンジンを採用している装置においては、優先度の低い描画命令についても描画が省略されないように処理できる。従って、コンテンツの作成者は自分自身の意図（描画エンジンの性能が低い場合でもこれだけは表示したい）を各描画命令の優先度に反映させることができ、表示内容の破綻を抑制できる。
【００２９】
また、本発明のグラフィックス描画方法は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するためのグラフィックス表示方法であって、１つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、描画が終了したフレーム数に応じて変化する第１の値を計数し、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第２の値を計数し、前記第１の値と前記第２の値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画処理を許可すると共に描画所要時間を予測し、前記第２の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とする。
【００３０】
この方法では、表示前に描画が完了するか否かを識別し、表示前に描画が完了しないと予想される場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
【発明の効果】
【００３１】
本発明によれば、３次元グラフィックスのように高い描画処理能力を要求される動画を描画する場合に、各フレームの描画に許される時間が短い場合であっても、表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、表示フレームレートを維持でき、しかも表示内容の破綻を抑制することができる。そのため、表示される像のトータルの品質をそこそこに維持できる。また、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することも可能である。
【図面の簡単な説明】
【００３２】
【図１】実施の形態におけるグラフィックス表示装置のハードウェア構成例を示すブロック図である。
【図２】図１に示す装置の主要部の動作例を示すフローチャートである。
【図３】図１に示す装置及び従来例の動作例を示すタイムチャートである。
【図４】図１に示す装置の動作例を示すタイムチャートである。
【図５】図１に示す装置及び従来例の動作例を示すタイムチャートである。
【図６】描画所要時間を検出するため構成要素の具体例を示すブロック図である。
【図７】描画命令リストの構成例を示す模式図である。
【図８】図１に示す装置の主要部の動作例を示すフローチャートである。
【発明を実施するための形態】
【００３３】
本発明のグラフィックス描画装置及びグラフィックス描画方法に関する具体的な１つの実施の形態について、図１〜図８を参照しながら以下に説明する。
【００３４】
図１は実施の形態におけるグラフィックス描画装置を搭載したグラフィックス表示装置のハードウェア構成例を示すブロック図である。図２は図１に示す装置の主要部の動作例を示すフローチャートである。図３は図１に示す装置及び従来例の動作例を示すタイムチャートである。図４は図１に示す装置の動作例を示すタイムチャートである。図５は図１に示す装置及び従来例の動作例を示すタイムチャートである。図６は描画所要時間を検出するため構成要素の具体例を示すブロック図である。図７は描画命令リストの構成例を示す模式図である。図８は図１に示す装置の主要部の動作例を示すフローチャートである。
【００３５】
図１に示すグラフィックス表示装置は、グラフィックス処理部１０と、描画命令保持部２０と、表示デバイス３０と、リングバッファ４０とで構成されている。また、グラフィックス処理部１０は、マイクロプロセッサ（ＣＰＵ）１１と、ポリゴン描画エンジン１２と、描画時間検出部１３と、描画時間累積計算部１４と、描画カウンタ１５と、表示エンジン１６と、表示カウンタ１７とを備えている。
なお、グラフィックス表示装置は、例えば携帯電話やＰＤＡ、携帯ゲーム機等である。
【００３６】
グラフィックス処理部１０は、グラフィックスに関する様々な処理を実施するためのハードウェアである。表示デバイス３０は、例えば液晶表示装置のように２次元の表示画面を備えた表示装置である。描画命令保持部２０は、画面の各フレームに表示すべき各表示要素（ポリゴンなどのグラフィックス）に相当する描画命令を一覧として並べた描画命令リスト２１のデータを保持するための記憶装置である。リングバッファ４０は、表示デバイス３０の画面に表示すべき表示内容のデータをフレーム毎に保持するための記憶装置である。
【００３７】
図１に示す具体例においては、リングバッファ４０上に３つの記憶領域４１(0)、４１(1)、４１(2)が設けてあり、それぞれの記憶領域４１(0)、４１(1)、４１(2)が各々独立したフレームの表示内容に相当するデータを保持することができる。３つの記憶領域４１(0)、４１(1)、４１(2)は、連続的に現れる表示デバイス３０の各表示フレームに対応付けて、順番にかつ巡回的に使用されるので、リングバッファとして機能する。つまり、記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の順番で各表示フレームに対応付けられる。
【００３８】
マイクロプロセッサ１１は、表示内容を決定するデータである描画命令を作成し、描画命令リスト２１として描画命令保持部２０に蓄積するとともに、グラフィックス処理部１０の全体の制御を実施する。
【００３９】
ポリゴン描画エンジン１２は、描画処理専用のハードウェアであり、描画命令リスト２１に存在する各描画命令に従ってポリゴンの描画を実行する。ポリゴン描画エンジン１２の描画結果は、リングバッファ４０上のいずれかの記憶領域４１に格納される。また、ポリゴン描画エンジン１２が描画命令リスト２１から描画命令を取り込む際には、マイクロプロセッサ１１を経由せず、ＤＭＡ（Direct Memory Access）により描画命令のデータが描画命令保持部２０からポリゴン描画エンジン１２に転送される。また、一連の描画処理がポリゴン描画エンジン１２内で完了すると、マイクロプロセッサ１１の処理に対して割り込みがかかるように設計されている。
【００４０】
表示エンジン１６は、描画内容を表示デバイス３０の画面に表示するための処理を行うための専用のハードウェアである。具体的には、表示エンジン１６はリングバッファ４０上の各記憶領域４１の内容（データ）を表示デバイス３０上のメモリに対して高速で転送するための処理を実施する。また、表示エンジン１６は、１フレームのデータを表示デバイス３０に転送する処理が完了するたびに、所定の完了通知割り込みを、フレーム同期割り込みとしてマイクロプロセッサ１１に与える。
【００４１】
表示カウンタ１７は、表示デバイス３０に表示済みのフレーム数を計数するカウンタである。ここでは、表示カウンタ１７の内容を変数Ｌで表す。描画カウンタ１５は、描画処理が終了したフレーム数を計数するカウンタである。ここでは、描画カウンタ１５の内容を変数Ｋで表す。描画時間検出部１３は、ポリゴン描画エンジン１２が各描画命令を実行する際にかかった描画所要時間を測定する。描画時間累積計算部１４は、描画時間検出部１３が検出した描画所要時間に関する累積処理を実施する。
【００４２】
図１に示したグラフィックス表示装置の主要な処理に関する制御手順の具体例が図２に示されている。図２に示す処理は、マイクロプロセッサ１１によって制御され、互いに独立して動作するプログラムの処理内容を表す描画スレッドと、表示スレッドとの２つで構成されている。
【００４３】
まず、図２に示した表示スレッドのアルゴリズムについて説明する。なお、表示可能な描画データが完成していなければ表示は始められないので、表示スレッドの起動は、描画スレッドから規定時間だけ遅れて、ないし表示可能なデータが出来てから開始されるのが普通である。
【００４４】
表示スレッドが開始された際、初期化のステップ（Ｓ３１）にて表示カウンタ１７の内容（Ｌ）は０に初期化される。次に、終了判定のステップ（Ｓ３２）を経て、周期Ｔにて発生する表示フレームの割り込みがマイクロプロセッサ１１に入るのを待つ。なお、周期Ｔは表示フレームの更新周期を表し、例えば（１／６０）秒程度の一定時間になる。
【００４５】
表示フレームの割り込みが入るとステップＳ３４に進み、表示カウンタ１７の内容（Ｌ）をリングバッファ４０の巡回数Ｎ（図１の例ではＮ＝３）を底とする剰余系で示したインデックス（変数）に対応するリングバッファ４０（記憶領域４１(0)、４１(1)、４１(2)のいずれか）に保持されているデータを、表示エンジン１６を用いて表示デバイス３０に転送しその内容を画面に表示する。
【００４６】
その後、ステップＳ３５で表示カウンタ１７の内容（Ｌ）をインクリメントし、次に表示を行うべきリングバッファ４０のインデックスを更新する（Ｓ３６）。このインデックスは、前述のとおり表示カウンタ１７の内容（Ｌ）の値を、Ｎを底とする剰余系で示すことで得られる。その後、表示の終了判定のステップ（Ｓ３２）に戻る。終了が検出されると、表示スレッドが終了する。
【００４７】
つまり、図２に示す表示スレッドを繰り返し実行することにより、表示フレームの割り込みが入る度に、リングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に表示デバイス３０に転送され画面上に表示される。なお、表示フレームの割り込みが入る度にリングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に転送されると説明したが、表示フレームの割り込みが所定回数入ったときにリングバッファ４０の記憶領域４１(0)、４１(1)、４１(2)、４１(0)、４１(1)、４１(2)、・・・の内容が順次に転送されるように構成してもよい。表示フレームの割り込み周期は液晶画面の走査周期である１/６０秒が標準的であり、１秒間のうち６０回画像が更新されることになるが、表示する画像の内容によっては、１秒間に３０回、２０回または１５回画像が更新されればよいものもある。このように１秒間に画像を更新する回数を調整するために、表示フレームの割り込みが２回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に３０回画像を更新することができり、表示フレームの割り込みが３回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に２０回画像を更新することができ、表示フレームの割り込みが４回入ったときにリングバッファ４０の記憶領域４１の内容を順次に転送するように構成すれば１秒間に１５回画像を更新することができる。このとき、表示カウンタＬは、表示フレームの割り込みが２回、３回、４回入ったときに更新されるようにすればよい。
【００４８】
次に、図２に示す描画スレッドのアルゴリズムについて説明する。なお、図２に示す比較処理の各ステップの中で、「！＝」は左辺と右辺の値が等しくないかどうかの比較を意味し、「｜｜」は論理和（ＯＲ）を意味し、「＝＝」は左辺と右辺の値が等しいかどうかの比較を意味している。
【００４９】
描画が開始されると、まず初期化のステップ（Ｓ１１）にて各種カウンタ類の０クリアがなされる。次に、終了判定のステップ（Ｓ１２）を経て、マイクロプロセッサ１１によるＫフレーム目の描画命令リスト２１の生成が行われ（Ｓ１３）、図１に示す描画命令保持部２０に描画命令リスト２１が保存される。
【００５０】
次のステップＳ１４では、現在ポリゴン描画エンジン１２が描画している先のリングバッファ４０の記憶領域４１を表すインデックス（書き込み位置すなわち描画位置を表す変数）と、次に表示がなされるべき、もしくは今表示のためにデータ転送中の記憶領域４１を表すインデックス（読み出し位置すなわち表示位置を表す変数）とを比べることにより、リングバッファ４０の仕組み上で、描画のインデックスが表示のインデックスを追い越さないかどうかを判定する。
【００５１】
簡単な判別方法としては、描画と表示のインデックスの差分値について、底をＮとした剰余系で見た時に、０でなければ（（（Ｋ−Ｌ）％Ｎ！＝０）の条件を満たせば）、リングバッファ４０上の重なりが発生しないので、追い越しも追い着きもせず安全であり、リングバッファ４０上の空いている領域（又は表示が済んだ不要なデータを保持している領域）に対して描画処理を行うことになる。なお、描画スレッドを開始したばかり、すなわち描画カウンタ１５の内容（Ｋ）が０の場合には、無条件にこの判定ステップ（Ｓ１４）を抜けて次の描画命令実行のステップに移る。判定の結果、追い着きが認められると、表示カウンタＬが更新されて描画と表示のバッファの重なりがなくなるまで、描画命令実行のステップには移らずに待ちのステップ（Ｓ１５）に入る。なぜ待つ必要があるかについては後で述べる。
【００５２】
次に、描画命令実行のステップについて説明する。ポリゴン描画エンジン（レンダリングエンジン）１２は、描画を実行して良いという命令をマイクロプロセッサ１１から受けると、描画命令保持部２０のバッファからＤＭＡ転送にて描画命令リスト２１の命令列を取得し、その命令内容に従って描画処理を行う（Ｓ１６）。
【００５３】
また、図１に示すように描画時間検出部１３がポリゴン描画エンジン１２に接続されており、描画時間検出部１３はポリゴン描画エンジン１２の動作状態と時間を監視している。そして、それぞれの描画命令毎に、その命令の実行開始から終了までにかかった所要時間δをステップＳ１６で検出する。
【００５４】
また、描画時間検出部１３に接続されている描画時間累積計算部１４は、描画時間検出部１３が各時点で検出した所要時間δを順次に累積し、累積時間ｔを算出する（Ｓ１７）。この累積時間ｔは、図２の描画スレッドが開始された時間からの累積経過時間を表す。
【００５５】
次にポリゴン描画エンジン１２がいま描画中のＫ番目のフレームに対する処理が、表示のタイミングに間に合うか否かを判定するためのステップに移る。すなわちステップＳ１８では、描画時間累積計算部１４が算出した累積時間ｔを、次に表示スレッドにて表示がなされる時刻を表す（Ｌ×Ｔ）と比較する。Ｌは表示カウンタの値であり、Ｔは表示のフレーム周期である。
【００５６】
ｔが（Ｌ×Ｔ）より小さければ表示までの時刻に間に合うので次のステップＳ１９に進む。間に合わないと判断した場合には、せっかく描画中のデータであっても表示までに完成しないので継続する意味がないと判断し、現在処理中のフレームに対する描画を中断して次のフレームの描画に移行するべく、カウンタＫの更新ステップ（Ｓ２１）にジャンプする。なぜジャンプするかについての詳細説明は、図５を用いて後で述べる。
【００５７】
ｔが（Ｌ×Ｔ）より小さい場合には、次のステップＳ１９で、現在描画中のＫ番目のフレームが完成したか否か、つまり描画命令リスト２１上の全ての描画命令の実行を終了したか否かを判定する。未完成と判定した場合には、次の描画命令を実行するためにステップＳ２０に進み、描画命令リスト２１から次の描画命令を取り出す。そしてステップＳ１６以降の処理をループ状に繰り返す。
【００５８】
Ｋ番目のフレームの描画が完成したと判定した場合には、ステップＳ１９からステップＳ２１に進み、描画カウンタ１５の値Ｋを更新する。更に、次のステップＳ２２で描画を行うターゲットのバッファ（リングバッファ４０上の該当する１つの記憶領域４１）を次のインデックスに対応するものに切り替える。なおこのインデックスの値は、描画カウンタ１５の値Ｋを、Ｎを底とする剰余系で示す（Ｋ％Ｎ）ことで得られる。
【００５９】
図２に示す描画スレッドの処理においては、描画先のターゲットバッファを切り替えたあと、次のフレームの描画を休みなく進めるために終了判定ステップ（Ｓ１２）にループし、最終フレームに到達しない限り次のフレームの描画を継続する。この理由については図３を用いて次に説明する。
【００６０】
図３は、図１に示すグラフィックス表示装置における描画動作及び表示動作のタイミングの具体例を表している。図３（ａ）は図２に示す動作を実行する場合のタイミングを示し、図３（ｂ）は一般的な（従来の）動作を実行する場合のタイミングを示している。
【００６１】
図３（ｂ）に示す動作例では、フレーム毎に、フレームの開始時刻に描画処理を開始し、１つのフレームに許される時間内（フレーム間隔Ｔ以内）を経過する前に描画処理を終了する。そして、描画処理が終了した表示内容のデータを次フレームが開始するタイミングに合わせて画面に表示する。従って、フレーム間隔Ｔを超える前に描画処理が確実に終了するように、描画対象のデータ（描画命令リスト２１の内容に相当）を予め少なめに用意しておく必要がある。その結果、各フレームの描画処理が完了してから次のフレームが開始するまでに、ポリゴン描画エンジン１２が描画処理を停止している「余り時間」が発生する。従って、フレーム間隔Ｔの全体を描画処理のために有効に利用できず、処理能力の高いポリゴン描画エンジン１２を採用した場合でも、大量の描画命令を実行することができなかった。そこで、図２に示した動作を実行することにより、効率的な描画処理の実行が実現する。
【００６２】
すなわち、図３（ａ）に示す動作例では、ポリゴン描画エンジン１２が１つのフレームについて描画処理が終了した後、次フレームが開始するタイミングを待つことなしに、後続のフレームに対する描画処理を開始する。そのため、図３（ｂ）に示すような「余り時間」が発生せず、限られた時間（フレーム間隔Ｔ）の全体を描画処理のために有効に利用できる。図１に示すグラフィックス表示装置においては、リングバッファ４０に複数の記憶領域４１を設けてあるので、表示しているフレーム以外の複数フレームに関する描画処理を同時に行うことができる。従って、事前に描画命令リスト２１として大量の描画命令を用意しておけば、「余り時間」を有効に使ってより複雑高度な絵を描くことができるようになる。
【００６３】
しかし、リングバッファ４０上の記憶領域４１の数が有限であるため、特別な制御を行わないと図４（ｂ）に示すような問題が生じる可能性がある。すなわち、図４（ｂ）に示す例では、１フレームの時間（フレーム間隔Ｔ）内に３（Ｎ）フレーム以上の表示内容をポリゴン描画エンジン１２が実行できる場合を想定している。そのため、１つのフレームの描画時間内に、記憶領域４１(0)、４１(1)、４１(2)に順番に書き込んだ後、記憶領域４１(0)の内容を画面に表示する前に、更に記憶領域４１(0)に後続フレームの表示内容を書き込むことになり、先に記憶領域４１(0)に書き込まれた表示内容が上書きによって破壊される可能性がある。
【００６４】
そこで、図２に示すような描画スレッドの処理を実行することにより、このような問題の発生を防止する。つまり、図２のステップＳ１４で、描画処理が表示を追い越さないかどうか、すなわち表示を完了していないデータが書き込まれている領域以外の空き領域がリングバッファ４０に存在するかどうかを識別することにより、上記のような上書きによるデータの破壊を防止できる。
【００６５】
例えば、図４（ａ）に示す動作例では、１つのフレームの描画時間内に、ポリゴン描画エンジン１２が記憶領域４１(0)、４１(1)、４１(2)に順番に書き込んだ後、まだ表示されていない記憶領域４１(0)のデータの破壊を防ぐために、次フレームが開始するタイミングになるまで描画処理を中断して待機する（図２のＳ１５に対応）。
【００６６】
ところで、１フレームの描画時間にある程度の幅の許容量を持たせた場合でも、絵（表示すべき内容）がいっそう複雑高度になると、そのフレームの表示時刻に対して描画処理の完了が間に合わなくなるケースが出てくる。
【００６７】
例えば、図５（ｂ）に示す動作例では、時刻ｔａ〜時刻ｔｂの間の期間（Ｔ）内に処理すべきフレームの描画が、時刻ｔｂまでに終了していない。従って、描画処理の終了が表示開始のタイミング（ｔｂ）に間に合わず、不完全な絵が画面に表示されることになる。更に、時刻ｔｂになっても前フレームの描画処理が継続しているため、時刻ｔｂ〜時刻ｔｃの間の期間（Ｔ）内に処理すべきフレームの描画開始が遅くなり、後続するフレームの描画も間に合わなくなる可能性が高い。従って、実際に表示される絵の内容に破綻を来すことになる。
【００６８】
しかし、図２に示す描画スレッドの処理においてステップＳ１８を実行することにより、このような問題の発生を回避できる。すなわち、あるフレームに対する描画処理の実行中に、当該フレームを表示するタイミングを超過するか、もしくはそのタイミングまでに描画処理が完了しないと認識した場合には、続く描画命令の実行を省略して後続フレームの描画処理に進む。
【００６９】
例えば、図５（ａ）に示す動作例では、時刻ｔａ〜時刻ｔｂの間の期間（Ｔ）内に処理すべきフレームの描画が、時刻ｔｂまでに終了しないので、時刻ｔｂを超過した時点で当該フレームに対する描画を中断し、後続フレームの描画に進む。このため、時刻ｔａ〜時刻ｔｂの期間に間に合わなかった特定のフレームについては不完全な絵が表示されることになるが、後続フレームの描画には影響を及ぼさないので、表示内容の破綻は最小限に抑制される。
【００７０】
なお、図２に示した描画スレッドのステップＳ１８においては、描画処理が表示開始のタイミングを超過した時点で処理を中断するように制御しているが、ステップＳ１８における比較の内容を変更することにより、描画処理が表示開始のタイミングを超過する前に処理を中断することも可能である。
【００７１】
図１に示したグラフィックス表示装置に搭載可能な描画時間検出部１３に関する構成例が図６に示されている。図６（ａ）に示す構成例では、図１の構成と同様に、描画時間検出部１３がポリゴン描画エンジン１２の動作状態と時間とを監視して、実際の描画処理に要した所要時間を測定するように構成されている。
【００７２】
一方、図６（ｂ）に示す構成例では、描画時間検出部１３が描画命令リスト２１からポリゴン描画エンジン１２に入力される各描画命令の内容を把握して、この内容から描画処理に要する所要時間を推定する場合を想定している。具体的には、描画命令の種類毎にそれを実行するのに要する所要時間を表す定数を予め保持するデータベースを利用し、検出した描画命令の種類に基づき前記データベースにアクセスして描画の所要時間を推定する。なお、実際の描画所要時間は使用するポリゴン描画エンジン１２の性能に応じて変化する。しかし、性能の異なる複数種類のポリゴン描画エンジン１２について描画所要時間を検出する場合であっても、実際に使用するポリゴン描画エンジン１２の能力に応じた補正係数を用いてデータベース上の定数を補正することにより、正確な所要時間を推定できる。
【００７３】
ところで、使用するポリゴン描画エンジン１２の性能に比べて過大な（大量の）描画命令を処理しようとする場合には、各フレームに許される限られた時間内に全ての描画命令を処理しきれないので、例えば図５（ａ）に示すように描画を途中で中断せざるを得ない場合が生じる。その場合、コンテンツ作成者の意志とは無関係に、ポリゴン描画エンジン１２の性能に応じて不完全な絵が表示されることになり、表示内容の見栄えが悪化するのは避けられない。
【００７４】
このような問題を解消するための方法について以下に説明する。描画命令保持部２０上に保持する描画命令リスト２１には、例えば図７に示すように、描画命令と共に各々の描画命令に対応付けた優先度情報を保持する。図７に示す例では、「優先度Ａ」と「優先度Ｂ」との２種類以上の優先度が割り当て可能な場合を想定している。例えば、画面上に表示する各表示要素の中で、比較的大きい要素や、他の要素の手前側に存在する要素のように目立ちやすい要素、あるいは影響度の高い要素を描画するための描画命令に対しては優先度の高い「優先度Ａ」を割り当て、比較的小さい要素や、他の要素の後ろ側に存在する要素のようにあまり目立たない要素を描画するための描画命令に対しては優先度の低い「優先度Ｂ」を割り当てるようにすればよい。
【００７５】
従って、携帯電話などハード性能上の制約が多いシステムにおいてゲームコンテンツなどのアプリケーションプログラムを実行する場合において、コンテンツ作成者が見栄えを考慮した上での描画の間引き方、および表示レートの保持を実現するために、優先度の割り当てを利用することができる。
【００７６】
つまり、「優先度Ａ」の描画命令１〜４は優先して描画されるが、「優先度Ｂ」の描画命令５以降は、もともとのポリゴン描画エンジン１２のポテンシャルから考えて、フレームレート維持には描画が間に合いそうにない場合、描画をスキップして次の描画命令の実行に移行させるように制御することができる。すなわち、「優先度Ｂ」が割り当てられる描画命令については、１画面を構成する上で「別段、無くてもプレーヤーに画面の意図を伝えられる、もしくは、有ったほうがよりリッチな表現になるが無くても困らないオブジェクト」になるようにコンテンツ作成者に最初から指定しておいてもらうことができる。これにより、コンテンツ作成者の意志を反映した表示内容の決定が可能になる。
【００７７】
図７に示すように優先度の情報を有する描画命令リスト２１が存在する場合には、図２に示した動作例の代わりに、図８に示す動作例のようにマイクロプロセッサ１１の制御の内容を変更すればよい。図８に示す動作例では、ステップＳ４６及びステップＳ４７が追加された点が図２と異なっているが、それ以外は図２と同様である。
【００７８】
図８のステップＳ４６では、処理対象の描画命令の優先度が「優先度Ａ」か「優先度Ｂ」かを判定する。優先度が「優先度Ｂ」である場合には次のステップＳ４７に進み、「優先度Ａ」である場合はステップＳ４８の処理に進む。
【００７９】
ステップＳ４７では、ポリゴン描画エンジン１２を主体とするこの装置のハードウェアが「優先度Ｂ」の描画命令を実行するに足りる性能を具備しているか否かを判定する。すなわち、能力の高いハードウェアを搭載している場合には処理に余裕があるので比較的優先度の低い描画命令も含めて実行することにより情報量の多い高品質の絵を表示できる。しかし、能力の低いハードウェアを搭載している場合には処理に余裕がないので優先度の低い描画命令の実行を省略することにより、時間的に処理が間に合わない状況の発生を防止すると共に、コンテンツ作成者の意志を反映するように、優先度の高い必要最小限の描画命令はもれなく実行できるように制御することが可能になる。
【００８０】
なお、ステップＳ４７で検出するハードウェアの性能については、使用しているポリゴン描画エンジン１２の種類とその動作周波数とに基づいて特定することができる。従って、例えばポリゴン描画エンジン１２の種類を表す情報と、ポリゴン描画エンジン１２の動作周波数を表す情報とを基本情報としてＲＯＭ（読み出し専用メモリ）などに予め登録しておき、ステップＳ４７を実行する際には、前記ＲＯＭから読み出した情報に基づいてハードウェアの性能を検出し、その結果と事前に「優先度Ｂ」に対応付けられた定数（閾値）とを比較すればよい。
【００８１】
なお、図７及び図８に示す具体例では、優先度が「優先度Ａ」と「優先度Ｂ」との２種類だけの場合を想定しているが、３種類以上の優先度を各描画命令に割り当てるようにしても良い。その場合には、割り当て可能な優先度の数に応じて、図８におけるステップＳ４６、Ｓ４７と同等の処理を更に追加すればよい。
【００８２】
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
【産業上の利用可能性】
【００８３】
本発明は、例えば携帯電話端末や携帯型情報端末（ＰＤＡ）のように、必ずしも高性能のポリゴン描画エンジンを搭載できない装置において、３Ｄゲームアプリケーションプログラムなどを実行し、高品質のグラフィックス表示を行おうとする場合であっても、描画エンジンの処理能力を最大限に引き出すことが可能であるため、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持したり、表示内容の破綻を抑制することが可能になる。
【符号の説明】
【００８４】
１０  グラフィックス処理部
１１  マイクロプロセッサ
１２  ポリゴン描画エンジン
１３  描画時間検出部
１４  描画時間累積計算部
１５  描画カウンタ
１６  表示エンジン
１７  表示カウンタ
２０  描画命令保持部
２１  描画命令リスト
３０  表示デバイス
４０  リングバッファ
４１  記憶領域
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008105092.tif 000011
【図２】
2008105092.tif 000012
【図３】
2008105092.tif 000013
【図４】
2008105092.tif 000014
【図５】
2008105092.tif 000015
【図６】
2008105092.tif 000016
【図７】
2008105092.tif 000017
【図８】
2008105092.tif 000018
【国際調査報告】
2008105092.tif 000019
2008105092.tif 000020