JPWO2008105092A1 - グラフィックス描画装置及びグラフィックス描画方法 - Google Patents

グラフィックス描画装置及びグラフィックス描画方法 Download PDF

Info

Publication number
JPWO2008105092A1
JPWO2008105092A1 JP2009501093A JP2009501093A JPWO2008105092A1 JP WO2008105092 A1 JPWO2008105092 A1 JP WO2008105092A1 JP 2009501093 A JP2009501093 A JP 2009501093A JP 2009501093 A JP2009501093 A JP 2009501093A JP WO2008105092 A1 JPWO2008105092 A1 JP WO2008105092A1
Authority
JP
Japan
Prior art keywords
display
frame
time
graphics
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009501093A
Other languages
English (en)
Inventor
英明 春元
英明 春元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2008105092A1 publication Critical patent/JPWO2008105092A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01JCHEMICAL OR PHYSICAL PROCESSES, e.g. CATALYSIS OR COLLOID CHEMISTRY; THEIR RELEVANT APPARATUS
    • B01J31/00Catalysts comprising hydrides, coordination complexes or organic compounds
    • B01J31/02Catalysts comprising hydrides, coordination complexes or organic compounds containing organic compounds or metal hydrides
    • B01J31/04Catalysts comprising hydrides, coordination complexes or organic compounds containing organic compounds or metal hydrides containing carboxylic acids or their salts
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01JCHEMICAL OR PHYSICAL PROCESSES, e.g. CATALYSIS OR COLLOID CHEMISTRY; THEIR RELEVANT APPARATUS
    • B01J31/00Catalysts comprising hydrides, coordination complexes or organic compounds
    • B01J31/26Catalysts comprising hydrides, coordination complexes or organic compounds containing in addition, inorganic metal compounds not provided for in groups B01J31/02 - B01J31/24
    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07CACYCLIC OR CARBOCYCLIC COMPOUNDS
    • C07C51/00Preparation of carboxylic acids or their salts, halides or anhydrides
    • C07C51/16Preparation of carboxylic acids or their salts, halides or anhydrides by oxidation
    • C07C51/21Preparation of carboxylic acids or their salts, halides or anhydrides by oxidation with molecular oxygen
    • C07C51/255Preparation of carboxylic acids or their salts, halides or anhydrides by oxidation with molecular oxygen of compounds containing six-membered aromatic rings without ring-splitting
    • C07C51/265Preparation of carboxylic acids or their salts, halides or anhydrides by oxidation with molecular oxygen of compounds containing six-membered aromatic rings without ring-splitting having alkyl side chains which are oxidised to carboxyl groups
    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07CACYCLIC OR CARBOCYCLIC COMPOUNDS
    • C07C51/00Preparation of carboxylic acids or their salts, halides or anhydrides
    • C07C51/42Separation; Purification; Stabilisation; Use of additives
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01JCHEMICAL OR PHYSICAL PROCESSES, e.g. CATALYSIS OR COLLOID CHEMISTRY; THEIR RELEVANT APPARATUS
    • B01J2231/00Catalytic reactions performed with catalysts classified in B01J31/00
    • B01J2231/70Oxidation reactions, e.g. epoxidation, (di)hydroxylation, dehydrogenation and analogues
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01JCHEMICAL OR PHYSICAL PROCESSES, e.g. CATALYSIS OR COLLOID CHEMISTRY; THEIR RELEVANT APPARATUS
    • B01J2531/00Additional information regarding catalytic systems classified in B01J31/00
    • B01J2531/70Complexes comprising metals of Group VII (VIIB) as the central metal
    • B01J2531/72Manganese
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B01PHYSICAL OR CHEMICAL PROCESSES OR APPARATUS IN GENERAL
    • B01JCHEMICAL OR PHYSICAL PROCESSES, e.g. CATALYSIS OR COLLOID CHEMISTRY; THEIR RELEVANT APPARATUS
    • B01J2531/00Additional information regarding catalytic systems classified in B01J31/00
    • B01J2531/80Complexes comprising metals of Group VIII as the central metal
    • B01J2531/84Metals of the iron group
    • B01J2531/845Cobalt
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems

Abstract

3次元グラフィックスなどの動画を表示する場合に表示フレームレートを維持し、表示内容の破綻を抑制し、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示する。複数の領域を備えたフレームバッファ40と描画が終了したフレーム数を計数する描画フレームカウンタ15と、描画が終了した各フレームの中で画面への表示が完了したフレーム数を計数する表示フレームカウンタ17と、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づき前記フレームバッファ上に空き領域が存在するか否かを識別し空き領域が存在する場合は次フレームの描画を許可する描画制御部11と、描画所要時間を予測する描画所要時間予測部13と、表示フレームカウンタの値とフレーム表示周期と予測した描画所要時間とに基づき表示前に描画が完了するか否かを識別し完了しない場合は続く描画命令の実行を省略して次フレームの処理に進む描画省略制御部12とを設けた。

Description

本発明は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置及びグラフィックス描画方法に関する。
例えば、携帯電話端末や携帯型情報端末(PDA)のような装置においては、様々なアプリケーションプログラムを必要に応じて実行可能なものが多い。実行可能なアプリケーションプログラムの中には、立体的に表示される様々なキャラクタを利用する3Dゲームや、立体的な地図を表示するナビゲーションや、立体的な図形などを表示するシミュレータのように、3次元グラフィックスを利用して様々な図形やキャラクタを画面上に表示するものも多く含まれている。
また、上記のようなアプリケーションプログラムにおいては、画面上に動画を表示する必要があり、アプリケーションプログラムによって画面上に表示される内容は、短い時間周期で頻繁に更新される。特に、ゲームなどのアプリケーションプログラムにおいて、滑らかに変化する高品質の動画を表示しようとする場合には、一定のフレーム周期で画面上に表示する画像の内容を高速で更新する必要がある。
但し、3次元グラフィックスのような像を描画するためには非常に高い描画処理能力が要求される。しかも、動画を構成する各フレームの描画に許される時間はフレーム周期によって制限されるので、非常に短い時間内に大量の表示要素を描画しなければならない。
コンピュータグラフィックスシステムでは、できるだけ高精細で美しい画像を描画したいという要望とともに、できるだけ表示のフレームレートを高く保持したいという要望がある。表示レートを低くしても構わなければ、美しい高精細画像をゆっくり描画すれば良いが、ゲームアプリケーションなど、動きがある画像を描画しなければならない場合は、フレームレートを保持できなければ、利用者に対して適切なプレゼンテーションができないことにもなりかねない。
こうした要望に応えるために考案されたコンピュータグラフィックスシステムの描画パフォーマンスの調整方法が、例えば特許文献1に開示されている。特許文献1においては、表示要素のレンダリングに要する時間を算出するためのシミュレーションアルゴリズムを提示しており、描画処理を実行する元となる情報を作成するクリエータに対して、つまりゲームアプリケーションであればゲーム開発者に対して、最適な描画パラメータを選定させ、フレームレートが保持できないような無理な描画処理を初めから作らせないようにすることを目的としている。
また、特許文献2に開示された従来技術においては、レンダリングエンジンの描画能力に基づき、生成する3次元キャラクタのポリゴン数を、画面への占有面積に対する見栄えに応じて加減することで、1フレームに割り当て可能な描画量をレンダリングエンジンの描画能力以内に抑えることを提案している。
特表2002−503854号公報 特開2000−242807号公報
例えば、フレーム周期に相当する時間内に5000個の表示要素を描画可能な処理能力を有する描画エンジンを採用している場合に、1フレーム内に10000個の表示要素を表示させるような命令のデータを作成すると、実際には許された時間内に全てのデータの表示要素を描画できないため、表示すべき画像の一部分が欠落した内容が画面上に表示されることになり表示内容の破綻を来すことになる。特許文献1に開示された従来の方法を採用すれば、描画処理に先立ってクリエータが表示の破綻を来たさない完璧なデータを予め作成することが可能である。
また、このような従来技術は、例えば携帯電話端末などでゲームコンテンツなどをダウンロードした場合において、そのコンテンツソフトの描画処理実行時に、表示レートを保持できるかできないかのリアルタイム判定に活用できる。しかし、表示レートの保持そのものに対して具体的な解決策を提供することはできない。
特に携帯電話端末に関しては、機種が多岐に渡っており、それぞれの携帯電話端末に描画のために搭載されるレンダリングエンジンは、機種毎に描画能力が大きく異なる可能性が高い。従って、特定の機種向けに表示レートが維持できるようにゲームなどのコンテンツを作成しても、機種が異なれば描画能力が劣るために正しく再生できなくなるケースが起こり得る。
また、特許文献2の従来技術を採用する場合には、ポリゴン描画の間引きを実施することにより、表示のフレームレートを保持することが可能である。しかし、間引きの際には、その使用するレンダリングエンジンの能力のみに基づいて3次元キャラクタのポリゴン数割り当てが決定されるため、必ずしもコンテンツの作成者が許容する間引きが実現されるとは限らないという虞がある。つまり、表示のフレームレートを保持するために、描画するポリゴン数を必要以上に削減することになり、コンテンツの作成者が希望する品質の画面が表示されない可能性がある。
本発明は、3次元グラフィックスのように高い描画処理能力を要求される動画を表示する場合に、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持し、かつ表示内容の破綻を抑制すると共に、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することが可能なグラフィックス描画装置及びグラフィックス描画方法を提供することを目的とする。
本発明のグラフィックス描画装置は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置であって、1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、前記描画制御部が描画を許可した場合に、描画所要時間を予測する描画所要時間予測部と、前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部とを設けたことを特徴とする。
この構成により、フレームバッファが表示内容のデータを格納する領域を複数フレーム分備えているので、各フレームの像を画面に表示する前に、描画処理を前記フレームバッファの各領域に対して行い、描画が完了した各領域のフレームバッファの内容を必要なタイミングで画面に表示することができる。従って、ある1フレームの像を画面に表示している時に、他の複数フレームのそれぞれについて像の描画を実施することも可能になる。例えば、一定のフレーム周期で各フレームの像を画面に順次に表示する場合であっても、1フレームの時間内に描画する内容は1フレームに限定されず、実際の描画処理能力に余裕があれば、1フレームの時間内に2フレーム以上の像を描画することも可能になる。つまり、あるタイミングで次に表示すべきフレームの表示内容の描画が終了していれば、次の次に表示すべきフレームの表示内容の描画も開始することもできる。そのため、実際には描画処理が実施されない待ち時間を減らして描画処理を効率的に実行できるので、描画エンジンの処理能力を最大限に発揮することが可能になる。
但し、フレームバッファ上の領域の数は有限であるため、特定数の領域のそれぞれを順番に循環的に繰り返し描画に使用する必要がある。そのため、実際の描画処理能力に比べて各フレームに表示する表示要素の数が比較的少ないような場合には、描画が完了した後、まだ表示が終了していないフレームの領域に対しても更なる描画処理により描画内容の上書きが実行されるおそれがある。
それを防止するために、描画フレームカウンタと、表示フレームカウンタと、描画制御部とを設けてある。描画フレームカウンタは、描画が終了したフレーム数に応じて変化する値を計数する。表示フレームカウンタは、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数する。描画制御部は、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域(表示の済んだデータを保持する領域も空きとみなす)が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する。
ところで、表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に(該当するフレームの表示を開始するまでに)処理できるとは限らない。
そこで、前記描画省略制御部が、前記表示フレームカウンタの値とフレームの表示周期と前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御する。これにより、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、1フレームの描画に関する所要時間を推定することを特徴とする。
この構成により、それぞれの描画命令を実行した時に検出された所要時間の累積値を算出するので、実際に使用する描画エンジンの描画処理能力が変化した場合であっても、1フレームの描画に関する所要時間を正確に推定することができる。
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、1フレームの描画に関する所要時間を推定することを特徴とする。
所定の描画エンジンが処理対象のそれぞれの描画命令を実行するときにかかる所要時間は、描画エンジン自体の処理能力と、描画命令の種類に応じて大きく変化する。処理能力が既知の描画エンジンを採用するのであれば、描画命令毎の所要時間については、描画命令の種類毎に特定可能な定数に基づいて計算により推定することができる。
この構成により、描画命令の種類毎に特定される定数の累積値を算出することにより、1フレームの描画に関する所要時間を推定する。
また、本発明のグラフィックス描画装置は、それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に2種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とする。
表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に(該当するフレームの表示を開始するまでに)処理できるとは限らない。
しかし、可能な範囲内でより品質の高い像を表示できる方が望ましいので、表示対象のデータ(描画命令のリスト)については、なるべく高精度のものを大量に用意しておく必要がある。但し、実際に使用する描画エンジンの描画処理能力の限界により、許される時間内に全ての描画命令を実行できない状況も発生しうる。そのような場合、表示内容の破綻を来すことになり、コンテンツの作成者(例えばゲームクリエータ)が希望する品質の画面が表示されない可能性がある。
この構成により、描画命令のリスト中の描画命令毎に優先度情報を持たせることができるので、優先度の高い描画命令についてはできる限り描画が省略されないように優先的に扱うことができる。また、優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別するので、処理能力の高い描画エンジンを採用している装置においては、優先度の低い描画命令についても描画が省略されないように処理できる。従って、コンテンツの作成者は自分自身の意図(描画エンジンの性能が低い場合でもこれだけは表示したい)を各描画命令の優先度に反映させることができ、表示内容の破綻を抑制できる。
また、本発明のグラフィックス描画方法は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するためのグラフィックス表示方法であって、1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、描画が終了したフレーム数に応じて変化する第1の値を計数し、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第2の値を計数し、前記第1の値と前記第2の値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画処理を許可すると共に描画所要時間を予測し、前記第2の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とする。
この方法では、表示前に描画が完了するか否かを識別し、表示前に描画が完了しないと予想される場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
本発明によれば、3次元グラフィックスのように高い描画処理能力を要求される動画を描画する場合に、各フレームの描画に許される時間が短い場合であっても、表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、表示フレームレートを維持でき、しかも表示内容の破綻を抑制することができる。そのため、表示される像のトータルの品質をそこそこに維持できる。また、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することも可能である。
実施の形態におけるグラフィックス表示装置のハードウェア構成例を示すブロック図である。 図1に示す装置の主要部の動作例を示すフローチャートである。 図1に示す装置及び従来例の動作例を示すタイムチャートである。 図1に示す装置の動作例を示すタイムチャートである。 図1に示す装置及び従来例の動作例を示すタイムチャートである。 描画所要時間を検出するため構成要素の具体例を示すブロック図である。 描画命令リストの構成例を示す模式図である。 図1に示す装置の主要部の動作例を示すフローチャートである。
符号の説明
10 グラフィックス処理部
11 マイクロプロセッサ
12 ポリゴン描画エンジン
13 描画時間検出部
14 描画時間累積計算部
15 描画カウンタ
16 表示エンジン
17 表示カウンタ
20 描画命令保持部
21 描画命令リスト
30 表示デバイス
40 リングバッファ
41 記憶領域
本発明のグラフィックス描画装置及びグラフィックス描画方法に関する具体的な1つの実施の形態について、図1〜図8を参照しながら以下に説明する。
図1は実施の形態におけるグラフィックス描画装置を搭載したグラフィックス表示装置のハードウェア構成例を示すブロック図である。図2は図1に示す装置の主要部の動作例を示すフローチャートである。図3は図1に示す装置及び従来例の動作例を示すタイムチャートである。図4は図1に示す装置の動作例を示すタイムチャートである。図5は図1に示す装置及び従来例の動作例を示すタイムチャートである。図6は描画所要時間を検出するため構成要素の具体例を示すブロック図である。図7は描画命令リストの構成例を示す模式図である。図8は図1に示す装置の主要部の動作例を示すフローチャートである。
図1に示すグラフィックス表示装置は、グラフィックス処理部10と、描画命令保持部20と、表示デバイス30と、リングバッファ40とで構成されている。また、グラフィックス処理部10は、マイクロプロセッサ(CPU)11と、ポリゴン描画エンジン12と、描画時間検出部13と、描画時間累積計算部14と、描画カウンタ15と、表示エンジン16と、表示カウンタ17とを備えている。
なお、グラフィックス表示装置は、例えば携帯電話やPDA、携帯ゲーム機等である。
グラフィックス処理部10は、グラフィックスに関する様々な処理を実施するためのハードウェアである。表示デバイス30は、例えば液晶表示装置のように2次元の表示画面を備えた表示装置である。描画命令保持部20は、画面の各フレームに表示すべき各表示要素(ポリゴンなどのグラフィックス)に相当する描画命令を一覧として並べた描画命令リスト21のデータを保持するための記憶装置である。リングバッファ40は、表示デバイス30の画面に表示すべき表示内容のデータをフレーム毎に保持するための記憶装置である。
図1に示す具体例においては、リングバッファ40上に3つの記憶領域41(0)、41(1)、41(2)が設けてあり、それぞれの記憶領域41(0)、41(1)、41(2)が各々独立したフレームの表示内容に相当するデータを保持することができる。3つの記憶領域41(0)、41(1)、41(2)は、連続的に現れる表示デバイス30の各表示フレームに対応付けて、順番にかつ巡回的に使用されるので、リングバッファとして機能する。つまり、記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の順番で各表示フレームに対応付けられる。
マイクロプロセッサ11は、表示内容を決定するデータである描画命令を作成し、描画命令リスト21として描画命令保持部20に蓄積するとともに、グラフィックス処理部10の全体の制御を実施する。
ポリゴン描画エンジン12は、描画処理専用のハードウェアであり、描画命令リスト21に存在する各描画命令に従ってポリゴンの描画を実行する。ポリゴン描画エンジン12の描画結果は、リングバッファ40上のいずれかの記憶領域41に格納される。また、ポリゴン描画エンジン12が描画命令リスト21から描画命令を取り込む際には、マイクロプロセッサ11を経由せず、DMA(Direct Memory Access)により描画命令のデータが描画命令保持部20からポリゴン描画エンジン12に転送される。また、一連の描画処理がポリゴン描画エンジン12内で完了すると、マイクロプロセッサ11の処理に対して割り込みがかかるように設計されている。
表示エンジン16は、描画内容を表示デバイス30の画面に表示するための処理を行うための専用のハードウェアである。具体的には、表示エンジン16はリングバッファ40上の各記憶領域41の内容(データ)を表示デバイス30上のメモリに対して高速で転送するための処理を実施する。また、表示エンジン16は、1フレームのデータを表示デバイス30に転送する処理が完了するたびに、所定の完了通知割り込みを、フレーム同期割り込みとしてマイクロプロセッサ11に与える。
表示カウンタ17は、表示デバイス30に表示済みのフレーム数を計数するカウンタである。ここでは、表示カウンタ17の内容を変数Lで表す。描画カウンタ15は、描画処理が終了したフレーム数を計数するカウンタである。ここでは、描画カウンタ15の内容を変数Kで表す。描画時間検出部13は、ポリゴン描画エンジン12が各描画命令を実行する際にかかった描画所要時間を測定する。描画時間累積計算部14は、描画時間検出部13が検出した描画所要時間に関する累積処理を実施する。
図1に示したグラフィックス表示装置の主要な処理に関する制御手順の具体例が図2に示されている。図2に示す処理は、マイクロプロセッサ11によって制御され、互いに独立して動作するプログラムの処理内容を表す描画スレッドと、表示スレッドとの2つで構成されている。
まず、図2に示した表示スレッドのアルゴリズムについて説明する。なお、表示可能な描画データが完成していなければ表示は始められないので、表示スレッドの起動は、描画スレッドから規定時間だけ遅れて、ないし表示可能なデータが出来てから開始されるのが普通である。
表示スレッドが開始された際、初期化のステップ(S31)にて表示カウンタ17の内容(L)は0に初期化される。次に、終了判定のステップ(S32)を経て、周期Tにて発生する表示フレームの割り込みがマイクロプロセッサ11に入るのを待つ。なお、周期Tは表示フレームの更新周期を表し、例えば(1/60)秒程度の一定時間になる。
表示フレームの割り込みが入るとステップS34に進み、表示カウンタ17の内容(L)をリングバッファ40の巡回数N(図1の例ではN=3)を底とする剰余系で示したインデックス(変数)に対応するリングバッファ40(記憶領域41(0)、41(1)、41(2)のいずれか)に保持されているデータを、表示エンジン16を用いて表示デバイス30に転送しその内容を画面に表示する。
その後、ステップS35で表示カウンタ17の内容(L)をインクリメントし、次に表示を行うべきリングバッファ40のインデックスを更新する(S36)。このインデックスは、前述のとおり表示カウンタ17の内容(L)の値を、Nを底とする剰余系で示すことで得られる。その後、表示の終了判定のステップ(S32)に戻る。終了が検出されると、表示スレッドが終了する。
つまり、図2に示す表示スレッドを繰り返し実行することにより、表示フレームの割り込みが入る度に、リングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に表示デバイス30に転送され画面上に表示される。なお、表示フレームの割り込みが入る度にリングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に転送されると説明したが、表示フレームの割り込みが所定回数入ったときにリングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に転送されるように構成してもよい。表示フレームの割り込み周期は液晶画面の走査周期である1/60秒が標準的であり、1秒間のうち60回画像が更新されることになるが、表示する画像の内容によっては、1秒間に30回、20回または15回画像が更新されればよいものもある。このように1秒間に画像を更新する回数を調整するために、表示フレームの割り込みが2回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に30回画像を更新することができり、表示フレームの割り込みが3回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に20回画像を更新することができ、表示フレームの割り込みが4回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に15回画像を更新することができる。このとき、表示カウンタLは、表示フレームの割り込みが2回、3回、4回入ったときに更新されるようにすればよい。
次に、図2に示す描画スレッドのアルゴリズムについて説明する。なお、図2に示す比較処理の各ステップの中で、「!=」は左辺と右辺の値が等しくないかどうかの比較を意味し、「||」は論理和(OR)を意味し、「==」は左辺と右辺の値が等しいかどうかの比較を意味している。
描画が開始されると、まず初期化のステップ(S11)にて各種カウンタ類の0クリアがなされる。次に、終了判定のステップ(S12)を経て、マイクロプロセッサ11によるKフレーム目の描画命令リスト21の生成が行われ(S13)、図1に示す描画命令保持部20に描画命令リスト21が保存される。
次のステップS14では、現在ポリゴン描画エンジン12が描画している先のリングバッファ40の記憶領域41を表すインデックス(書き込み位置すなわち描画位置を表す変数)と、次に表示がなされるべき、もしくは今表示のためにデータ転送中の記憶領域41を表すインデックス(読み出し位置すなわち表示位置を表す変数)とを比べることにより、リングバッファ40の仕組み上で、描画のインデックスが表示のインデックスを追い越さないかどうかを判定する。
簡単な判別方法としては、描画と表示のインデックスの差分値について、底をNとした剰余系で見た時に、0でなければ(((K−L)%N!=0)の条件を満たせば)、リングバッファ40上の重なりが発生しないので、追い越しも追い着きもせず安全であり、リングバッファ40上の空いている領域(又は表示が済んだ不要なデータを保持している領域)に対して描画処理を行うことになる。なお、描画スレッドを開始したばかり、すなわち描画カウンタ15の内容(K)が0の場合には、無条件にこの判定ステップ(S14)を抜けて次の描画命令実行のステップに移る。判定の結果、追い着きが認められると、表示カウンタLが更新されて描画と表示のバッファの重なりがなくなるまで、描画命令実行のステップには移らずに待ちのステップ(S15)に入る。なぜ待つ必要があるかについては後で述べる。
次に、描画命令実行のステップについて説明する。ポリゴン描画エンジン(レンダリングエンジン)12は、描画を実行して良いという命令をマイクロプロセッサ11から受けると、描画命令保持部20のバッファからDMA転送にて描画命令リスト21の命令列を取得し、その命令内容に従って描画処理を行う(S16)。
また、図1に示すように描画時間検出部13がポリゴン描画エンジン12に接続されており、描画時間検出部13はポリゴン描画エンジン12の動作状態と時間を監視している。そして、それぞれの描画命令毎に、その命令の実行開始から終了までにかかった所要時間δをステップS16で検出する。
また、描画時間検出部13に接続されている描画時間累積計算部14は、描画時間検出部13が各時点で検出した所要時間δを順次に累積し、累積時間tを算出する(S17)。この累積時間tは、図2の描画スレッドが開始された時間からの累積経過時間を表す。
次にポリゴン描画エンジン12がいま描画中のK番目のフレームに対する処理が、表示のタイミングに間に合うか否かを判定するためのステップに移る。すなわちステップS18では、描画時間累積計算部14が算出した累積時間tを、次に表示スレッドにて表示がなされる時刻を表す(L×T)と比較する。Lは表示カウンタの値であり、Tは表示のフレーム周期である。
tが(L×T)より小さければ表示までの時刻に間に合うので次のステップS19に進む。間に合わないと判断した場合には、せっかく描画中のデータであっても表示までに完成しないので継続する意味がないと判断し、現在処理中のフレームに対する描画を中断して次のフレームの描画に移行するべく、カウンタKの更新ステップ(S21)にジャンプする。なぜジャンプするかについての詳細説明は、図5を用いて後で述べる。
tが(L×T)より小さい場合には、次のステップS19で、現在描画中のK番目のフレームが完成したか否か、つまり描画命令リスト21上の全ての描画命令の実行を終了したか否かを判定する。未完成と判定した場合には、次の描画命令を実行するためにステップS20に進み、描画命令リスト21から次の描画命令を取り出す。そしてステップS16以降の処理をループ状に繰り返す。
K番目のフレームの描画が完成したと判定した場合には、ステップS19からステップS21に進み、描画カウンタ15の値Kを更新する。更に、次のステップS22で描画を行うターゲットのバッファ(リングバッファ40上の該当する1つの記憶領域41)を次のインデックスに対応するものに切り替える。なおこのインデックスの値は、描画カウンタ15の値Kを、Nを底とする剰余系で示す(K%N)ことで得られる。
図2に示す描画スレッドの処理においては、描画先のターゲットバッファを切り替えたあと、次のフレームの描画を休みなく進めるために終了判定ステップ(S12)にループし、最終フレームに到達しない限り次のフレームの描画を継続する。この理由については図3を用いて次に説明する。
図3は、図1に示すグラフィックス表示装置における描画動作及び表示動作のタイミングの具体例を表している。図3(a)は図2に示す動作を実行する場合のタイミングを示し、図3(b)は一般的な(従来の)動作を実行する場合のタイミングを示している。
図3(b)に示す動作例では、フレーム毎に、フレームの開始時刻に描画処理を開始し、1つのフレームに許される時間内(フレーム間隔T以内)を経過する前に描画処理を終了する。そして、描画処理が終了した表示内容のデータを次フレームが開始するタイミングに合わせて画面に表示する。従って、フレーム間隔Tを超える前に描画処理が確実に終了するように、描画対象のデータ(描画命令リスト21の内容に相当)を予め少なめに用意しておく必要がある。その結果、各フレームの描画処理が完了してから次のフレームが開始するまでに、ポリゴン描画エンジン12が描画処理を停止している「余り時間」が発生する。従って、フレーム間隔Tの全体を描画処理のために有効に利用できず、処理能力の高いポリゴン描画エンジン12を採用した場合でも、大量の描画命令を実行することができなかった。そこで、図2に示した動作を実行することにより、効率的な描画処理の実行が実現する。
すなわち、図3(a)に示す動作例では、ポリゴン描画エンジン12が1つのフレームについて描画処理が終了した後、次フレームが開始するタイミングを待つことなしに、後続のフレームに対する描画処理を開始する。そのため、図3(b)に示すような「余り時間」が発生せず、限られた時間(フレーム間隔T)の全体を描画処理のために有効に利用できる。図1に示すグラフィックス表示装置においては、リングバッファ40に複数の記憶領域41を設けてあるので、表示しているフレーム以外の複数フレームに関する描画処理を同時に行うことができる。従って、事前に描画命令リスト21として大量の描画命令を用意しておけば、「余り時間」を有効に使ってより複雑高度な絵を描くことができるようになる。
しかし、リングバッファ40上の記憶領域41の数が有限であるため、特別な制御を行わないと図4(b)に示すような問題が生じる可能性がある。すなわち、図4(b)に示す例では、1フレームの時間(フレーム間隔T)内に3(N)フレーム以上の表示内容をポリゴン描画エンジン12が実行できる場合を想定している。そのため、1つのフレームの描画時間内に、記憶領域41(0)、41(1)、41(2)に順番に書き込んだ後、記憶領域41(0)の内容を画面に表示する前に、更に記憶領域41(0)に後続フレームの表示内容を書き込むことになり、先に記憶領域41(0)に書き込まれた表示内容が上書きによって破壊される可能性がある。
そこで、図2に示すような描画スレッドの処理を実行することにより、このような問題の発生を防止する。つまり、図2のステップS14で、描画処理が表示を追い越さないかどうか、すなわち表示を完了していないデータが書き込まれている領域以外の空き領域がリングバッファ40に存在するかどうかを識別することにより、上記のような上書きによるデータの破壊を防止できる。
例えば、図4(a)に示す動作例では、1つのフレームの描画時間内に、ポリゴン描画エンジン12が記憶領域41(0)、41(1)、41(2)に順番に書き込んだ後、まだ表示されていない記憶領域41(0)のデータの破壊を防ぐために、次フレームが開始するタイミングになるまで描画処理を中断して待機する(図2のS15に対応)。
ところで、1フレームの描画時間にある程度の幅の許容量を持たせた場合でも、絵(表示すべき内容)がいっそう複雑高度になると、そのフレームの表示時刻に対して描画処理の完了が間に合わなくなるケースが出てくる。
例えば、図5(b)に示す動作例では、時刻ta〜時刻tbの間の期間(T)内に処理すべきフレームの描画が、時刻tbまでに終了していない。従って、描画処理の終了が表示開始のタイミング(tb)に間に合わず、不完全な絵が画面に表示されることになる。更に、時刻tbになっても前フレームの描画処理が継続しているため、時刻tb〜時刻tcの間の期間(T)内に処理すべきフレームの描画開始が遅くなり、後続するフレームの描画も間に合わなくなる可能性が高い。従って、実際に表示される絵の内容に破綻を来すことになる。
しかし、図2に示す描画スレッドの処理においてステップS18を実行することにより、このような問題の発生を回避できる。すなわち、あるフレームに対する描画処理の実行中に、当該フレームを表示するタイミングを超過するか、もしくはそのタイミングまでに描画処理が完了しないと認識した場合には、続く描画命令の実行を省略して後続フレームの描画処理に進む。
例えば、図5(a)に示す動作例では、時刻ta〜時刻tbの間の期間(T)内に処理すべきフレームの描画が、時刻tbまでに終了しないので、時刻tbを超過した時点で当該フレームに対する描画を中断し、後続フレームの描画に進む。このため、時刻ta〜時刻tbの期間に間に合わなかった特定のフレームについては不完全な絵が表示されることになるが、後続フレームの描画には影響を及ぼさないので、表示内容の破綻は最小限に抑制される。
なお、図2に示した描画スレッドのステップS18においては、描画処理が表示開始のタイミングを超過した時点で処理を中断するように制御しているが、ステップS18における比較の内容を変更することにより、描画処理が表示開始のタイミングを超過する前に処理を中断することも可能である。
図1に示したグラフィックス表示装置に搭載可能な描画時間検出部13に関する構成例が図6に示されている。図6(a)に示す構成例では、図1の構成と同様に、描画時間検出部13がポリゴン描画エンジン12の動作状態と時間とを監視して、実際の描画処理に要した所要時間を測定するように構成されている。
一方、図6(b)に示す構成例では、描画時間検出部13が描画命令リスト21からポリゴン描画エンジン12に入力される各描画命令の内容を把握して、この内容から描画処理に要する所要時間を推定する場合を想定している。具体的には、描画命令の種類毎にそれを実行するのに要する所要時間を表す定数を予め保持するデータベースを利用し、検出した描画命令の種類に基づき前記データベースにアクセスして描画の所要時間を推定する。なお、実際の描画所要時間は使用するポリゴン描画エンジン12の性能に応じて変化する。しかし、性能の異なる複数種類のポリゴン描画エンジン12について描画所要時間を検出する場合であっても、実際に使用するポリゴン描画エンジン12の能力に応じた補正係数を用いてデータベース上の定数を補正することにより、正確な所要時間を推定できる。
ところで、使用するポリゴン描画エンジン12の性能に比べて過大な(大量の)描画命令を処理しようとする場合には、各フレームに許される限られた時間内に全ての描画命令を処理しきれないので、例えば図5(a)に示すように描画を途中で中断せざるを得ない場合が生じる。その場合、コンテンツ作成者の意志とは無関係に、ポリゴン描画エンジン12の性能に応じて不完全な絵が表示されることになり、表示内容の見栄えが悪化するのは避けられない。
このような問題を解消するための方法について以下に説明する。描画命令保持部20上に保持する描画命令リスト21には、例えば図7に示すように、描画命令と共に各々の描画命令に対応付けた優先度情報を保持する。図7に示す例では、「優先度A」と「優先度B」との2種類以上の優先度が割り当て可能な場合を想定している。例えば、画面上に表示する各表示要素の中で、比較的大きい要素や、他の要素の手前側に存在する要素のように目立ちやすい要素、あるいは影響度の高い要素を描画するための描画命令に対しては優先度の高い「優先度A」を割り当て、比較的小さい要素や、他の要素の後ろ側に存在する要素のようにあまり目立たない要素を描画するための描画命令に対しては優先度の低い「優先度B」を割り当てるようにすればよい。
従って、携帯電話などハード性能上の制約が多いシステムにおいてゲームコンテンツなどのアプリケーションプログラムを実行する場合において、コンテンツ作成者が見栄えを考慮した上での描画の間引き方、および表示レートの保持を実現するために、優先度の割り当てを利用することができる。
つまり、「優先度A」の描画命令1〜4は優先して描画されるが、「優先度B」の描画命令5以降は、もともとのポリゴン描画エンジン12のポテンシャルから考えて、フレームレート維持には描画が間に合いそうにない場合、描画をスキップして次の描画命令の実行に移行させるように制御することができる。すなわち、「優先度B」が割り当てられる描画命令については、1画面を構成する上で「別段、無くてもプレーヤーに画面の意図を伝えられる、もしくは、有ったほうがよりリッチな表現になるが無くても困らないオブジェクト」になるようにコンテンツ作成者に最初から指定しておいてもらうことができる。これにより、コンテンツ作成者の意志を反映した表示内容の決定が可能になる。
図7に示すように優先度の情報を有する描画命令リスト21が存在する場合には、図2に示した動作例の代わりに、図8に示す動作例のようにマイクロプロセッサ11の制御の内容を変更すればよい。図8に示す動作例では、ステップS46及びステップS47が追加された点が図2と異なっているが、それ以外は図2と同様である。
図8のステップS46では、処理対象の描画命令の優先度が「優先度A」か「優先度B」かを判定する。優先度が「優先度B」である場合には次のステップS47に進み、「優先度A」である場合はステップS48の処理に進む。
ステップS47では、ポリゴン描画エンジン12を主体とするこの装置のハードウェアが「優先度B」の描画命令を実行するに足りる性能を具備しているか否かを判定する。すなわち、能力の高いハードウェアを搭載している場合には処理に余裕があるので比較的優先度の低い描画命令も含めて実行することにより情報量の多い高品質の絵を表示できる。しかし、能力の低いハードウェアを搭載している場合には処理に余裕がないので優先度の低い描画命令の実行を省略することにより、時間的に処理が間に合わない状況の発生を防止すると共に、コンテンツ作成者の意志を反映するように、優先度の高い必要最小限の描画命令はもれなく実行できるように制御することが可能になる。
なお、ステップS47で検出するハードウェアの性能については、使用しているポリゴン描画エンジン12の種類とその動作周波数とに基づいて特定することができる。従って、例えばポリゴン描画エンジン12の種類を表す情報と、ポリゴン描画エンジン12の動作周波数を表す情報とを基本情報としてROM(読み出し専用メモリ)などに予め登録しておき、ステップS47を実行する際には、前記ROMから読み出した情報に基づいてハードウェアの性能を検出し、その結果と事前に「優先度B」に対応付けられた定数(閾値)とを比較すればよい。
なお、図7及び図8に示す具体例では、優先度が「優先度A」と「優先度B」との2種類だけの場合を想定しているが、3種類以上の優先度を各描画命令に割り当てるようにしても良い。その場合には、割り当て可能な優先度の数に応じて、図8におけるステップS46、S47と同等の処理を更に追加すればよい。
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
本発明は、例えば携帯電話端末や携帯型情報端末(PDA)のように、必ずしも高性能のポリゴン描画エンジンを搭載できない装置において、3Dゲームアプリケーションプログラムなどを実行し、高品質のグラフィックス表示を行おうとする場合であっても、描画エンジンの処理能力を最大限に引き出すことが可能であるため、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持したり、表示内容の破綻を抑制することが可能になる。
本発明は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置及びグラフィックス描画方法に関する。
例えば、携帯電話端末や携帯型情報端末(PDA)のような装置においては、様々なアプリケーションプログラムを必要に応じて実行可能なものが多い。実行可能なアプリケーションプログラムの中には、立体的に表示される様々なキャラクタを利用する3Dゲームや、立体的な地図を表示するナビゲーションや、立体的な図形などを表示するシミュレータのように、3次元グラフィックスを利用して様々な図形やキャラクタを画面上に表示するものも多く含まれている。
また、上記のようなアプリケーションプログラムにおいては、画面上に動画を表示する必要があり、アプリケーションプログラムによって画面上に表示される内容は、短い時間周期で頻繁に更新される。特に、ゲームなどのアプリケーションプログラムにおいて、滑らかに変化する高品質の動画を表示しようとする場合には、一定のフレーム周期で画面上に表示する画像の内容を高速で更新する必要がある。
但し、3次元グラフィックスのような像を描画するためには非常に高い描画処理能力が要求される。しかも、動画を構成する各フレームの描画に許される時間はフレーム周期によって制限されるので、非常に短い時間内に大量の表示要素を描画しなければならない。
コンピュータグラフィックスシステムでは、できるだけ高精細で美しい画像を描画したいという要望とともに、できるだけ表示のフレームレートを高く保持したいという要望がある。表示レートを低くしても構わなければ、美しい高精細画像をゆっくり描画すれば良いが、ゲームアプリケーションなど、動きがある画像を描画しなければならない場合は、フレームレートを保持できなければ、利用者に対して適切なプレゼンテーションができないことにもなりかねない。
こうした要望に応えるために考案されたコンピュータグラフィックスシステムの描画パフォーマンスの調整方法が、例えば特許文献1に開示されている。特許文献1においては、表示要素のレンダリングに要する時間を算出するためのシミュレーションアルゴリズムを提示しており、描画処理を実行する元となる情報を作成するクリエータに対して、つまりゲームアプリケーションであればゲーム開発者に対して、最適な描画パラメータを選定させ、フレームレートが保持できないような無理な描画処理を初めから作らせないようにすることを目的としている。
また、特許文献2に開示された従来技術においては、レンダリングエンジンの描画能力に基づき、生成する3次元キャラクタのポリゴン数を、画面への占有面積に対する見栄えに応じて加減することで、1フレームに割り当て可能な描画量をレンダリングエンジンの描画能力以内に抑えることを提案している。
特表2002−503854号公報 特開2000−242807号公報
例えば、フレーム周期に相当する時間内に5000個の表示要素を描画可能な処理能力を有する描画エンジンを採用している場合に、1フレーム内に10000個の表示要素を表示させるような命令のデータを作成すると、実際には許された時間内に全てのデータの表示要素を描画できないため、表示すべき画像の一部分が欠落した内容が画面上に表示されることになり表示内容の破綻を来すことになる。特許文献1に開示された従来の方法を採用すれば、描画処理に先立ってクリエータが表示の破綻を来たさない完璧なデータを予め作成することが可能である。
また、このような従来技術は、例えば携帯電話端末などでゲームコンテンツなどをダウンロードした場合において、そのコンテンツソフトの描画処理実行時に、表示レートを保持できるかできないかのリアルタイム判定に活用できる。しかし、表示レートの保持そのものに対して具体的な解決策を提供することはできない。
特に携帯電話端末に関しては、機種が多岐に渡っており、それぞれの携帯電話端末に描画のために搭載されるレンダリングエンジンは、機種毎に描画能力が大きく異なる可能性が高い。従って、特定の機種向けに表示レートが維持できるようにゲームなどのコンテンツを作成しても、機種が異なれば描画能力が劣るために正しく再生できなくなるケースが起こり得る。
また、特許文献2の従来技術を採用する場合には、ポリゴン描画の間引きを実施することにより、表示のフレームレートを保持することが可能である。しかし、間引きの際には、その使用するレンダリングエンジンの能力のみに基づいて3次元キャラクタのポリゴン数割り当てが決定されるため、必ずしもコンテンツの作成者が許容する間引きが実現されるとは限らないという虞がある。つまり、表示のフレームレートを保持するために、描画するポリゴン数を必要以上に削減することになり、コンテンツの作成者が希望する品質の画面が表示されない可能性がある。
本発明は、3次元グラフィックスのように高い描画処理能力を要求される動画を表示する場合に、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持し、かつ表示内容の破綻を抑制すると共に、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することが可能なグラフィックス描画装置及びグラフィックス描画方法を提供することを目的とする。
本発明のグラフィックス描画装置は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するグラフィックス描画装置であって、1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、前記描画制御部が描画を許可した場合に、描画所要時間を予測する描画所要時間予測部と、前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部とを設けたことを特徴とする。
この構成により、フレームバッファが表示内容のデータを格納する領域を複数フレーム分備えているので、各フレームの像を画面に表示する前に、描画処理を前記フレームバッファの各領域に対して行い、描画が完了した各領域のフレームバッファの内容を必要なタイミングで画面に表示することができる。従って、ある1フレームの像を画面に表示している時に、他の複数フレームのそれぞれについて像の描画を実施することも可能になる。例えば、一定のフレーム周期で各フレームの像を画面に順次に表示する場合であっても、1フレームの時間内に描画する内容は1フレームに限定されず、実際の描画処理能力に余裕があれば、1フレームの時間内に2フレーム以上の像を描画することも可能になる。つまり、あるタイミングで次に表示すべきフレームの表示内容の描画が終了していれば、次の次に表示すべきフレームの表示内容の描画も開始することもできる。そのため、実際には描画処理が実施されない待ち時間を減らして描画処理を効率的に実行できるので、描画エンジンの処理能力を最大限に発揮することが可能になる。
但し、フレームバッファ上の領域の数は有限であるため、特定数の領域のそれぞれを順番に循環的に繰り返し描画に使用する必要がある。そのため、実際の描画処理能力に比べて各フレームに表示する表示要素の数が比較的少ないような場合には、描画が完了した後、まだ表示が終了していないフレームの領域に対しても更なる描画処理により描画内容の上書きが実行されるおそれがある。
それを防止するために、描画フレームカウンタと、表示フレームカウンタと、描画制御部とを設けてある。描画フレームカウンタは、描画が終了したフレーム数に応じて変化する値を計数する。表示フレームカウンタは、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数する。描画制御部は、前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域(表示の済んだデータを保持する領域も空きとみなす)が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する。
ところで、表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に(該当するフレームの表示を開始するまでに)処理できるとは限らない。
そこで、前記描画省略制御部が、前記表示フレームカウンタの値とフレームの表示周期と前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御する。これにより、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、1フレームの描画に関する所要時間を推定することを特徴とする。
この構成により、それぞれの描画命令を実行した時に検出された所要時間の累積値を算出するので、実際に使用する描画エンジンの描画処理能力が変化した場合であっても、1フレームの描画に関する所要時間を正確に推定することができる。
また、本発明のグラフィックス描画装置は、前記描画所要時間予測部が、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、1フレームの描画に関する所要時間を推定することを特徴とする。
所定の描画エンジンが処理対象のそれぞれの描画命令を実行するときにかかる所要時間は、描画エンジン自体の処理能力と、描画命令の種類に応じて大きく変化する。処理能力が既知の描画エンジンを採用するのであれば、描画命令毎の所要時間については、描画命令の種類毎に特定可能な定数に基づいて計算により推定することができる。
この構成により、描画命令の種類毎に特定される定数の累積値を算出することにより、1フレームの描画に関する所要時間を推定する。
また、本発明のグラフィックス描画装置は、それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に2種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とする。
表示すべき様々な表示要素をフレームバッファ上の各領域で描画した後で、各領域の内容を画面に表示するように処理する場合には、表示するフレーム毎に、それを画面に表示する直前までに描画処理を終了する必要がある。しかし、実際の描画処理能力は使用する描画エンジンの種類毎に異なるし、描画対象となる描画命令やデータは、実際の描画処理にかかる所要時間を事前に想定していないので、描画対象となる全ての描画命令を限られた時間内に(該当するフレームの表示を開始するまでに)処理できるとは限らない。
しかし、可能な範囲内でより品質の高い像を表示できる方が望ましいので、表示対象のデータ(描画命令のリスト)については、なるべく高精度のものを大量に用意しておく必要がある。但し、実際に使用する描画エンジンの描画処理能力の限界により、許される時間内に全ての描画命令を実行できない状況も発生しうる。そのような場合、表示内容の破綻を来すことになり、コンテンツの作成者(例えばゲームクリエータ)が希望する品質の画面が表示されない可能性がある。
この構成により、描画命令のリスト中の描画命令毎に優先度情報を持たせることができるので、優先度の高い描画命令についてはできる限り描画が省略されないように優先的に扱うことができる。また、優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別するので、処理能力の高い描画エンジンを採用している装置においては、優先度の低い描画命令についても描画が省略されないように処理できる。従って、コンテンツの作成者は自分自身の意図(描画エンジンの性能が低い場合でもこれだけは表示したい)を各描画命令の優先度に反映させることができ、表示内容の破綻を抑制できる。
また、本発明のグラフィックス描画方法は、時系列で順次に現れる複数の表示フレームのそれぞれに合わせて表示すべき図形、キャラクタ、画像などの表示要素を入力される任意の指示に従って順次に描画するためのグラフィックス表示方法であって、1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、描画が終了したフレーム数に応じて変化する第1の値を計数し、描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第2の値を計数し、前記第1の値と前記第2の値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画処理を許可すると共に描画所要時間を予測し、前記第2の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とする。
この方法では、表示前に描画が完了するか否かを識別し、表示前に描画が完了しないと予想される場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、該当するフレームの表示タイミングに間に合う可能な範囲内で、最大限の描画処理を実行できる。従って、高品質の像を表示するために大量の描画命令が用意された場合であっても、フレーム毎に許される時間内に描画処理の区切りをつけることができ、結果的に表示される像のトータルの品質をそこそこに維持できる。
本発明によれば、3次元グラフィックスのように高い描画処理能力を要求される動画を描画する場合に、各フレームの描画に許される時間が短い場合であっても、表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むように制御するので、表示フレームレートを維持でき、しかも表示内容の破綻を抑制することができる。そのため、表示される像のトータルの品質をそこそこに維持できる。また、描画エンジンの処理能力を最大限に引き出して高品質の画像を表示することも可能である。
実施の形態におけるグラフィックス表示装置のハードウェア構成例を示すブロック図である。 図1に示す装置の主要部の動作例を示すフローチャートである。 図1に示す装置及び従来例の動作例を示すタイムチャートである。 図1に示す装置の動作例を示すタイムチャートである。 図1に示す装置及び従来例の動作例を示すタイムチャートである。 描画所要時間を検出するため構成要素の具体例を示すブロック図である。 描画命令リストの構成例を示す模式図である。 図1に示す装置の主要部の動作例を示すフローチャートである。
本発明のグラフィックス描画装置及びグラフィックス描画方法に関する具体的な1つの実施の形態について、図1〜図8を参照しながら以下に説明する。
図1は実施の形態におけるグラフィックス描画装置を搭載したグラフィックス表示装置のハードウェア構成例を示すブロック図である。図2は図1に示す装置の主要部の動作例を示すフローチャートである。図3は図1に示す装置及び従来例の動作例を示すタイムチャートである。図4は図1に示す装置の動作例を示すタイムチャートである。図5は図1に示す装置及び従来例の動作例を示すタイムチャートである。図6は描画所要時間を検出するため構成要素の具体例を示すブロック図である。図7は描画命令リストの構成例を示す模式図である。図8は図1に示す装置の主要部の動作例を示すフローチャートである。
図1に示すグラフィックス表示装置は、グラフィックス処理部10と、描画命令保持部20と、表示デバイス30と、リングバッファ40とで構成されている。また、グラフィックス処理部10は、マイクロプロセッサ(CPU)11と、ポリゴン描画エンジン12と、描画時間検出部13と、描画時間累積計算部14と、描画カウンタ15と、表示エンジン16と、表示カウンタ17とを備えている。
なお、グラフィックス表示装置は、例えば携帯電話やPDA、携帯ゲーム機等である。
グラフィックス処理部10は、グラフィックスに関する様々な処理を実施するためのハードウェアである。表示デバイス30は、例えば液晶表示装置のように2次元の表示画面を備えた表示装置である。描画命令保持部20は、画面の各フレームに表示すべき各表示要素(ポリゴンなどのグラフィックス)に相当する描画命令を一覧として並べた描画命令リスト21のデータを保持するための記憶装置である。リングバッファ40は、表示デバイス30の画面に表示すべき表示内容のデータをフレーム毎に保持するための記憶装置である。
図1に示す具体例においては、リングバッファ40上に3つの記憶領域41(0)、41(1)、41(2)が設けてあり、それぞれの記憶領域41(0)、41(1)、41(2)が各々独立したフレームの表示内容に相当するデータを保持することができる。3つの記憶領域41(0)、41(1)、41(2)は、連続的に現れる表示デバイス30の各表示フレームに対応付けて、順番にかつ巡回的に使用されるので、リングバッファとして機能する。つまり、記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の順番で各表示フレームに対応付けられる。
マイクロプロセッサ11は、表示内容を決定するデータである描画命令を作成し、描画命令リスト21として描画命令保持部20に蓄積するとともに、グラフィックス処理部10の全体の制御を実施する。
ポリゴン描画エンジン12は、描画処理専用のハードウェアであり、描画命令リスト21に存在する各描画命令に従ってポリゴンの描画を実行する。ポリゴン描画エンジン12の描画結果は、リングバッファ40上のいずれかの記憶領域41に格納される。また、ポリゴン描画エンジン12が描画命令リスト21から描画命令を取り込む際には、マイクロプロセッサ11を経由せず、DMA(Direct Memory Access)により描画命令のデータが描画命令保持部20からポリゴン描画エンジン12に転送される。また、一連の描画処理がポリゴン描画エンジン12内で完了すると、マイクロプロセッサ11の処理に対して割り込みがかかるように設計されている。
表示エンジン16は、描画内容を表示デバイス30の画面に表示するための処理を行うための専用のハードウェアである。具体的には、表示エンジン16はリングバッファ40上の各記憶領域41の内容(データ)を表示デバイス30上のメモリに対して高速で転送するための処理を実施する。また、表示エンジン16は、1フレームのデータを表示デバイス30に転送する処理が完了するたびに、所定の完了通知割り込みを、フレーム同期割り込みとしてマイクロプロセッサ11に与える。
表示カウンタ17は、表示デバイス30に表示済みのフレーム数を計数するカウンタである。ここでは、表示カウンタ17の内容を変数Lで表す。描画カウンタ15は、描画処理が終了したフレーム数を計数するカウンタである。ここでは、描画カウンタ15の内容を変数Kで表す。描画時間検出部13は、ポリゴン描画エンジン12が各描画命令を実行する際にかかった描画所要時間を測定する。描画時間累積計算部14は、描画時間検出部13が検出した描画所要時間に関する累積処理を実施する。
図1に示したグラフィックス表示装置の主要な処理に関する制御手順の具体例が図2に示されている。図2に示す処理は、マイクロプロセッサ11によって制御され、互いに独立して動作するプログラムの処理内容を表す描画スレッドと、表示スレッドとの2つで構成されている。
まず、図2に示した表示スレッドのアルゴリズムについて説明する。なお、表示可能な描画データが完成していなければ表示は始められないので、表示スレッドの起動は、描画スレッドから規定時間だけ遅れて、ないし表示可能なデータが出来てから開始されるのが普通である。
表示スレッドが開始された際、初期化のステップ(S31)にて表示カウンタ17の内容(L)は0に初期化される。次に、終了判定のステップ(S32)を経て、周期Tにて発生する表示フレームの割り込みがマイクロプロセッサ11に入るのを待つ。なお、周期Tは表示フレームの更新周期を表し、例えば(1/60)秒程度の一定時間になる。
表示フレームの割り込みが入るとステップS34に進み、表示カウンタ17の内容(L)をリングバッファ40の巡回数N(図1の例ではN=3)を底とする剰余系で示したインデックス(変数)に対応するリングバッファ40(記憶領域41(0)、41(1)、41(2)のいずれか)に保持されているデータを、表示エンジン16を用いて表示デバイス30に転送しその内容を画面に表示する。
その後、ステップS35で表示カウンタ17の内容(L)をインクリメントし、次に表示を行うべきリングバッファ40のインデックスを更新する(S36)。このインデックスは、前述のとおり表示カウンタ17の内容(L)の値を、Nを底とする剰余系で示すことで得られる。その後、表示の終了判定のステップ(S32)に戻る。終了が検出されると、表示スレッドが終了する。
つまり、図2に示す表示スレッドを繰り返し実行することにより、表示フレームの割り込みが入る度に、リングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に表示デバイス30に転送され画面上に表示される。なお、表示フレームの割り込みが入る度にリングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に転送されると説明したが、表示フレームの割り込みが所定回数入ったときにリングバッファ40の記憶領域41(0)、41(1)、41(2)、41(0)、41(1)、41(2)、・・・の内容が順次に転送されるように構成してもよい。表示フレームの割り込み周期は液晶画面の走査周期である1/60秒が標準的であり、1秒間のうち60回画像が更新されることになるが、表示する画像の内容によっては、1秒間に30回、20回または15回画像が更新されればよいものもある。このように1秒間に画像を更新する回数を調整するために、表示フレームの割り込みが2回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に30回画像を更新することができり、表示フレームの割り込みが3回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に20回画像を更新することができ、表示フレームの割り込みが4回入ったときにリングバッファ40の記憶領域41の内容を順次に転送するように構成すれば1秒間に15回画像を更新することができる。このとき、表示カウンタLは、表示フレームの割り込みが2回、3回、4回入ったときに更新されるようにすればよい。
次に、図2に示す描画スレッドのアルゴリズムについて説明する。なお、図2に示す比較処理の各ステップの中で、「!=」は左辺と右辺の値が等しくないかどうかの比較を意味し、「||」は論理和(OR)を意味し、「==」は左辺と右辺の値が等しいかどうかの比較を意味している。
描画が開始されると、まず初期化のステップ(S11)にて各種カウンタ類の0クリアがなされる。次に、終了判定のステップ(S12)を経て、マイクロプロセッサ11によるKフレーム目の描画命令リスト21の生成が行われ(S13)、図1に示す描画命令保持部20に描画命令リスト21が保存される。
次のステップS14では、現在ポリゴン描画エンジン12が描画している先のリングバッファ40の記憶領域41を表すインデックス(書き込み位置すなわち描画位置を表す変数)と、次に表示がなされるべき、もしくは今表示のためにデータ転送中の記憶領域41を表すインデックス(読み出し位置すなわち表示位置を表す変数)とを比べることにより、リングバッファ40の仕組み上で、描画のインデックスが表示のインデックスを追い越さないかどうかを判定する。
簡単な判別方法としては、描画と表示のインデックスの差分値について、底をNとした剰余系で見た時に、0でなければ(((K−L)%N!=0)の条件を満たせば)、リングバッファ40上の重なりが発生しないので、追い越しも追い着きもせず安全であり、リングバッファ40上の空いている領域(又は表示が済んだ不要なデータを保持している領域)に対して描画処理を行うことになる。なお、描画スレッドを開始したばかり、すなわち描画カウンタ15の内容(K)が0の場合には、無条件にこの判定ステップ(S14)を抜けて次の描画命令実行のステップに移る。判定の結果、追い着きが認められると、表示カウンタLが更新されて描画と表示のバッファの重なりがなくなるまで、描画命令実行のステップには移らずに待ちのステップ(S15)に入る。なぜ待つ必要があるかについては後で述べる。
次に、描画命令実行のステップについて説明する。ポリゴン描画エンジン(レンダリングエンジン)12は、描画を実行して良いという命令をマイクロプロセッサ11から受けると、描画命令保持部20のバッファからDMA転送にて描画命令リスト21の命令列を取得し、その命令内容に従って描画処理を行う(S16)。
また、図1に示すように描画時間検出部13がポリゴン描画エンジン12に接続されており、描画時間検出部13はポリゴン描画エンジン12の動作状態と時間を監視している。そして、それぞれの描画命令毎に、その命令の実行開始から終了までにかかった所要時間δをステップS16で検出する。
また、描画時間検出部13に接続されている描画時間累積計算部14は、描画時間検出部13が各時点で検出した所要時間δを順次に累積し、累積時間tを算出する(S17)。この累積時間tは、図2の描画スレッドが開始された時間からの累積経過時間を表す。
次にポリゴン描画エンジン12がいま描画中のK番目のフレームに対する処理が、表示のタイミングに間に合うか否かを判定するためのステップに移る。すなわちステップS18では、描画時間累積計算部14が算出した累積時間tを、次に表示スレッドにて表示がなされる時刻を表す(L×T)と比較する。Lは表示カウンタの値であり、Tは表示のフレーム周期である。
tが(L×T)より小さければ表示までの時刻に間に合うので次のステップS19に進む。間に合わないと判断した場合には、せっかく描画中のデータであっても表示までに完成しないので継続する意味がないと判断し、現在処理中のフレームに対する描画を中断して次のフレームの描画に移行するべく、カウンタKの更新ステップ(S21)にジャンプする。なぜジャンプするかについての詳細説明は、図5を用いて後で述べる。
tが(L×T)より小さい場合には、次のステップS19で、現在描画中のK番目のフレームが完成したか否か、つまり描画命令リスト21上の全ての描画命令の実行を終了したか否かを判定する。未完成と判定した場合には、次の描画命令を実行するためにステップS20に進み、描画命令リスト21から次の描画命令を取り出す。そしてステップS16以降の処理をループ状に繰り返す。
K番目のフレームの描画が完成したと判定した場合には、ステップS19からステップS21に進み、描画カウンタ15の値Kを更新する。更に、次のステップS22で描画を行うターゲットのバッファ(リングバッファ40上の該当する1つの記憶領域41)を次のインデックスに対応するものに切り替える。なおこのインデックスの値は、描画カウンタ15の値Kを、Nを底とする剰余系で示す(K%N)ことで得られる。
図2に示す描画スレッドの処理においては、描画先のターゲットバッファを切り替えたあと、次のフレームの描画を休みなく進めるために終了判定ステップ(S12)にループし、最終フレームに到達しない限り次のフレームの描画を継続する。この理由については図3を用いて次に説明する。
図3は、図1に示すグラフィックス表示装置における描画動作及び表示動作のタイミングの具体例を表している。図3(a)は図2に示す動作を実行する場合のタイミングを示し、図3(b)は一般的な(従来の)動作を実行する場合のタイミングを示している。
図3(b)に示す動作例では、フレーム毎に、フレームの開始時刻に描画処理を開始し、1つのフレームに許される時間内(フレーム間隔T以内)を経過する前に描画処理を終了する。そして、描画処理が終了した表示内容のデータを次フレームが開始するタイミングに合わせて画面に表示する。従って、フレーム間隔Tを超える前に描画処理が確実に終了するように、描画対象のデータ(描画命令リスト21の内容に相当)を予め少なめに用意しておく必要がある。その結果、各フレームの描画処理が完了してから次のフレームが開始するまでに、ポリゴン描画エンジン12が描画処理を停止している「余り時間」が発生する。従って、フレーム間隔Tの全体を描画処理のために有効に利用できず、処理能力の高いポリゴン描画エンジン12を採用した場合でも、大量の描画命令を実行することができなかった。そこで、図2に示した動作を実行することにより、効率的な描画処理の実行が実現する。
すなわち、図3(a)に示す動作例では、ポリゴン描画エンジン12が1つのフレームについて描画処理が終了した後、次フレームが開始するタイミングを待つことなしに、後続のフレームに対する描画処理を開始する。そのため、図3(b)に示すような「余り時間」が発生せず、限られた時間(フレーム間隔T)の全体を描画処理のために有効に利用できる。図1に示すグラフィックス表示装置においては、リングバッファ40に複数の記憶領域41を設けてあるので、表示しているフレーム以外の複数フレームに関する描画処理を同時に行うことができる。従って、事前に描画命令リスト21として大量の描画命令を用意しておけば、「余り時間」を有効に使ってより複雑高度な絵を描くことができるようになる。
しかし、リングバッファ40上の記憶領域41の数が有限であるため、特別な制御を行わないと図4(b)に示すような問題が生じる可能性がある。すなわち、図4(b)に示す例では、1フレームの時間(フレーム間隔T)内に3(N)フレーム以上の表示内容をポリゴン描画エンジン12が実行できる場合を想定している。そのため、1つのフレームの描画時間内に、記憶領域41(0)、41(1)、41(2)に順番に書き込んだ後、記憶領域41(0)の内容を画面に表示する前に、更に記憶領域41(0)に後続フレームの表示内容を書き込むことになり、先に記憶領域41(0)に書き込まれた表示内容が上書きによって破壊される可能性がある。
そこで、図2に示すような描画スレッドの処理を実行することにより、このような問題の発生を防止する。つまり、図2のステップS14で、描画処理が表示を追い越さないかどうか、すなわち表示を完了していないデータが書き込まれている領域以外の空き領域がリングバッファ40に存在するかどうかを識別することにより、上記のような上書きによるデータの破壊を防止できる。
例えば、図4(a)に示す動作例では、1つのフレームの描画時間内に、ポリゴン描画エンジン12が記憶領域41(0)、41(1)、41(2)に順番に書き込んだ後、まだ表示されていない記憶領域41(0)のデータの破壊を防ぐために、次フレームが開始するタイミングになるまで描画処理を中断して待機する(図2のS15に対応)。
ところで、1フレームの描画時間にある程度の幅の許容量を持たせた場合でも、絵(表示すべき内容)がいっそう複雑高度になると、そのフレームの表示時刻に対して描画処理の完了が間に合わなくなるケースが出てくる。
例えば、図5(b)に示す動作例では、時刻ta〜時刻tbの間の期間(T)内に処理すべきフレームの描画が、時刻tbまでに終了していない。従って、描画処理の終了が表示開始のタイミング(tb)に間に合わず、不完全な絵が画面に表示されることになる。更に、時刻tbになっても前フレームの描画処理が継続しているため、時刻tb〜時刻tcの間の期間(T)内に処理すべきフレームの描画開始が遅くなり、後続するフレームの描画も間に合わなくなる可能性が高い。従って、実際に表示される絵の内容に破綻を来すことになる。
しかし、図2に示す描画スレッドの処理においてステップS18を実行することにより、このような問題の発生を回避できる。すなわち、あるフレームに対する描画処理の実行中に、当該フレームを表示するタイミングを超過するか、もしくはそのタイミングまでに描画処理が完了しないと認識した場合には、続く描画命令の実行を省略して後続フレームの描画処理に進む。
例えば、図5(a)に示す動作例では、時刻ta〜時刻tbの間の期間(T)内に処理すべきフレームの描画が、時刻tbまでに終了しないので、時刻tbを超過した時点で当該フレームに対する描画を中断し、後続フレームの描画に進む。このため、時刻ta〜時刻tbの期間に間に合わなかった特定のフレームについては不完全な絵が表示されることになるが、後続フレームの描画には影響を及ぼさないので、表示内容の破綻は最小限に抑制される。
なお、図2に示した描画スレッドのステップS18においては、描画処理が表示開始のタイミングを超過した時点で処理を中断するように制御しているが、ステップS18における比較の内容を変更することにより、描画処理が表示開始のタイミングを超過する前に処理を中断することも可能である。
図1に示したグラフィックス表示装置に搭載可能な描画時間検出部13に関する構成例が図6に示されている。図6(a)に示す構成例では、図1の構成と同様に、描画時間検出部13がポリゴン描画エンジン12の動作状態と時間とを監視して、実際の描画処理に要した所要時間を測定するように構成されている。
一方、図6(b)に示す構成例では、描画時間検出部13が描画命令リスト21からポリゴン描画エンジン12に入力される各描画命令の内容を把握して、この内容から描画処理に要する所要時間を推定する場合を想定している。具体的には、描画命令の種類毎にそれを実行するのに要する所要時間を表す定数を予め保持するデータベースを利用し、検出した描画命令の種類に基づき前記データベースにアクセスして描画の所要時間を推定する。なお、実際の描画所要時間は使用するポリゴン描画エンジン12の性能に応じて変化する。しかし、性能の異なる複数種類のポリゴン描画エンジン12について描画所要時間を検出する場合であっても、実際に使用するポリゴン描画エンジン12の能力に応じた補正係数を用いてデータベース上の定数を補正することにより、正確な所要時間を推定できる。
ところで、使用するポリゴン描画エンジン12の性能に比べて過大な(大量の)描画命令を処理しようとする場合には、各フレームに許される限られた時間内に全ての描画命令を処理しきれないので、例えば図5(a)に示すように描画を途中で中断せざるを得ない場合が生じる。その場合、コンテンツ作成者の意志とは無関係に、ポリゴン描画エンジン12の性能に応じて不完全な絵が表示されることになり、表示内容の見栄えが悪化するのは避けられない。
このような問題を解消するための方法について以下に説明する。描画命令保持部20上に保持する描画命令リスト21には、例えば図7に示すように、描画命令と共に各々の描画命令に対応付けた優先度情報を保持する。図7に示す例では、「優先度A」と「優先度B」との2種類以上の優先度が割り当て可能な場合を想定している。例えば、画面上に表示する各表示要素の中で、比較的大きい要素や、他の要素の手前側に存在する要素のように目立ちやすい要素、あるいは影響度の高い要素を描画するための描画命令に対しては優先度の高い「優先度A」を割り当て、比較的小さい要素や、他の要素の後ろ側に存在する要素のようにあまり目立たない要素を描画するための描画命令に対しては優先度の低い「優先度B」を割り当てるようにすればよい。
従って、携帯電話などハード性能上の制約が多いシステムにおいてゲームコンテンツなどのアプリケーションプログラムを実行する場合において、コンテンツ作成者が見栄えを考慮した上での描画の間引き方、および表示レートの保持を実現するために、優先度の割り当てを利用することができる。
つまり、「優先度A」の描画命令1〜4は優先して描画されるが、「優先度B」の描画命令5以降は、もともとのポリゴン描画エンジン12のポテンシャルから考えて、フレームレート維持には描画が間に合いそうにない場合、描画をスキップして次の描画命令の実行に移行させるように制御することができる。すなわち、「優先度B」が割り当てられる描画命令については、1画面を構成する上で「別段、無くてもプレーヤーに画面の意図を伝えられる、もしくは、有ったほうがよりリッチな表現になるが無くても困らないオブジェクト」になるようにコンテンツ作成者に最初から指定しておいてもらうことができる。これにより、コンテンツ作成者の意志を反映した表示内容の決定が可能になる。
図7に示すように優先度の情報を有する描画命令リスト21が存在する場合には、図2に示した動作例の代わりに、図8に示す動作例のようにマイクロプロセッサ11の制御の内容を変更すればよい。図8に示す動作例では、ステップS46及びステップS47が追加された点が図2と異なっているが、それ以外は図2と同様である。
図8のステップS46では、処理対象の描画命令の優先度が「優先度A」か「優先度B」かを判定する。優先度が「優先度B」である場合には次のステップS47に進み、「優先度A」である場合はステップS48の処理に進む。
ステップS47では、ポリゴン描画エンジン12を主体とするこの装置のハードウェアが「優先度B」の描画命令を実行するに足りる性能を具備しているか否かを判定する。すなわち、能力の高いハードウェアを搭載している場合には処理に余裕があるので比較的優先度の低い描画命令も含めて実行することにより情報量の多い高品質の絵を表示できる。しかし、能力の低いハードウェアを搭載している場合には処理に余裕がないので優先度の低い描画命令の実行を省略することにより、時間的に処理が間に合わない状況の発生を防止すると共に、コンテンツ作成者の意志を反映するように、優先度の高い必要最小限の描画命令はもれなく実行できるように制御することが可能になる。
なお、ステップS47で検出するハードウェアの性能については、使用しているポリゴン描画エンジン12の種類とその動作周波数とに基づいて特定することができる。従って、例えばポリゴン描画エンジン12の種類を表す情報と、ポリゴン描画エンジン12の動作周波数を表す情報とを基本情報としてROM(読み出し専用メモリ)などに予め登録しておき、ステップS47を実行する際には、前記ROMから読み出した情報に基づいてハードウェアの性能を検出し、その結果と事前に「優先度B」に対応付けられた定数(閾値)とを比較すればよい。
なお、図7及び図8に示す具体例では、優先度が「優先度A」と「優先度B」との2種類だけの場合を想定しているが、3種類以上の優先度を各描画命令に割り当てるようにしても良い。その場合には、割り当て可能な優先度の数に応じて、図8におけるステップS46、S47と同等の処理を更に追加すればよい。
本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変更や修正を加えることができることは当業者にとって明らかである。
本発明は、例えば携帯電話端末や携帯型情報端末(PDA)のように、必ずしも高性能のポリゴン描画エンジンを搭載できない装置において、3Dゲームアプリケーションプログラムなどを実行し、高品質のグラフィックス表示を行おうとする場合であっても、描画エンジンの処理能力を最大限に引き出すことが可能であるため、各フレームの描画に許される時間が短い場合であっても表示フレームレートを維持したり、表示内容の破綻を抑制することが可能になる。
10 グラフィックス処理部
11 マイクロプロセッサ
12 ポリゴン描画エンジン
13 描画時間検出部
14 描画時間累積計算部
15 描画カウンタ
16 表示エンジン
17 表示カウンタ
20 描画命令保持部
21 描画命令リスト
30 表示デバイス
40 リングバッファ
41 記憶領域

Claims (7)

  1. 時系列で順次に現れる複数の表示フレームを順次に描画するグラフィックス描画装置であって、
    1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファと、
    描画が終了したフレーム数に応じて変化する値を計数するための描画フレームカウンタと、
    描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する値を計数するための表示フレームカウンタと、
    描画所要時間を予測する描画所要時間予測部と、
    前記表示フレームカウンタの値と、フレームの表示周期と、前記描画所要時間予測部の予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進む描画省略制御部と
    を設けたことを特徴とするグラフィックス描画装置。
  2. 請求項1に記載のグラフィックス描画装置において、
    前記描画フレームカウンタの値と表示フレームカウンタの値とに基づいて前記フレームバッファ上に空き領域が存在するか否かを識別し、空き領域が存在する場合には、次フレームについての表示要素の描画を許可する描画制御部と、
    前記描画所要時間予測部は、前記描画制御部が描画を許可した場合に、描画所要時間を予測することを特徴とするグラフィックス描画装置。
  3. 請求項1に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令を実行した時に検出された所要時間の累積値として、1フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。
  4. 請求項1に記載のグラフィックス描画装置において、前記描画所要時間予測部は、該当するフレームの描画内容を表す描画命令のリストに基づいて、前記リストに含まれているそれぞれの描画命令に事前に割り当てられた実行所要時間を表す定数の累積値として、1フレームの描画に関する所要時間を推定することを特徴とするグラフィックス描画装置。
  5. 請求項1に記載のグラフィックス描画装置において、
    それぞれのフレームの描画内容を表す描画命令のリストを保持すると共に、前記リストの中に2種類以上の優先度に関する区分を表す優先度情報を描画命令毎に保持する描画命令リスト保持部を更に設け、
    前記描画制御部は、前記描画命令リスト保持部に保持されているリストに含まれているそれぞれの描画命令について、それに対応付けられた優先度と描画を実行する描画エンジンの処理能力とに基づいて描画の可否を識別し、所定の条件を満たす描画命令については実行を省略することを特徴とするグラフィックス描画装置。
  6. 時系列で順次に現れる複数の表示フレームを順次に描画するためのグラフィックス描画方法であって、
    1つの表示フレームに表示される表示内容のデータを格納する領域を複数フレーム分備えたフレームバッファを利用すると共に、
    描画が終了したフレーム数に応じて変化する第1の値を計数し、
    描画が終了した各フレームの中で画面への表示が完了したフレーム数に応じて変化する第2の値を計数し、
    前記第2の値と、フレームの表示周期と、予測した描画所要時間とに基づいて表示前に描画が完了するか否かを識別し、表示前に描画が完了しない場合は続く描画命令の実行を省略して次フレームの描画処理に進むことを特徴とするグラフィックス描画方法。
  7. 請求項1に記載のグラフィックス描画装置を搭載したグラフィックス表示装置。
JP2009501093A 2007-02-28 2007-02-28 グラフィックス描画装置及びグラフィックス描画方法 Pending JPWO2008105092A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/053817 WO2008105092A1 (ja) 2007-02-28 2007-02-28 グラフィックス描画装置及びグラフィックス描画方法

Publications (1)

Publication Number Publication Date
JPWO2008105092A1 true JPWO2008105092A1 (ja) 2010-06-03

Family

ID=39720936

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009501093A Pending JPWO2008105092A1 (ja) 2007-02-28 2007-02-28 グラフィックス描画装置及びグラフィックス描画方法

Country Status (5)

Country Link
US (1) US20100020088A1 (ja)
EP (1) EP2128824A1 (ja)
JP (1) JPWO2008105092A1 (ja)
CN (1) CN101622646B (ja)
WO (1) WO2008105092A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8754904B2 (en) * 2011-04-03 2014-06-17 Lucidlogix Software Solutions, Ltd. Virtualization method of vertical-synchronization in graphics systems
US8823719B2 (en) * 2010-05-13 2014-09-02 Mediatek Inc. Graphics processing method applied to a plurality of buffers and graphics processing apparatus thereof
WO2012006740A1 (en) * 2010-07-14 2012-01-19 Research In Motion Limited Methods and apparatus to perform animation smoothing
US20150187044A1 (en) * 2012-09-27 2015-07-02 Mitsubishi Electric Corporation Graphics rendering device
US9269121B2 (en) * 2012-12-18 2016-02-23 Intel Corporation Techniques for managing system power using deferred graphics rendering
US9201487B2 (en) * 2013-03-05 2015-12-01 Intel Corporation Reducing power consumption during graphics rendering
CN103164839B (zh) * 2013-03-07 2019-06-21 华为技术有限公司 一种绘图方法、装置及终端
JP5635672B1 (ja) * 2013-12-05 2014-12-03 株式会社 ディー・エヌ・エー 画像処理装置及び画像処理プログラム
US9728166B2 (en) 2015-08-20 2017-08-08 Qualcomm Incorporated Refresh rate matching with predictive time-shift compensation
JP6703800B2 (ja) * 2016-04-01 2020-06-03 シャープ株式会社 表示装置、表示装置の制御方法、および制御プログラム
WO2017203659A1 (ja) * 2016-05-26 2017-11-30 三菱電機株式会社 描画タイミング制御装置
US11049211B2 (en) 2017-07-06 2021-06-29 Channel One Holdings Inc. Methods and system for asynchronously buffering rendering by a graphics processing unit
CA3044477A1 (en) * 2018-06-01 2019-12-01 Gregory Szober Display buffering methods and systems
US11164496B2 (en) 2019-01-04 2021-11-02 Channel One Holdings Inc. Interrupt-free multiple buffering methods and systems
CN111476872B (zh) * 2019-01-23 2022-10-11 华为技术有限公司 一种图像绘制方法及图像绘制装置
CN112598568A (zh) * 2020-12-28 2021-04-02 航天科技控股集团股份有限公司 全液晶仪表动态渲染方法
CN113538648A (zh) * 2021-07-27 2021-10-22 歌尔光学科技有限公司 图像渲染方法、装置、设备及计算机可读存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282270A (ja) * 1994-04-08 1995-10-27 Sony Corp 画像生成方法および装置
JP3168244B2 (ja) * 1996-02-13 2001-05-21 株式会社セガ 画像生成装置およびその方法
AU2680699A (en) 1998-02-17 1999-08-30 Sun Microsystems, Inc. Estimating graphics system performance for polygons
JP2000023148A (ja) * 1998-07-02 2000-01-21 Seiko Epson Corp ネットワーク・プロジェクタ・システムにおける画像データの再生方法及びネットワーク・プロジェクタ・システム
US6181300B1 (en) * 1998-09-09 2001-01-30 Ati Technologies Display format conversion circuit with resynchronization of multiple display screens
JP2000148131A (ja) * 1998-11-13 2000-05-26 Seiko Epson Corp 画像表示方法および画像処理装置
JP3638224B2 (ja) 1999-02-23 2005-04-13 富士通株式会社 3次元ポリゴン表示装置
US6457034B1 (en) * 1999-11-02 2002-09-24 Ati International Srl Method and apparatus for accumulation buffering in the video graphics system
GB2363017B8 (en) * 2000-03-30 2005-03-07 Autodesk Canada Inc Processing image data
EP1182875A3 (en) * 2000-07-06 2003-11-26 Matsushita Electric Industrial Co., Ltd. Streaming method and corresponding system
JP3636672B2 (ja) * 2001-04-06 2005-04-06 松下電器産業株式会社 表示処理装置
JP2003051964A (ja) * 2001-08-08 2003-02-21 Matsushita Electric Ind Co Ltd 画像処理装置
JP2003076583A (ja) * 2001-09-04 2003-03-14 Fujitsu Ltd レンダリング計算処理状況監視プログラムおよび記憶媒体、装置、方法
US7256788B1 (en) * 2002-06-11 2007-08-14 Nvidia Corporation Graphics power savings system and method
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
GB2406184B (en) * 2003-09-17 2006-03-15 Advanced Risc Mach Ltd Data processing system
US8416197B2 (en) * 2007-06-15 2013-04-09 Ricoh Co., Ltd Pen tracking and low latency display updates on electronic paper displays
US8933943B2 (en) * 2008-04-30 2015-01-13 Intel Corporation Technique for performing load balancing for parallel rendering
KR101480354B1 (ko) * 2008-05-21 2015-01-12 삼성디스플레이 주식회사 액정 표시 장치 및 그 구동 방법

Also Published As

Publication number Publication date
CN101622646A (zh) 2010-01-06
CN101622646B (zh) 2012-01-04
US20100020088A1 (en) 2010-01-28
WO2008105092A1 (ja) 2008-09-04
EP2128824A1 (en) 2009-12-02

Similar Documents

Publication Publication Date Title
JPWO2008105092A1 (ja) グラフィックス描画装置及びグラフィックス描画方法
US10078882B2 (en) Priority-based command execution
JP4383853B2 (ja) 時間アロケータを有するグラフィックレンダリングエンジンを用いる装置、方法及びシステム
US11164357B2 (en) In-flight adaptive foveated rendering
CN113791667B (zh) 通过使用欺骗时钟及细粒度频率控制实现的向后兼容性
EP2790177A1 (en) Image processing apparatus and image processing method
JP2011095566A (ja) 画像プロセッサの制御方法およびプログラム
US9875517B2 (en) Data processing method, data processing apparatus, and storage medium
CN110494837B (zh) 使用高优先级队列进行墨水渲染
US20140198118A1 (en) Image browsing method, system and computer storage medium
US8847981B2 (en) Method and apparatus for accumulative vector drawing using buffering
US11810524B2 (en) Virtual reality display device and control method thereof
CN106407009A (zh) 一种图片显示方法和装置
US20200250790A1 (en) Graphics processing method and related apparatus, and device
US20060082580A1 (en) Method and apparatus for triggering frame updates
CN106027925B (zh) 一种osd菜单的显示控制方法及装置
CN111782326A (zh) 控制页面刷新的方法、装置、计算机设备和存储介质
US20130152108A1 (en) Method and apparatus for video processing
CN114153416B (zh) 一种显示控制的方法及相关装置
CN109410306B (zh) 图像渲染方法、装置、存储介质、设备和虚拟现实系统
JP5963506B2 (ja) 画像表示装置及び画像表示方法
WO2016200740A1 (en) Latency reduction for detached content
CN117835000A (zh) 渲染优化方法、智能电视、装置、设备和存储介质
CN108369794B (zh) 数据处理装置、数据处理方法和计算机能读取的记录介质
US20120327096A1 (en) Image generating device

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120306