JP2015225421A - 画像描画装置、画像描画方法および画像描画システム - Google Patents

画像描画装置、画像描画方法および画像描画システム Download PDF

Info

Publication number
JP2015225421A
JP2015225421A JP2014108677A JP2014108677A JP2015225421A JP 2015225421 A JP2015225421 A JP 2015225421A JP 2014108677 A JP2014108677 A JP 2014108677A JP 2014108677 A JP2014108677 A JP 2014108677A JP 2015225421 A JP2015225421 A JP 2015225421A
Authority
JP
Japan
Prior art keywords
unit
vertices
scan line
triangle
graphic
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
JP2014108677A
Other languages
English (en)
Inventor
幸治 西河
Koji Nishikawa
幸治 西河
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.)
Socionext Inc
Original Assignee
Socionext Inc
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 Socionext Inc filed Critical Socionext Inc
Priority to JP2014108677A priority Critical patent/JP2015225421A/ja
Publication of JP2015225421A publication Critical patent/JP2015225421A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

【課題】 従来と比べて画像の描画処理の高速化を図ることを目的とする。
【解決手段】 描画指示に基づいて描画される第1図形のそれぞれから、出力装置に第1図形を含む画像を出力する単位である単位領域ごとに、単位領域に含まれる部分の図形を切り取る切取部と、単位領域ごとに、切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成する生成部と、単位領域ごとに生成されたコマンドに基づいて第2図形のそれぞれを描画する描画部と、を有する。
【選択図】 図1

Description

本発明は、画像を画面に描画する画像描画装置、画像描画方法および画像描画システムに関する。
例えば、コンピュータ装置あるいはゲーム機器等を用いて、3次元空間の立体物を2次元の図形の組合せに変換し、変換した2次元の図形の組合せに基づき奥行きのある画像を描画するコンピュータグラフィックスの技術が提案されている(特許文献1,2参照)。
特開2009−295166号公報 特開2011−128713号公報
例えば、コンピュータグラフィックスの描画方式には、ディスプレイ等の表示領域やプリンタ等の印刷領域を水平走査方向の複数の帯状の単位領域に分割し、単位領域ごとに2次元の各図形を描画するラスタスキャンベースレンダリングがある。また、コンピュータグラフィックスの描画方式には、表示領域や印刷領域を水平および垂直走査方向でタイル状の単位領域に分割し、単位領域ごとに図形を描画するタイルベースレンダリングがある。コンピュータ装置等は、各単位領域に含まれる図形をディスプレイ等に出力する前に、単位領域に頂点が含まれる図形を、図形の頂点を接続する辺を用いて表現するベクタ表現から、図形を画素の集合体で表現するラスタ表現に変換するラスタライズ処理を施す。ラスタライズ処理において、コンピュータ装置等は、単位領域に頂点が含まれる図形の全体を表す画素の集合体を生成し、得られた画素の集合体から単位領域に含まれる図形の一部を表す画素データを取得する。このため、コンピュータ装置等は、複数の単位領域にまたがる図形を出力するために、図形の一部を含む単位領域の数と同じ回数のラスタライズ処理を行うことから、ディスプレイ等に画像が表示されるまでに時間がかかってしまう。
本件開示の画像描画装置、画像描画方法および画像描画システムは、従来と比べて画像の描画処理の高速化を図ることを目的とする。
一の態様では、画像描画装置は、描画指示に基づいて描画される第1図形のそれぞれから、出力装置に第1図形を含む画像を出力する単位である単位領域ごとに、単位領域に含まれる部分の図形を切り取る切取部と、単位領域ごとに、切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成する生成部と、単位領域ごとに生成されたコマンドに基づいて第2図形のそれぞれを描画する描画部と、を有する。
別の態様では、画像描画方法は、描画指示に基づいて描画される第1図形のそれぞれから、出力装置に第1図形を含む画像を出力する単位である単位領域ごとに、単位領域に含まれる部分の図形を切取部により切り取り、単位領域ごとに、切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成部により生成し、単位領域ごとに生成されたコマンドに基づいて第2図形のそれぞれを描画部により描画する。
別の態様では、画像描画システムは、描画指示に基づいて描画される第1図形のそれぞれから、出力装置に第1図形を含む画像を出力する単位である単位領域ごとに、単位領域に含まれる部分の図形を切り取る切取部と、単位領域ごとに、切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成する生成部と、単位領域ごとに生成されたコマンドに基づいて第2図形のそれぞれを描画する描画部と、を含む画像描画装置と、画像描画装置に描画指示を出力する制御装置と、第1図形の頂点を示す情報と、単位領域の境界を示す情報とを格納する記憶装置と、を有する。
本件開示の画像描画装置、画像描画方法および画像描画システムは、従来と比べて画像の描画処理の高速化を図ることができる。
画像描画装置および描画システムの一実施形態を示す図である。 図1に示した切取部による図形の切り取り処理の例を示す図である。 図1に示した切取部により各スキャンラインで切り取られた各図形の頂点を示す情報の例を示す図である。 図1に示した生成部による分割処理の例を示す図である。 図1に示した生成部により生成された描画のコマンド群の例を示す図である。 図2に示した三角形のラスタ表現の例を示す図である。 図1に示した画像描画装置における画像描画処理の例を示す図である。 画像描画装置および画像描画システムの別実施形態を示す図である。 図8に示した切取部による切り取り処理の例を示す図である。 図8に示した切取部により各タイルで切り取られた図形の頂点を示す情報の例を示す図である。 図8に示した生成部による分割処理の例を示す図である。 図8に示した生成部により生成された描画のコマンド群の例を示す図である。 図8に示した画像描画装置における画像描画処理の例を示す図である。 画像描画装置および画像描画システムの別実施形態を示す図である。 図14に示した前処理部により前処理された図形の例を示す図である。 スキャンラインとプリミティブとの位置関係の例を示す図である。 図14に示した解析部による判定処理の例を示す図である。 図14に示したクリッピング部により各スキャンラインでクリッピングされた各プリミティブの頂点を示す情報の例を示す図である。 図14に示したクリッピング部による各プリミティブのクリッピング処理の例を示す図である。 図14に示した生成部による分割処理の例を示す図である。 図14に示した生成部により生成された描画のコマンド群の例を示す図である。 図14に示した画像描画装置における画像描画処理の例を示す図である。 図22に示したステップS200の処理の例を示す図である。 図22に示したステップS300の処理の例を示す図である。 図22に示したステップS400の処理の例を示す図である。 図14に示した画像描画装置および画像描画システムのハードウェア構成の例を示す図である。
以下、図面を用いて実施形態を説明する。
図1は、画像描画装置および画像描画システムの一実施形態を示す。
図1に示す描画システム150は、画像描画装置100、制御装置40および記憶装置90を含む。また、画像描画装置100は、切取部10、生成部20および描画部30を含む。画像描画装置100は、有線または無線を介して制御装置40、フレームバッファ50および記憶装置90に接続される。そして、フレームバッファ50は、有線または無線を介して出力装置60に接続される。
例えば、制御装置40は、プログラムを実行するプロセッサ等を含み、プロセッサがプログラムを実行することで、出力装置60に表示させる画像に含まれる各図形を生成するための描画指示を生成し、生成した描画指示を画像描画装置100に出力する。なお、描画指示は、3次元空間における立体物の頂点を示す情報、および、立体物の頂点を互いに接続する直線あるいは三角形等の基本図形(“プリミティブ”と称す)の集合体として立体物を描画するコマンドのリストであるディスプレイリストを含む。そして、立体物の頂点を互いに接続する直線あるいは三角形等の基本図形は、描画指示に基づいて描画される第1図形の一例である。
例えば、記憶装置90は、レジスタ等であり、制御装置40より描画指示された画像に含まれる各図形の頂点を示す情報およびディスプレイリスト等を格納する。なお、記憶装置90は、画像描画装置100に接続されたが、画像描画装置100の内部に含まれてもよい。
例えば、フレームバッファ50は、RAM(Random Access Memory)等である。フレームバッファ50は、画像描画装置100においてレンダリング処理が行われる単位である単位領域ごとに、画像描画装置100からレンダリング処理で得られた画像データを受け、受けた画像データを一時的に保持する。例えば、画像描画装置100におけるレンダリング処理の単位がスキャンラインである場合に、フレームバッファ50は、スキャンラインごとに画像データを受ける。一方、画像描画装置100におけるレンダリング処理の単位がタイルである場合に、フレームバッファ50は、タイルごとに画像データを受ける。そして、フレームバッファ50は、画像描画装置100から受けた画像データを出力装置60に順次に出力する。
出力装置60は、液晶等のディスプレイあるいはプリンタ等であり、フレームバッファ50から受けた画素データに基づいて、スキャンラインまたはタイルごとに画像を出力する。
例えば、切取部10は、制御装置40から受けた画像の描画指示に含まれる個々のコマンドで示されるプリミティブから、単位領域ごとに、当該単位領域に含まれる部分の図形を切り取る。切取部10は、プリミティブのそれぞれから単位領域ごとに切り取った図形を示す情報を、生成部20に出力する。切取部10の動作については、図2で説明する。
例えば、生成部20は、単位領域ごとに切り取られた図形のそれぞれを更に分割することで新たなプリミティブを生成し、生成した新たなプリミティブのそれぞれを描画するコマンドを単位領域ごとに生成する。生成部20は、単位領域ごとに生成した描画コマンドを順次に描画部30に出力する。生成部20の動作については、図4および図5で説明する。また、生成した新たなプリミティブは、切取部10により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形の一例である。
例えば、描画部30は、単位領域ごとに生成された描画コマンドに基づいて、新たなプリミティブのそれぞれを描画することで、制御装置40から受けた描画指示に含まれるコマンドで示される元のプリミティブを描画した場合と同等の画像を生成する。描画部30の動作については、図6で説明する。
図2は、図1に示した切取部10による図形の切り取り処理の例を示す。図2において、領域70は、出力装置60における画像の表示領域または印刷領域を示し、座標軸X及び座標軸Yは、それぞれ水平走査方向及び垂直走査方向を示す。また、図2に示した領域70を破線で区切ることで分割された各領域SC1−SC6は、画像描画装置100におけるレンダリング処理の単位の一例であるスキャンラインを示す。図2の例は、領域70を水平走査方向(X軸方向)に6つに分割した場合を示す。例えば、記憶装置90は、画像描画装置100がラスタスキャンベースレンダリングで画像を描画する場合、スキャンラインSC1−SC6の境界を示すY座標Y1−Y6を予め格納する。なお、領域70は、水平走査方向(X軸方向)にX1の大きさを有し、垂直走査方向(Y軸方向)にY6の大きさを有する。また、スキャンラインSC1−SC6の各々は、垂直走査方向に互いに同じ幅を有し、Y1−0=Y2−Y1=Y3−Y2=Y4−Y3=Y5−Y4=Y6−Y5である。また、スキャンラインの数は6としたが、領域70の大きさに応じて適宜決定されるのが望ましい。
図2(a)は、例えば、制御装置40より受けた描画指示により描画される画像に含まれるプリミティブが、1つの三角形ABCの場合を示す。三角形ABCの頂点A,B,Cは、スキャンラインSC5,SC3,SC1にそれぞれ含まれる。
図2(b)は、図1に示した切取部10により、スキャンラインSC1−SC6ごとに、スキャンラインSC1−SC6のそれぞれに含まれる三角形ABCの一部を切り取った例を示す。すなわち、切取部10は、スキャンラインSC1において三角形ABCから三角形CDEを切り取り、スキャンラインSC2において三角形ABCから四角形DEGFを切り取り、スキャンラインSC3において三角形ABCから五角形BIHFGを切り取る。また、切取部10は、スキャンラインSC4において三角形ABCから四角形HIKJを切り取り、スキャンラインSC5において三角形ABCから三角形AJKを切り取る。なお、切取部10は、切り取り処理により新たに生じた頂点Dから頂点Kの各位置の座標を、各スキャンラインの水平走査方向の境界と三角形ABCの各辺AB,AC,BCとの交点から求める。そして、切取部10は、各スキャンラインで切り取った図形の各頂点を示す情報を、生成部20に出力する。
図3は、図1に示した切取部10により各スキャンラインで切り取られた図形の頂点を示す情報の例を示す。頂点テーブル110は、例えば、記憶装置90に格納され、スキャンラインSC1−SC6ごとに、切り取り前の頂点と頂点数、領域、消失の頂点、新規の頂点および切り取り後の頂点と頂点数の格納領域を有する。
切り取り前の頂点と頂点数の格納領域には、切り取り処理前の描画する画像に含まれるプリミティブが有する頂点と頂点数が切取部10により格納される。例えば、図2(a)に示した三角形ABCに対する切り取り処理を行う場合、切取部10は、三角形ABCの一部を含むスキャンラインSC1−SC5の各々の切り取り前の頂点と頂点数の格納領域に、頂点A,B,Cと頂点数を示す値3とを格納する。なお、スキャンラインSC6には、三角形ABCが含まれていないため、スキャンラインSC6の切り取り前の頂点と頂点数の格納領域は、頂点数0の値が格納される。
領域の格納領域には、スキャンラインSC1−SC6の各々のY座標の範囲を示す情報が格納される。例えば、スキャンラインSC1の領域の格納領域には、Y座標が0からY1までの範囲を示す情報が格納され、スキャンラインSC2の領域の格納領域には、Y座標がY1からY2までの範囲を示す情報が格納される。また、スキャンラインSC3の領域の格納領域には、Y座標がY2からY3までの範囲を示す情報が格納され、スキャンラインSC4の領域の格納領域には、Y座標がY3からY4までの範囲を示す情報が格納される。スキャンラインSC5の領域の格納領域には、Y座標がY4からY5までの範囲を示す情報が格納され、スキャンラインSC6の領域の格納領域には、Y座標がY5からY6までの範囲を示す情報が格納される。
消失の頂点の格納領域には、切り取り前の頂点と頂点数の格納領域に格納された頂点のうち、切り取り処理によりスキャンラインに含まれなくなった頂点を示す情報が格納される。例えば、図2(b)に示した三角形ABCのうち、スキャンラインSC1に含まれる部分は、頂点Cを含み、頂点A,Bを含まないため、スキャンラインSC1の消失の頂点の格納領域には、頂点A,Bが格納される。また、スキャンラインSC2,SC4のそれぞれにおいて三角形ABCから切り取られる図形は、頂点A,B,Cのいずれも含まないため、スキャンラインSC2,4の消失の頂点の格納領域には、頂点A,B,Cが格納される。スキャンラインSC3において三角形ABCから切り取られる図形は、頂点Bを含み、頂点A,Cを含まないことから、スキャンラインSC3の消失の頂点の格納領域には、頂点A,Cが格納される。また、スキャンラインSC5において三角形ABCから切り取られる図形は、頂点Aを含み、頂点B,Cを含まないことから、スキャンラインSC5の消失の頂点の格納領域には、頂点B,Cが格納される。なお、スキャンラインSC6の消失の頂点の格納領域は、空欄を示す“−”が格納される。
新規の頂点の格納領域には、切取部10による切り取り処理により、各スキャンラインで新たに生じた頂点が格納される。例えば、図2(b)に示した三角形ABCから、スキャンラインSC1において、三角形CDEが切り取られた場合、スキャンラインSC1の新規の頂点の格納領域には、頂点D,Eが格納される。また、スキャンラインSC2において、三角形ABCから四角形DEGFが切り取られた場合、スキャンラインSC2の新規の頂点の格納領域には、頂点D,E,F,Gが格納される。また、スキャンラインSC3において、三角形ABCから五角形BIHFGが切り取られた場合、スキャンラインSC3の新規の頂点の格納領域には、頂点F,G,H,Iが格納される。また、スキャンラインSC4において、三角形ABCから四角形HIJKが切り取られた場合、スキャンラインSC4の新規の頂点の格納領域には、頂点H,I,J,Kが格納される。スキャンラインSC5において、三角形ABCから三角形AJKが切り取られた場合、スキャンラインSC5の新規の頂点の格納領域には、頂点J,Kが格納される。なお、スキャンラインSC6の新規の頂点の格納領域は、空欄を示す“−”が格納される。
切り取り後の頂点と頂点数の格納領域には、各スキャンラインにおける切り取り処理により切り取られた図形に含まれる頂点と頂点数とが切取部10により格納される。例えば、図2(b)に示した三角形ABCに対する切り取り処理が行われた場合、切取部10は、スキャンラインSC1の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形CDEの頂点C,D,Eと頂点数を示す値3とを格納する。また、切取部10は、スキャンラインSC2の切り取り後の頂点と頂点数の格納領域に、図2(b)に示した三角形ABCから切り取られた四角形DEGFの頂点D,E,F,Gと頂点数を示す値4とを格納する。同様に、切取部10は、スキャンラインSC3の切り取り後の頂点と頂点数の格納領域に、図2(b)に示した三角形ABCから切り取られた五角形BIHFGの頂点B,F,G,H,Iと頂点数を示す値5とを格納する。また、切取部10は、スキャンラインSC4の切り取り後の頂点と頂点数の格納領域に、図2(b)に示した三角形ABCから切り取られた四角形HIKJの頂点H,I,J,Kと頂点数を示す値4とを格納する。また、切取部10は、スキャンラインSC5の切り取り後の頂点と頂点数の格納領域に、図2(b)に示した三角形ABCから切り取られた三角形AJKの頂点A,J,Kと頂点数を示す値3とを格納する。スキャンラインSC6の切り取り後の頂点と頂点数の格納領域には、頂点数が0の値が格納される。
例えば、生成部20は、図3に示した頂点テーブル110に基づいて、各スキャンラインSC1−SC6で切り取られた図形を分割することで少なくとも1つの新規のプリミティブを生成する。生成部20は、例えば、頂点テーブル110に各スキャンラインSC1−SC6に対応して格納された切取後の頂点の数に基づいて、各スキャンラインSC1−SC6で切り取られた図形がさらに分割可能か否かを判定する。生成部20は、各スキャンラインSC1−SC6で切り取られた図形がさらに分割することが困難な図形、すなわち三角形または線分である場合に、切り取られた図形そのものを新規のプリミティブとする。一方、生成部20は、各スキャンラインSC1−SC6で切り取られた図形がさらに分割可能な図形、すなわち4以上の頂点を持つ多角形である場合に、切り取られた図形をさらに分割することで複数の新規のプリミティブを生成する。
図4は、図1に示した生成部20による分割処理の例を示す。例えば、生成部20は、頂点テーブル110におけるスキャンラインSC1の切り取り後の頂点と頂点数の格納領域から、頂点C,D,Eと頂点数3とを読み出す。生成部20は、読み出した頂点の位置と頂点数とから、スキャンラインSC1の図形がさらに分割することが困難な三角形であると判定し、三角形CDEをスキャンラインSC1の新規のプリミティブとして保持する。また、生成部20は、頂点テーブル110におけるスキャンラインSC2の切り取り後の頂点と頂点数の格納領域から、頂点D,E,F,Gと頂点数4とを読み出す。生成部20は、読み出した頂点の位置と頂点数とから、スキャンラインSC2の図形が四角形DEGFであり、さらに分割することが可能であると判定する。そして、生成部20は、四角形DEGFを、例えば、頂点Dを基点にして三角形DEGと三角形DGFとに分割し、分割した2つの三角形DEGと三角形DGFとをスキャンラインSC2の新規のプリミティブとして保持する。
また、生成部20は、頂点テーブル110におけるスキャンラインSC3の切り取り後の頂点と頂点数の格納領域から、頂点B,F,G,H,Iと頂点数5とを読み出す。生成部20は、読み出した頂点の位置と頂点数とから、スキャンラインSC3の図形が五角形BIHFGであり、さらに分割することが可能であると判定する。そして、生成部20は、五角形BIHFGを、例えば、頂点Fを基点にして三角形FGB、三角形FBI、三角形FIHに分割し、分割した3つの三角形FGB、三角形FBI、三角形FIHをスキャンラインSC3の新規のプリミティブとして保持する。このように、生成部20は、五角形BIHFGを頂点Fを共有する3つの三角形に分割することで、互いに重なり合うことなく、他の方法に比べて容易に、切り取られた図形を複数のプリミティブに分割できる。
また、生成部20は、頂点テーブル110におけるスキャンラインSC4の切り取り後の頂点と頂点数の格納領域から、頂点H,I,J,Kと頂点数4とを読み出す。生成部20は、読み出した頂点の位置と頂点数とから、スキャンラインSC4の図形が四角形HIKJであり、さらに分割することが可能であると判定する。そして、生成部20は、四角形HIKJを、例えば、頂点Hを基点にして三角形HIKと三角形HKJとの2つのプリミティブに分割し、分割した2つの三角形HIKと三角形HKJとをスキャンラインSC4の新規のプリミティブとして保持する。また、生成部20は、頂点テーブル110におけるスキャンラインSC5の切り取り後の頂点と頂点数の格納領域から、頂点A,J,Kと頂点数3とを読み出す。生成部20は、読み出した頂点の位置と頂点数とから、スキャンラインSC5の図形がさらに分割することが困難な三角形と判定する。そして、生成部20は、三角形AJKをスキャンラインSC5の新規のプリミティブとして保持する。
例えば、生成部20は、図3に示した頂点テーブル110において、スキャンラインごとに保持された各プリミティブを示す情報に基づいて、図4に示した新規のプリミティブの各々を描画するコマンドをスキャンラインごとに生成する。
図5は、図1に示した生成部20により生成された描画のコマンド群80の例を示す。例えば、コマンド群80は、スキャンラインSC1−SC6の各々において切り取られた図形に含まれる新規のプリミティブを描画するコマンドを含む。生成部20は、例えば、スキャンラインSC1におけるコマンドとして、コマンド群80の1番目から4番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形CDEの描画コマンド、および描画終了を示すフラグの情報を格納する。なお、設定系コマンドは、三角形ABCに含まれるプリミティブを描画する前処理として、出力装置60の画面サイズ等の初期設定を行う。また、三角形CDEの描画コマンドは、頂点C,D,Eの座標および各頂点間を線分で結ぶベクタ形式のデータ等を含む新たに作成されたものである。
また、生成部20は、スキャンラインSC2のコマンドとして、コマンド群80の5番目から9番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形DEGと三角形DGFとの描画コマンド、および描画終了を示すフラグの情報を格納する。生成部20は、スキャンラインSC3のコマンドとして、コマンド群80の10番目から15番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形FGB,三角形FBI,三角形FIHの描画コマンド、描画終了を示すフラグの情報を格納する。また、生成部20は、スキャンラインSC4のコマンドとして、コマンド群80の16番目から20番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形HIK,三角形HKJの描画コマンド、および描画終了を示すフラグの情報を格納する。また、生成部20は、スキャンラインSC5のコマンドとして、コマンド群80の21番目から24番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形AJKの描画コマンド、および描画終了を示すフラグの情報を格納する。例えば、生成部20は、生成したコマンド群80を記憶装置90に格納する。
なお、コマンド群80の6番目、11番目、17番目および22番目の格納領域に格納されるスキャンラインSC2−SC5の設定系コマンドは、2番目の格納領域に格納されたスキャンラインSC1の設定系コマンドと同様である。よって、例えば、スキャンラインSC2−SC5の設定系コマンドは省略されてもよい。また、各スキャンラインの描画終了を示すフラグは、各スキャンラインの描画開始を示すフラグで代用されてもよく、各スキャンラインの描画終了を示すフラグは省略されてもよい。
例えば、描画部30は、受けたコマンド群80に格納される各プリミティブの描画コマンドに基づいて、スキャンラインSC1−SC5ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブを画素の集合体として表す画素データを生成する。描画部30は、生成した各プリミティブの画素データをフレームバッファ50に順次に出力する。なお、各プリミティブを画素の集合体として表す画素データは、各プリミティブの“ラスタ表現”と称される。
図6は、図2に示した三角形ABCのラスタ表現の例を示す。例えば、描画部30は、スキャンラインSC1において、新規のプリミティブである三角形CDEの描画コマンドを実行し、ラスタライズ処理により三角形CDEのラスタ表現を生成する。また、描画部30は、スキャンラインSC2において、新規のプリミティブである三角形DEGと三角形DGFの描画コマンドを実行し、各三角形に対するラスタライズ処理により四角形DEGFのラスタ表現を生成する。また、描画部30は、スキャンラインSC3において、新規のプリミティブである三角形FGB,三角形FBI,三角形FIHの描画コマンドを実行し、各三角形に対するラスタライズ処理により五角形BIHFGのラスタ表現を生成する。また、描画部30は、スキャンラインSC4において、新規のプリミティブである三角形HIKと三角形HKJとの描画コマンドを実行し、各三角形に対するラスタライズ処理により四角形HIKJのラスタ表現を生成する。また、描画部30は、スキャンラインSC5において、新規のプリミティブである三角形AJKの描画コマンドを実行し、ラスタライズ処理により三角形AJKのラスタ表現を生成する。これにより、描画部30は、生成した各プリミティブのラスタ表現を合わせることで、三角形ABCのラスタ表現を生成することができる。
なお、描画部30は、各プリミティブに対するラスタライズ処理において、元の三角形ABCの各辺AB,AC,BCが通る画素を外して、各プリミティブのラスタ表現を生成する。したがって、図6に示すラスタ表現では、スキャンラインSC1の三角形CDEに含まれる画素の上を、辺ACおよび辺BCのいずれかが通るため、三角形CDEのラスタ表現に含まれる画素がない。
図7は、図1に示した画像描画装置100における画像描画処理の例を示す。図7に示したステップS10、ステップS11、ステップS12の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。すなわち、図7は、画像描画方法の一実施形態を示す。なお、図7に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。この場合、図1に示した切取部10、生成部20および描画部30は、画像描画装置100内に配置される回路により実現される。
ステップS10において、切取部10は、図2において説明したように、制御装置40から受けた画像の描画指示に基づいて、描画指示で示されるプリミティブのそれぞれから、各スキャンラインに含まれる部分の図形を切り取る。例えば、切取部10は、各スキャンラインで切り取った図形の各頂点を示す情報を、図3に示した頂点テーブル110に格納する。そして、切取部10は、頂点テーブル110を生成部20に出力する。
次に、ステップS11において、生成部20は、図4および図5において説明したように、頂点テーブル110に基づいて、スキャンラインごとに切り取って得られた図形を、さらに分割することで少なくとも1つの新規のプリミティブを生成する。生成部20は、スキャンラインごとに生成した新規のプリミティブのそれぞれを描画するコマンドを含むコマンド群80を生成する。そして、生成部20は、生成したコマンド群80を描画部30に出力する。
次に、ステップS12において、描画部30は、図6において説明したように、生成部20より受けたコマンド群80に基づいて、新規のプリミティブのそれぞれのラスタ表現である画素の集合体を生成することで画像を描画する。例えば、描画部30は、受けたコマンド群80に格納される各プリミティブの描画コマンドに基づいて、スキャンラインSC1−SC5ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブのラスタ表現を生成する。そして、描画部30は、生成した各プリミティブのラスタ表現をフレームバッファ50に順次に出力する。
そして、画像描画装置100は、画像描画処理を終了する。なお、図7の処理のフローは、制御装置40から画像の描画指示を受ける度に実行される。
以上、この実施形態では、切取部10は、受けた画像の描画指示に基づいて、描画する画像が含むプリミティブから各スキャンラインに含まれる部分の図形を切り取る。生成部20は、スキャンラインごとに切り取った図形を新規のプリミティブで分割し、スキャンラインごとに分割した新規のプリミティブを描画するコマンドを含むコマンド群80を生成する。描画部30は、コマンド群80に含まれた描画コマンドに基づいて、各スキャンラインにおいて生成された新規のプリミティブの各々に対してラスタライズ処理を行い、各プリミティブのラスタ表現を生成する。図6で説明したように、図1に示した描画部30は、スキャンラインごとの分割で得られた新規のプリミティブの各々に対してラスタライズ処理する過程で、他のスキャンラインに含まれる新規のプリミティブをラスタライズすることはない。つまり、描画部30が、各スキャンラインに含まれる新規のプリミティブのそれぞれをラスタライズする処理は、分割前の元の図形全体に対し1回のラスタライズ処理を施すことと同等である。すなわち、画像描画装置100は、図形全体に対するラスタライズ処理をスキャンライン数と同じ回数に亘って繰り返すことなく、元の描画指示で示された図形全体のラスタ表現を生成できる。これにより、画像描画装置100は、図形全体に対するラスタライズ処理をスキャンライン数と同じ回数の繰り返す場合に比べて、ラスタライズ処理の負荷を低減し、画像の描画処理の高速化を図ることができる。
なお、画像描画装置100は、描画方式として、ラスタスキャンベースレンダリングを用いたが、タイルベースレンダリングの描画方式を用いてもよい。タイルレンダリングに基づく画像描画装置100の動作については、図8から図13で説明する。
なお、生成部20は、図5に示したコマンド群80に格納される各プリミティブの描画コマンドを、スキャンラインSC1−SC6の順に格納したが、任意の順番でスキャンラインごとにプリミティブの描画コマンドを格納してもよい。
図8は、画像描画装置および画像描画システムの別実施形態を示す。図8に示す画像描画装置100および画像描画システム150の各要素のうち、図1に示した画像描画装置100および画像描画システム150の要素と同一または同様の機能を有するものについては、同一の符号を付し詳細な説明は省略する。
画像描画装置100は、切取部10a、生成部20aおよび描画部30aを含む。画像描画装置100は、有線または無線を介して制御装置40およびフレームバッファ50に接続される。また、フレームバッファ50は、有線または無線を介して出力装置60に接続される。
例えば、切取部10aは、制御装置40から受けた画像の描画指示に含まれる個々のコマンドで示されるプリミティブから、タイルベースレンダリングに応じた単位領域ごとに、当該単位領域に含まれる部分の図形を切り取る。切取部10aは、プリミティブのそれぞれから単位領域ごとに切り取った図形を示す情報を、生成部20aに出力する。切取部10aの動作については、図9から図10で説明する。
例えば、生成部20aは、切取部10aにより各単位領域で切り取られた図形のそれぞれを更に分割することで新たなプリミティブを生成し、生成した新たなプリミティブのそれぞれを描画するコマンドを単位領域ごとに生成する。生成部20aは、単位領域ごとに生成した描画コマンドを順次に描画部30aに出力する。生成部20aの動作については、図11および図12で説明する。
例えば、描画部30aは、単位領域ごとに生成された描画コマンドに基づいて、新たなプリミティブのそれぞれを描画することで、制御装置40から受けた描画指示に含まれるコマンドで示される元のプリミティブを描画した場合と同等の画像を生成する。例えば、描画部30aは、生成部20aより受けた描画コマンドに基づいて、単位領域ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブのラスタ表現を生成する。描画部30aは、生成した各プリミティブのラスタ表現をフレームバッファ50に順次に出力する。
図9は、図8に示した切取部10aによる切り取り処理の例を示す。図9において、領域70aは、出力装置60における画像の表示領域または印刷領域を示し、座標軸Xおよび座標軸Yは、それぞれ水平走査方向および垂直走査方向を示す。また、図9に示した領域70aを破線で区切ることで分割された各領域TL1−TL12は、画像描画装置100におけるレンダリング処理の単位の一例であるタイルを示す。図9の例は、領域70aを水平走査方向(X軸方向)に3つ、垂直走査方向(Y軸方向)に4つに分割した場合を示す。なお、X1a=X2a−X1a=X3a−X2a=X4a−X3aであり、Y1a=Y2a−Y1a=Y3a−Y2aである。例えば、記憶装置90は、画像描画装置100がタイルスキャンベースレンダリングで画像を描画する場合、タイルTL1−TL12の境界を示すX座標X1a−X4aおよびY座標Y1a−Y3aを予め格納する。また、タイルの数は12としたが、領域70aの大きさに応じて適宜決定されるのが望ましい。
図9(a)は、例えば、制御装置40より受けた描画指示により描画される画像に含まれるプリミティブが、図2(a)と同様に、1つの三角形ABCの場合を示す。三角形ABCの頂点A,B,Cは、タイルTL10,TL5,TL4にそれぞれ含まれる。
図9(b)は、図8に示した切取部10aにより、タイルTL1−TL12ごとに、タイルTL1−TL12のそれぞれに含まれる三角形ABCの一部を切り取った例を示す。すなわち、切取部10aは、タイルTL2において三角形ABCから三角形GHJを切り取り、タイルTL3において三角形ABCから五角形DEHGFを切り取り、タイルTL4において三角形ABCから三角形CDEを切り取る。また、切取部10aは、タイルTL5において三角形ABCから三角形BLMを切り取り、タイルTL6において三角形ABCから六角形GJLMKIを切り取り、タイルTL7において三角形ABCから三角形FGIを切り取り、タイルTL10において三角形ABCから三角形AKMを切り取る。なお、切取部10aは、切り取り処理により新たに生じた頂点Dから頂点Mの各位置の座標を、各タイルの水平および垂直走査方向の境界と三角形ABCの各辺AB,AC,BCとの交点から求める。そして、切取部10aは、各タイルで切り取った図形の各頂点を示す情報を、生成部20aに出力する。
図10は、図8に示した切取部10aにより各タイルで切り取られた図形の頂点を示す情報の例を示す。頂点テーブル110aは、例えば、記憶装置90に格納され、タイルTL1−TL12ごとに、切り取り前の頂点と頂点数、領域、消失の頂点、新規の頂点および切り取り後の頂点と頂点数の格納領域を有する。
切り取り前の頂点と頂点数の格納領域には、切り取り処理前の描画する画像に含まれるプリミティブが有する頂点と頂点数が切取部10aにより格納される。例えば、図9(a)に示した三角形ABCに対する切り取り処理を行う場合、切取部10aは、三角形ABCの一部を含むタイルTL2−TL7,TL10の各々の切り取り前の頂点と頂点数の格納領域に、頂点A,B,Cと頂点数を示す3とを格納する。なお、タイルTL1,TL8,TL9,TL11,TL12には、三角形ABCが含まれていないため、タイルTL1,TL8,TL9,TL11,TL12の切り取り前の頂点と頂点数の格納領域は、頂点数0の値が格納される。
領域の格納領域には、タイルTL1−TL12の各々のX座標およびY座標の範囲を示す情報が格納される。例えば、タイルTL1の領域の格納領域には、X座標が0からX1aおよびY座標が0からY1aまでの範囲を示す情報が格納され、タイルTL2の領域の格納領域には、X座標がX1aからX2aおよびY座標が0からY1aまでの範囲を示す情報が格納される。また、タイルTL3の領域の格納領域には、X座標がX2aからX3aおよびY座標が0からY1aまでの範囲を示す情報が格納され、タイルTL4の領域の格納領域には、X座標がX3aからX4aおよびY座標が0からY1aまでの範囲を示す情報が格納される。
また、タイルTL5の領域の格納領域には、X座標が0からX1aおよびY座標がY1aからY2aまでの範囲が格納され、タイルTL6の領域の格納領域には、X座標がX1aからX2aおよびY座標がY1aからY2aまでの範囲が格納される。タイルTL7の領域の格納領域には、X座標がX2aからX3aおよびY座標がY1aからY2aまでの範囲が格納され、タイルTL8の領域の格納領域には、X座標がX3aからX4aおよびY座標がY1aからY2aまでの範囲が格納される。また、タイルTL9の領域の格納領域には、X座標が0からX1aおよびY座標がY2aからY3aまでの範囲が格納され、タイルTL10の領域の格納領域には、X座標がX1aからX2aおよびY座標がY2aからY3aまでの範囲が格納される。また、タイルTL11の領域の格納領域には、X座標がX2aからX3aおよびY座標がY2aからY3aまでの範囲が格納され、タイルTL12の領域の格納領域には、X座標がX3aからX4aおよびY座標がY2aからY3aまでの範囲が格納される。
消失の頂点の格納領域には、切り取り前の頂点と頂点数の格納領域に格納された頂点のうち、切り取り処理によりタイルに含まれなくなった頂点を示す情報が格納される。例えば、図9(b)に示した三角形ABCのうち、タイルTL2,TL3,TL6,TL7のそれぞれに含まれる部分は、頂点A,B,Cのいずれも含まないため、各タイルの消失の頂点の格納領域には、頂点A,B,Cがそれぞれ格納される。また、タイルTL4において三角形ABCから切り取られる図形は、頂点Cを含み、頂点A,Bを含まないため、タイルTL4の消失の頂点の格納領域には、頂点A,Bが格納される。タイルTL5において三角形ABCから切り取られる図形は、頂点Bを含み、頂点A,Cを含まないことから、タイルTL5の消失の頂点の格納領域には、頂点A,Cが格納される。また、タイルTL10において三角形ABCから切り取られる図形は、頂点Aを含み、頂点B,Cを含まないことから、タイルTL10の消失の頂点の格納領域には、頂点B,Cが格納される。なお、タイルTL1,TL8,TL9,TL11,TL12の消失の頂点の格納領域は、空欄を示す“−”が格納される。
新規の頂点の格納領域には、切取部10aによる切り取り処理により、各タイルで新たに生じた頂点が格納される。例えば、図9(b)に示した三角形ABCから、タイルTL2において、三角形GHJが切り取られた場合、タイルTL2の新規の頂点の格納領域には、頂点G,H,Jが格納される。また、タイルTL3において、三角形ABCから五角形DEHGFが切り取られた場合、タイルTL3の新規の頂点の格納領域には、頂点D,E,F,G,Hが格納される。また、タイルTL4において、三角形ABCから三角形CDEが切り取られた場合、タイルTL4の新規の頂点の格納領域には、頂点D,Eが格納される。
また、タイルTL5において、三角形ABCから三角形BLMが切り取られた場合、タイルTL5の新規の頂点の格納領域には、頂点L,Mが格納される。また、タイルTL6において、三角形ABCから六角形GJLMKIが切り取られた場合、タイルTL6の新規の頂点の格納領域には、頂点G,I,J,K,L,Mが格納される。また、タイルTL7において、三角形ABCから三角形FGIが切り取られた場合、タイルTL7の新規の頂点の格納領域には、頂点F,G,Iが格納される。また、タイルTL10において、三角形ABCから三角形AKMが切り取られた場合、タイルTL10の新規の頂点の格納領域には、頂点K,Mが格納される。なお、タイルTL1,TL8,TL9,TL11,TL12の新規の頂点の格納領域は、空欄を示す“−”がそれぞれ格納される。
切り取り後の頂点と頂点数の格納領域には、各タイルにおける切り取り処理により切り取られた図形に含まれる頂点と頂点数とが切取部10aにより格納される。例えば、図2(b)に示した三角形ABCに対する切り取り処理が行われた場合、切取部10aは、タイルTL2の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形GHJの頂点G,H,Jと頂点数を示す値3とを格納する。また、切取部10aは、タイルTL3の切り取り後の頂点と頂点数の格納領域に、切り取られた五角形DEHGFの頂点D,E,F,G,Hと頂点数を示す値5とを格納する。また、切取部10aは、タイルTL4の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形CDEの頂点C,D,Eと頂点数を示す値3とを格納する。
また、切取部10aは、タイルTL5の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形BLMの頂点B,L,Mと頂点数を示す値3とを格納する。また、切取部10aは、タイルTL6の切り取り後の頂点と頂点数の格納領域に、切り取られた六角形GJLMKIの頂点G,I,J,K,L,Mと頂点数を示す値6とを格納する。切取部10aは、タイルTL7の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形FGIの頂点F,G,Iと頂点数を示す値3とを格納する。また、切取部10aは、タイルTL10の切り取り後の頂点と頂点数の格納領域に、切り取られた三角形AKMの頂点A,K,Mと頂点数を示す値3とを格納する。なお、タイルTL1,TL8,TL9,TL11,TL12の切り取り後の頂点と頂点数の格納領域には、頂点数が0の値がそれぞれ格納される。
例えば、生成部20aは、図10に示した頂点テーブル110aに基づいて、各タイルTL1−TL12で切り取られた図形を分割することで少なくとも1つの新規のプリミティブを生成する。生成部20aは、例えば、頂点テーブル110aに各タイルTL1−TL12に対応して格納された切取後の頂点の数に基づいて、各タイルTL1−TL12で切り取られた図形がさらに分割可能か否かを判定する。生成部20aは、各タイルTL1−TL12で切り取られた図形がさらに分割することが困難な図形、すなわち三角形または線分である場合に、切り取られた図形そのものを新規のプリミティブとする。一方、生成部20aは、各タイルTL1−TL12で切り取られた図形がさらに分割可能な図形、すなわち4以上の頂点を持つ多角形である場合に、切り取られた図形をさらに分割することで複数の新規のプリミティブを生成する。
図11は、図8に示した生成部20aによる分割処理の例を示す。例えば、生成部20aは、図10に示した頂点テーブル110aにおけるタイルTL2の切り取り後の頂点と頂点数の格納領域から、頂点G,H,Jと頂点数3とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL2の図形がさらに分割することが困難な三角形であると判定し、三角形GHJをタイルTL2の新規のプリミティブとして保持する。また、生成部20aは、頂点テーブル110aにおけるタイルTL3の切り取り後の頂点と頂点数の格納領域から、頂点D,E,F,G,Hと頂点数5とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL3の図形が五角形DEHGFであり、さらに分割することが可能であると判定する。そして、生成部20aは、五角形DEHGFを、例えば、頂点Dを基点にして三角形DEH、三角形DHG、三角形DGFに分割し、分割した3つの三角形DEH、三角形DHG、三角形DGFをタイルTL3の新規のプリミティブとして保持する。
また、生成部20aは、頂点テーブル110aにおけるタイルTL4の切り取り後の頂点と頂点数の格納領域から、頂点C,D,Eと頂点数3とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL4の図形がさらに分割することが困難な三角形であると判定し、三角形CDEをタイルTL4の新規のプリミティブとして保持する。また、生成部20aは、頂点テーブル110aにおけるタイルTL5の切り取り後の頂点と頂点数の格納領域から、頂点B,L,Mと頂点数3とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL5の図形がさらに分割することが困難な三角形であると判定し、三角形BLMをタイルTL5の新規のプリミティブとして保持する。
また、生成部20aは、頂点テーブル110aにおけるタイルTL6の切り取り後の頂点と頂点数の格納領域から、頂点G,I,J,K,L,Mと頂点数6とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL6の図形が六角形GJLMKIであり、さらに分割することが可能であると判定する。そして、生成部20aは、六角形GJLMKIを、例えば、頂点Iを基点にして三角形IGJ、三角形IJL、三角形ILM、三角形IMKに分割し、分割した4つの三角形をタイルTL6の新規のプリミティブとして保持する。また、生成部20aは、頂点テーブル110aにおけるタイルTL7の切り取り後の頂点と頂点数の格納領域から、頂点G,I,Fと頂点数3とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL7の図形がさらに分割することが困難な三角形であると判定し、三角形GIFをタイルTL7の新規のプリミティブとして保持する。また、生成部20aは、頂点テーブル110aにおけるタイルTL10の切り取り後の頂点と頂点数の格納領域から、頂点A,K,Mと頂点数3とを読み出す。生成部20aは、読み出した頂点の位置と頂点数とから、タイルTL10の図形がさらに分割することが困難な三角形であると判定し、三角形AKMをタイルTL10の新規のプリミティブとして保持する。
例えば、生成部20aは、図10に示した頂点テーブル110aにおいて、タイルごとに保持された各プリミティブを示す情報に基づいて、図11に示した新規のプリミティブの各々を描画するコマンドをタイルごとに生成する。
図12は、図8に示した生成部20aにより生成された描画のコマンド群80aの例を示す。例えば、コマンド群80aは、タイルTL1−TL12の各々において切り取られた図形に含まれる新規のプリミティブを描画するコマンドを含む。生成部20aは、例えば、タイルTL2におけるコマンドとして、コマンド群80aの1番目から4番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形GHJの描画コマンド、および描画終了を示すフラグの情報を格納する。なお、設定系コマンドは、図5に示したものと同様である。
また、生成部20aは、タイルTL3でのコマンドとして、コマンド群80aの5番目から10番目の各格納領域に、描画開始を示すフラグ、設定系コマンド、三角形DEH,三角形DHG,三角形DGFの描画コマンド、描画終了を示すフラグを格納する。生成部20aは、タイルTL4でのコマンドとして、コマンド群80aの11番目から14番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形CDEの描画コマンド、および描画終了を示すフラグの情報を格納する。
また、生成部20aは、タイルTL5でのコマンドとして、コマンド群80aの15番目から18番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形BLMの描画コマンド、および描画終了を示すフラグの情報を格納する。また、生成部20aは、タイルTL6でのコマンドとして、コマンド群80aの19番目から25番目の各格納領域に、描画開始を示すフラグ、設定系コマンド、三角形IGJ,IJL,ILM,IMKの描画コマンド、描画終了を示すフラグを格納する。また、生成部20aは、タイルTL7でのコマンドとして、コマンド群80aの26番目から29番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形FGIの描画コマンド、および描画終了を示すフラグの情報を格納する。また、生成部20aは、タイルTL10でのコマンドとして、コマンド群80aの30番目から33番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンド、三角形AKMの描画コマンド、および描画終了を示すフラグの情報を格納する。例えば、生成部20aは、生成したコマンド群80aを記憶装置90に格納する。
なお、コマンド群80aの6番目、12番目、16番目、20番目、27番目および31番目の格納領域に格納されるタイルTL3−TL7,TL10の設定系コマンドは、2番目の格納領域に格納されたタイルTL2の設定系コマンドと同様である。よって、例えば、タイルTL3−TL7,TL10の設定系コマンドは省略されてもよい。また、各タイルの描画終了を示すフラグは、各タイルの描画開始を示すフラグで代用されてもよく、各タイルの描画終了を示すフラグは省略されてもよい。
図13は、図8に示した画像描画装置100における画像描画処理の例を示す。図13に示したステップS20、ステップS21、ステップS22の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。すなわち、図13は、画像描画方法の別実施形態を示す。なお、図13に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。この場合、図8に示した切取部10a、生成部20aおよび描画部30aは、画像描画装置100内に配置される回路により実現される。
ステップS20において、切取部10aは、図9において説明したように、制御装置40から受けた画像の描画指示に基づいて、描画指示で示されるプリミティブのそれぞれから、各タイルに含まれる部分の図形を切り取る。例えば、切取部10aは、各タイルで切り取った図形の各頂点を示す情報を、図10に示した頂点テーブル110aに格納する。そして、切取部10aは、頂点テーブル110aを生成部20aに出力する。
次に、ステップS21において、生成部20aは、図11および図12において説明したように、頂点テーブル110aに基づいて、タイルごとに切り取って得られた図形を、さらに分割することで少なくとも1つの新規のプリミティブを生成する。生成部20aは、タイルごとに生成した新規のプリミティブのそれぞれを描画するコマンドを含むコマンド群80aを生成する。そして、生成部20aは、生成したコマンド群80aを描画部30aに出力する。
次に、ステップS22において、描画部30aは、図8において説明したように、生成部20aより受けたコマンド群80aに基づいて、新規のプリミティブのそれぞれのラスタ表現である画素の集合体を生成することで画像を描画する。例えば、描画部30aは、受けたコマンド群80aに格納される各プリミティブの描画コマンドに基づいて、タイルTL1−TL12ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブのラスタ表現を生成する。そして、描画部30aは、生成した各プリミティブのラスタ表現をフレームバッファ50に順次に出力する。
そして、画像描画装置100は、画像描画処理を終了する。なお、図13の処理のフローは、制御装置40から画像の描画指示を受ける度に実行される。
以上、この実施形態では、切取部10aは、受けた画像の描画指示に基づいて、描画する画像が含むプリミティブから各タイルに含まれる部分の図形を切り取る。生成部20aは、タイルごとに切り取った図形を新規のプリミティブで分割し、タイルごとに分割した新規のプリミティブを描画するコマンドを含むコマンド群80aを生成する。描画部30aは、コマンド群80aに含まれた描画コマンドに基づいて、各タイルにおいて生成された新規のプリミティブの各々に対してラスタライズ処理を行い、各プリミティブのラスタ表現を生成する。描画部30aは、タイルごとの分割で得られた新規のプリミティブの各々に対してラスタライズ処理する過程で、他のタイルに含まれる新規のプリミティブをラスタライズすることはない。つまり、描画部30aが、各タイルに含まれる新規のプリミティブのそれぞれをラスタライズする処理は、分割前の元の図形全体に対し1回のラスタライズ処理を施すことと同等である。すなわち、画像描画装置100は、図形全体に対するラスタライズ処理をタイル数と同じ回数に亘って繰り返すことなく、元の描画指示で示された図形全体のラスタ表現を生成できる。これにより、画像描画装置100は、図形全体に対するラスタライズ処理をタイル数と同じ回数の繰り返す場合に比べて、ラスタライズ処理の負荷を低減し、画像の描画処理の高速化を図ることができる。
なお、生成部20aは、図13に示したコマンド群80aに格納される各プリミティブの描画コマンドを、タイルTL1−TL12の順に格納したが、任意の順番でタイルごとにプリミティブの描画コマンドを格納してもよい。
図14は、画像描画装置および画像描画システムの別実施形態を示す。図14に示す画像描画装置100および画像描画システム150の各要素のうち、図1に示した画像描画装置100および画像描画システム150の要素と同一または同様の機能を有するものについては、同一の符号を付し詳細な説明は省略する。
画像描画装置100は、前処理部15、切取部10b、生成部20bおよび描画部30bを含む。画像描画装置100は、有線または無線を介して制御装置40、フレームバッファ50および記憶装置90aに接続される。また、フレームバッファ50は、有線または無線を介して出力装置60に接続される。
例えば、記憶装置90aは、レジスタ等であり、制御装置40より描画指示された画像に含まれる各図形の頂点を示す情報とディスプレイリストとともに、画像描画装置100による処理の途中経過を示すデータ等を格納する。また、記憶装置90aは、例えば、画像描画装置100がラスタスキャンベースレンダリングで画像を描画する場合、図2(a)に示したスキャンラインSC1−SC6の境界を示すY座標Y1−Y6を予め格納する。なお、記憶装置90aは、画像描画装置100の外部に配置されたが、画像描画装置100の内部に配置されてもよい。
例えば、前処理部15は、制御装置40より受けた描画指示に含まれる3次元空間の立体物の頂点を示す情報およびディスプレイリストに基づいて、描画する立体物に対して前処理を行う。前処理部15は、例えば、前処理として、立体物に対し出力装置60の表示領域からはみ出る部分を切り取るViewVolumeClip処理を行い、ViewVolumeClip処理された立体物を2次元の図形に変換する変換処理を行う。そして、前処理部15は、前処理した図形の頂点を示す情報、および前処理した図形を描画するディスプレイリストを記憶装置90aの予め割り当てられた格納領域に格納する。そして、前処理部15は、切取部10bに切り取り処理の開始を示す信号を出力する。
例えば、切取部10bは、解析部11およびクリッピング部12を含む。切取部10bは、前処理部15より切り取り処理の開始を示す信号を受けると、前処理された図形の頂点を示す情報とディスプレイリスト、およびスキャンラインSC1−SC6の境界を示すY座標Y1−Y6を記憶装置90aより読み出す。
例えば、解析部11は、読み出した頂点を示す情報とスキャンラインSC1−SC6の境界のY座標Y1−Y6とに基づき、前処理された図形に含まれる各プリミティブにおいて少なくとも一部を含むスキャンラインを特定する。解析部11は、特定した各プリミティブを含むスキャンラインを示す情報を記憶装置90aに格納する。そして、解析部11は、クリッピング部12に処理の開始を示す信号を出力する。解析部11の動作については、図15から図17で説明する。
例えば、クリッピング部12は、解析部11より処理の開始を示す信号を受信すると、解析部11により特定した各プリミティブを含むスキャンラインを示す情報を記憶装置90aから読み出す。クリッピング部12は、例えば、読み出した情報に基づいて、前処理された図形に含まれる各プリミティブから、解析部11により特定されたスキャンラインのそれぞれに含まれる部分の図形を切り取る。クリッピング部12は、各プリミティブから切り取った図形を示す情報を生成し、生成した情報を記憶装置90aに格納する。そして、切取部10bは、生成部20bに生成処理の開始を示す信号を出力する。クリッピング部12の動作については、図18および図19で説明する。
例えば、生成部20bは、切取部10bより生成処理の開始を示す信号を受けると、各スキャンラインSC1−SC6でクリッピングされた図形を示す情報を記憶装置90aから読み出す。生成部20bは、読み出した情報に基づいて、スキャンラインごとにクリッピングされた各図形をさらに分割することで新たなプリミティブを生成する。生成部20bは、スキャンラインごとに生成した新たなプリミティブそれぞれを描画するコマンドを生成する。生成部20bは、各スキャンラインで生成した描画コマンドを記憶装置90aに格納するとともに、描画部30bに描画処理の開始を指示する信号を出力する。生成部20bの動作については、図20および図21で説明する。
例えば、描画部30bは、生成部20bより描画処理の開始を指示する信号を受けると、生成部20bより生成された描画のコマンドを記憶装置90aより読み出す。描画部30bは、読み出したコマンドに基づいて、スキャンラインSC1−SC6ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブを画素の集合体として表したラスタ表現を生成する。描画部30bは、生成した各プリミティブのラスタ表現をフレームバッファ50に順次に出力する。
図15は、図14に示した前処理部15により前処理された図形の例を示す。図15の例は、制御装置40より受けた描画指示に基づいて、前処理部15における前処理により、2つの三角形A1B1C1と三角形A2B2C2とを含む2次元の図形が生成された場合を示す。なお、図15に示した2つの三角形A1B1C1および三角形A2B2C2は、前処理部15における前処理で生成される2次元のプリミティブの一例であり、図15の例では、三角形A2B2C2は、三角形A1B1C1の上に重なるように配置される。また、三角形A1B1C1の頂点A1,B1,C1は、スキャンラインSC5,SC3,SC1の領域にそれぞれ含まれ、三角形A2B2C2の頂点A2,B2,C2は、スキャンラインSC6,SC4,SC2の領域にそれぞれ含まれる。
例えば、解析部11は、記憶装置90aより読み出したスキャンラインSC1−SC6の境界を示すY座標Y1−Y6と図形の頂点を示す情報とを用い、各スキャンラインの境界と、前処理された図形に含まれる各プリミティブにおいて最小および最大のY座標を示す頂点とを比較する。解析部11は、比較の結果に基づき、スキャンラインとプリミティブとの位置関係を判定し、各プリミティブについて少なくとも一部を含むスキャンラインを特定する。
図16は、スキャンラインとプリミティブとの位置関係の例を示す。2つの破線は、スキャンラインの境界を示し、YL,YHはスキャンラインの境界のY座標を示す。また、三角形TA1,TA2は、(前処理された図形に含まれる)プリミティブの例を示し、Ymin,Ymaxは、各三角形TA1,TA2において最小および最大のY座標を示す頂点を示す。なお、境界のY座標YL,YHは、スキャンラインSC1の場合、0とY1とであり、スキャンラインSC2の場合、Y1とY2とであり、スキャンラインSC3の場合、Y2とY3とであり、スキャンラインSC4の場合、Y3とY4とである。また、境界のY座標YL,YHは、スキャンラインSC5の場合、Y4とY5とであり、スキャンラインSC6の場合、Y5とY6とである。また、Y座標Ymin,Ymaxを示す頂点は、例えば、プリミティブが図15に示した三角形A1B1C1の場合、頂点C1と頂点A1とであり、プリミティブが図15に示した三角形A2B2C2の場合、頂点C2と頂点A2とである。
図16(a)は、三角形TA1においてY座標Yminを示す頂点が、スキャンラインのY座標YHの境界よりY軸方向の上側に位置する場合を示す。図16(b)は、三角形TA1がスキャンラインのY座標YHの境界で交差する場合と、三角形TA2がスキャンラインのY座標YLとY座標YHとの境界の間に含まれる場合とを示す。図16(c)は、三角形TA1においてY座標Ymaxを示す頂点が、スキャンラインのY座標YLの境界よりY軸方向の下側に位置する場合を示す。図16(d)は、三角形TA1がスキャンラインの2つの境界で交差する場合と、三角形TA2がスキャンラインのY座標YLの境界で交差する場合とを示す。そして、解析部11は、各スキャンラインと、各プリミティブにおける最小および最大のY座標を示す頂点との比較から、図16(a)から図16(d)に示した位置関係のいずれかを判定し、各プリミティブがどのスキャンラインに含まれるかを特定する。
図17は、図14に示した解析部11による判定処理の例を示す。例えば、テーブル120は、プリミティブが図15に示した三角形A1B1C1および三角形A2B2C2の場合に、解析部11による各スキャンラインとの位置関係の判定結果を示す判定の格納領域を有する。解析部11は、テーブル120を記憶装置90aに予め割り当てられた格納領域に格納する。
例えば、スキャンラインとプリミティブとが図16(a)または図16(c)に示した位置関係、すなわちプリミティブが比較するスキャンラインに含まれない場合に、解析部11は、判定の格納領域に値0を格納する。例えば、図15に示した三角形A1B1C1とスキャンラインSC6、および三角形A2B2C2とスキャンラインSC1とが、図16(a)および図16(c)に示した位置関係にあり、解析部11は、それぞれの判定の格納領域に値0を格納する。
また、スキャンラインとプリミティブとが図16(b)に示した位置関係、すなわち、少なくともプリミティブの最小のY座標Yminを示す頂点がスキャンラインのY座標YL,YHの境界の間に含まれる場合、解析部11は、判定の格納領域に値1を格納する。例えば、図15に示した三角形A1B1C1とスキャンラインSC1、および三角形A2B2C2とスキャンラインSC2とが、図16(b)に示した位置関係にあり、解析部11は、それぞれの判定の格納領域に値1を格納する。
また、スキャンラインとプリミティブとが図16(d)に示した位置関係、すなわち、プリミティブが少なくともスキャンラインのY座標YLの境界で交差する場合、解析部11は、判定の格納領域に値2を格納する。例えば、図15に示した三角形A1B1C1とスキャンラインSC2−SC5、および三角形A2B2C2とスキャンラインSC3−SC6とが、図16(d)に示した位置関係にあり、解析部11は、それぞれの判定の格納領域に値2を格納する。そして、解析部11は、テーブル120の判定の格納領域に格納された値が1または2が格納されたスキャンラインに、プリミティブが含まれると特定する。例えば、解析部11は、図15に示した三角形A1B1C1を含むスキャンラインを、判定の格納領域の値が1または2のスキャンラインSC1−SC5であると特定する。また、解析部11は、図15に示した三角形A2B2C2を含むスキャンラインを、判定の格納領域の値が1または2のスキャンラインSC2−SC6であると特定する。
例えば、クリッピング部12は、図17に示したテーブル120における判定の格納領域に格納された値に基づいて、各プリミティブから、特定されたスキャンラインごとに含まれる部分の図形をクリッピングする。例えば、クリッピング部12は、図17に示したテーブル120の判定の格納領域の値が1の場合、図16(b)に示した三角形TA2のように、プリミティブが1つのスキャンライン内に収まっているか否かを判定する。そこで、クリッピング部12は、図17に示したテーブル120の判定の格納領域の値が1である三角形A1B1C1のスキャンラインSC1の上側の境界で隣接するスキャンラインSC2における判定の格納領域の値が0か否かを判定する。図17に示すように、三角形A1B1C1のスキャンラインSC2における判定の格納領域の値が2であることから、クリッピング部12は、三角形A1B1C1が、図16(b)に示した三角形TA1のように、スキャンラインSC2にも含まれると判定する。そして、クリッピング部12は、図18および図19において後述するように、三角形A1B1C1から、スキャンラインSC1に含まれる部分の図形をクリッピングする。
同様に、クリッピング部12は、図15に示した三角形A2B2C2が、図17に示したテーブル120の判定の格納領域の値が1であるスキャンラインSC2内に収まっているか否かを、上側で隣接するスキャンラインSC3の判定の格納領域の値から判定する。図17に示すように、三角形A2B2C2のスキャンラインSC3における判定の格納領域の値が2であることから、クリッピング部12は、三角形A2B2C2がスキャンラインSC3にも含まれると判定する。
なお、クリッピング部12は、スキャンラインSC2における判定の格納領域の値が0の場合、三角形A1B1C1のプリミティブが、スキャンラインSC2に含まれず、スキャンラインSC1内に収まっていると判定する。そして、クリッピング部12は、三角形A1B1C1のプリミティブに対してクリッピング処理を行わない。
また、クリッピング部12は、図17に示したテーブル120の判定の格納領域の値が2の場合、図16(d)に示す三角形TA1のように、プリミティブがスキャンラインのY座標YHの境界と交差して上側に隣接するスキャンラインに含まれるか否かを判定する。そこで、クリッピング部12は、例えば、図17に示したテーブル120の判定の格納領域の値が2である三角形A1B1C1のスキャンラインSC2の上側の境界で隣接するスキャンラインSC3におけるプリミティブの判定の格納領域の値が1または2か否かを判定する。隣接する三角形A1B1C1のスキャンラインSC3における判定の格納領域の値が2であることから、クリッピング部12は、三角形A1B1C1が、図16(d)に示した三角形TA1のように、スキャンラインSC3にも含まれると判定する。そして、クリッピング部12は、図18および図19において後述するように、三角形A1B1C1から、スキャンラインSC2に含まれる部分の図形を、スキャンラインSC2のY座標YL,YHの2つの境界でクリッピングする。
同様に、クリッピング部12は、図15に示した三角形A1B1C1から、図17に示したテーブル120の判定の格納領域の値が2であるスキャンラインSC3−SC5のそれぞれに含まれる図形をクリッピングする。また、クリッピング部12は、図15に示した三角形A2B2C2から、図17に示したテーブル120の判定の格納領域の値が2であるスキャンラインSC3−SC6のそれぞれに含まれる図形をクリッピングする。
なお、クリッピング部12は、スキャンラインSC3における判定の格納領域の値が0の場合、三角形A1B1C1が、図16(d)に示した三角形TA2のように、上側に隣接するスキャンラインSC3に含まれないと判定する。そして、クリッピング部12は、三角形A1B1C1のプリミティブから、スキャンラインSC2に含まれる部分の図形をスキャンラインSC2のY座標YLの境界でクリッピングする。
図18は、図14に示したクリッピング部12により各スキャンラインでクリッピングされた各プリミティブの頂点を示す情報の例を示す。頂点テーブル110b(1)は、図15に示した三角形A1B1C1の頂点を示す情報であり、頂点テーブル110b(2)は、図15に示した三角形A2B2C2の頂点を示す情報である。なお、頂点テーブル110b(110b(1),110b(2))は、図3に示した頂点テーブル110と同様であり、詳細な説明は省略する。
図19は、図14に示したクリッピング部12による各プリミティブのクリッピング処理の例を示す。例えば、クリッピング部12は、図17に示したテーブル120に基づいて、図15に示した三角形A1B1C1から、スキャンラインSC1に含まれる図形である三角形C1D1E1をクリッピングする。同様に、クリッピング部12は、テーブル120に基づいて、三角形A1B1C1から、スキャンラインSC2に含まれる図形である四角形D1E1G1F1をクリッピングする。また、クリッピング部12は、テーブル120に基づいて、三角形A1B1C1から、スキャンラインSC3−SC5の各々に含まれる図形として、五角形B1I1H1F1G1、四角形H1I1K1J1および三角形A1J1K1をそれぞれクリッピングする。同様に、クリッピング部12は、図17に示したテーブル120に基づいて、図15に示した三角形A2B2C2からスキャンラインSC2に含まれる図形である三角形C2D2E2をクリッピングする。また、クリッピング部12は、テーブル120に基づいて、三角形A2B2C2から、スキャンラインSC3に含まれる図形である四角形D2E2G2F2をクリッピングする。また、クリッピング部12は、テーブル120に基づいて、三角形A2B2C2から、スキャンラインSC4−SC6の各々に含まれる図形として、五角形B2F2G2I2H2、四角形H2I2K2J2および三角形A2J2K2をそれぞれクリッピングする。
例えば、生成部20bは、図18に示した頂点テーブル110b(1),110b(2)に基づいて、各スキャンラインSC1−SC6でクリッピングされた図形をプリミティブで分割する。
図20は、図14に示した生成部20bによる分割処理の例を示す。例えば、生成部20bは、図18に示した三角形A1B1C1の頂点テーブル110b(1)におけるスキャンラインSC1の切り取り後の頂点と頂点数の格納領域から、頂点C1,D1,E1と頂点数3を読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC1の図形がさらに分割することが困難な三角形であると判定し、三角形C1D1E1をスキャンラインSC1の新規のプリミティブとして保持する。また、生成部20bは、頂点テーブル110b(1)におけるスキャンラインSC2の切り取り後の頂点と頂点数の格納領域から頂点D1,E1,F1,G1と頂点数4を読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC2の図形が四角形D1E1G1F1であり、さらに分割することができると判定する。そして、生成部20bは、例えば、四角形D1E1G1F1を、頂点D1を基点にして三角形D1E1G1と三角形D1G1F1とに分割する。生成部20bは、分割した2つの三角形D1E1G1と三角形D1G1F1とをスキャンラインSC2の新規のプリミティブとして保持する。
また、生成部20bは、頂点テーブル110b(1)におけるスキャンラインSC3の切り取り後の頂点と頂点数の格納領域から、頂点B1,F1,G1,H1,I1と頂点数5とを読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC3の図形が五角形B1I1H1F1G1であり、さらに分割することができると判定する。そして、生成部20bは、スキャンラインSC3の五角形B1I1H1F1G1に対し、例えば、頂点F1を基点にして三角形F1G1B1、三角形F1B1I1、三角形F1I1H1に分割する。そして、生成部20bは、分割した3つの三角形F1G1B1、三角形F1B1I1、三角形F1I1H1をスキャンラインSC3の新規のプリミティブとして保持する。
また、生成部20bは、頂点テーブル110b(1)におけるスキャンラインSC4の切り取り後の頂点と頂点数の格納領域から、頂点H1,I1,J1,K1と頂点数4とを読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC4の図形が四角形H1I1K1J1であり、さらに分割することができると判定する。そして、生成部20bは、スキャンラインSC4の四角形H1I1K1J1に対し、例えば、頂点H1を基点にして三角形H1I1K1と三角形H1K1J1とに分割する。そして、生成部20bは、分割した2つの三角形H1I1K1と三角形H1K1J1とをスキャンラインSC4の新規のプリミティブとして保持する。また、生成部20bは、頂点テーブル110b(1)におけるスキャンラインSC5の切り取り後の頂点と頂点数の格納領域から、頂点A1,J1,K1と頂点数3を読み出す。そして、生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC5の図形がさらに分割することが困難な三角形であると判定し、三角形A1J1K1をスキャンラインSC5の新規のプリミティブとして保持する。
また、生成部20bは、三角形A2B2C2の頂点テーブル110b(2)におけるスキャンラインSC2の切り取り後の頂点と頂点数の格納領域から、頂点C2,D2,E2と頂点数3を読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC2の図形がさらに分割することが困難な三角形であると判定し、三角形C2D2E2をスキャンラインSC2の新規のプリミティブとして保持する。また、生成部20bは、頂点テーブル110b(2)におけるスキャンラインSC3の切り取り後の頂点と頂点数の格納領域から頂点D2,E2,F2,G2と頂点数4を読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC3の図形が四角形D2E2G2F2であり、さらに分割することができると判定し、例えば、頂点D2を基点にして三角形D2E2G2と三角形D2G2F2とに分割する。そして、生成部20bは、分割した2つの三角形D2E2G2と三角形D2G2F2とをスキャンラインSC3の新規のプリミティブとして保持する。
また、生成部20bは、頂点テーブル110b(2)におけるスキャンラインSC4の切り取り後の頂点と頂点数の格納領域から、頂点B2,F2,G2,H2,I2と頂点数5とを読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC4の図形が五角形B2F2G2I2H2であり、さらに分割することができると判定する。そして、生成部20bは、五角形B2F2G2I2H2に対し、例えば、頂点F2を基点にして三角形F2G2I2、三角形F2I2H2、三角形F2H2B2に分割する。そして、生成部20bは、分割した3つの三角形F2G2I2、三角形F2I2H2、三角形F2H2B2をスキャンラインSC4の新規のプリミティブとして保持する。
また、生成部20bは、頂点テーブル110b(2)におけるスキャンラインSC5の切り取り後の頂点と頂点数の格納領域から、頂点H2,I2,J2,K2と頂点数4とを読み出す。生成部20bは、読み出した頂点の位置と頂点数とから、スキャンラインSC5の図形が四角形H2I2K2J2であり、さらに分割することができると判定する。そして、生成部20bは、四角形H2I2K2J2を、例えば、頂点H2を基点にして三角形H2I2K2と三角形H2K2J2とに分割し、分割した2つの三角形H2I2K2と三角形H2K2J2とをスキャンラインSC5の新規のプリミティブとして保持する。また、生成部20bは、頂点テーブル110b(2)におけるスキャンラインSC6の切り取り後の頂点と頂点数の格納領域から、頂点A2,J2,K2と頂点数3を読み出し、読み出した頂点の位置と頂点数とから、スキャンラインSC6の図形がさらに分割することが困難な三角形であると判定する。そして、生成部20bは、三角形A2J2K2をスキャンラインSC6の新規のプリミティブとして保持する。
例えば、生成部20bは、スキャンラインごとに保持する各プリミティブを示す情報に基づいて、図20に示した新規のプリミティブの各々を描画するコマンドをスキャンラインごとに生成する。
図21は、図14に示した生成部20bにより生成された描画のコマンド群80bの例を示す。例えば、コマンド群80bは、スキャンラインSC1−SC6の各々においてクリッピングされた各図形に含まれる新規のプリミティブそれぞれを描画するコマンドを含む。生成部20bは、例えば、スキャンラインSC1でのコマンドとして、コマンド群80bの1番目から4番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンドcmd1、三角形C1D1E1の描画コマンド、描画終了を示すフラグの情報を格納する。なお、設定系コマンドcmd1は、三角形A1B1C1に含まれるプリミティブを描画する前処理として、出力装置60の画面サイズ等の初期設定を行う。また、三角形C1D1E1の描画コマンドは、頂点C1,D1,E1の座標および各頂点間を線分で結ぶベクタ形式のデータ等を含む新たに作成されたものである。
また、生成部20bは、スキャンラインSC2でのコマンドとして、コマンド群80bの5番目から8番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンドcmd1、三角形D1E1G1および三角形D1G1F1の描画コマンドを格納する。さらに、生成部20bは、スキャンラインSC2でのコマンドとして、コマンド群80bの9番目から11番目の各格納領域に、設定系コマンドcmd2、三角形C2D2E2の描画コマンドおよび描画終了を示すフラグの情報を格納する。なお、設定系コマンドcmd2は、三角形A2B2C2に含まれるプリミティブを描画する前処理として、出力装置60の画面サイズ等の初期設定を行う。そして、設定系コマンドcmd1と設定系コマンドcmd2とは、同じコマンドでもよい。また、図15および図20に示したように、三角形A1B1C1の上に三角形A2B2C2が重ねて描画される。そのため、生成部20bは、三角形A1B1C1に含まれるプリミティブの描画コマンドを、三角形A2B2C2に含まれるプリミティブの描画コマンドより先にコマンド群80bの格納領域に格納する。
例えば、生成部20bは、スキャンラインSC3でのコマンドとして、コマンド群80bの12番目から16番目の各格納領域に、描画開始を示すフラグ、設定系コマンドcmd1、三角形F1G1B1,F1B1I1,F1I1H1の描画コマンドを格納する。さらに、生成部20bは、スキャンラインSC3でのコマンドとして、コマンド群80bの17番目から20番目の各格納領域に、設定系コマンドcmd2、三角形D2E2G2,三角形D2G2F2の描画コマンドおよび描画終了を示すフラグを格納する。
また、生成部20bは、スキャンラインSC4でのコマンドとして、コマンド群80bの21番目から24番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンドcmd1、三角形H1I1K1,三角形H1K1J1の描画コマンドを格納する。さらに、生成部20bは、スキャンラインSC4でのコマンドとして、コマンド群80bの25番目から29番目の各格納領域に、設定系コマンドcmd2、三角形F2G2I2,F2I2H2,F2H2B2の描画コマンドおよび描画終了を示すフラグを格納する。
また、生成部20bは、スキャンラインSC5でのコマンドとして、コマンド群80bの30番目から32番目の各格納領域に、描画開始を示すフラグの情報、設定系コマンドcmd1、三角形A1J1K1の描画コマンドを格納する。さらに、生成部20bは、スキャンラインSC5でのコマンドとして、コマンド群80bの33番目から36番目の各格納領域に、設定系コマンドcmd2、三角形H2I2K2,H2K2J2の描画コマンドおよび描画終了を示すフラグの情報を格納する。また、生成部20bは、スキャンラインSC6でのコマンドとして、コマンド群80bの36番目から39番目の各格納領域に、描画開始を示すフラグ、設定系コマンドcmd2、三角形A2J2K2の描画コマンドおよび描画終了を示すフラグを格納する。生成部20bは、生成したコマンド群80bを記憶装置90aに格納する。
なお、各スキャンラインの描画終了を示すフラグの情報は、各スキャンラインの描画開始を示すフラグの情報で代用されてもよく、各スキャンラインの描画終了を示すフラグの情報は省略されてもよい。また、設定系コマンドcmd1,cmd2は、互いに同じコマンドでもよく、コマンド群80bの2番目の格納領域に格納され、他の格納領域の設定系コマンドcmd1,cmd2は省略されてもよい。
図22は、図14に示した画像描画装置100における画像描画処理の例を示す。図22に示したステップS100、ステップS200、ステップS300、ステップS400、ステップS500の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。すなわち、図22は、画像描画方法の別実施形態を示す。なお、図22に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。この場合、図14に示した前処理部15、切取部10b、解析部11、クリッピング部12、生成部20bおよび描画部30bは、画像描画装置100内に配置される回路により実現される。
ステップS100において、前処理部15は、図14において説明したように、制御装置40より受けた描画指示に含まれる立体物の頂点を示す情報およびディスプレイリストに基づいて、ViewVolumeClip処理および変換処理等を含む前処理を実行する。そして、前処理部15は、前処理した図形の頂点を示す情報、およびディスプレイリストを記憶部90の予め割り当てられた格納領域に格納する。そして、前処理部15は、クリッピング部12に処理の開始を指示する信号を出力する。
次に、ステップS200において、解析部11は、図14から図17において説明したように、前処理部15から処理の開始を示す信号を受けると、前処理された図形に含まれる各プリミティブにおいて少なくとも一部を含むスキャンラインを特定する。解析部11によるステップS200の処理については、図23で説明する。
次に、ステップS300において、クリッピング部12は、図14、図18および図19において説明したように、前処理された図形に含まれる各プリミティブから、解析部11により特定されたスキャンラインのそれぞれに含まれる部分の図形をクリッピングする。クリッピング部12は、スキャンラインSC1−SC6ごとにクリッピングした図形を示す情報を、頂点テーブル110bとして記憶装置90aに格納する。そして、クリッピング部12は、生成部20bに生成処理の開始を指示する信号を出力する。クリッピング部12によるステップS300の処理については、図24で説明する。
次に、ステップS400において、生成部20bは、図14、図20および図21において説明したように、スキャンラインごとにクリッピングした図形を、さらに分割することで少なくとも1つの新規のプリミティブを生成する。生成部20bは、生成した新規のプリミティブのそれぞれを描画するコマンドを、スキャンラインごとに含むコマンド群80bを生成する。生成部20bは、生成したコマンド群80bを記憶装置90aに予め割り当てられた格納領域に格納する。生成部20bは、描画部30bに描画処理の開始を指示する信号を出力する。生成部20bによるステップS400の処理については、図25で説明する。
次に、ステップS500において、描画部30bは、図14において説明したように、生成部20bより処理の開始を示す信号を受けると、記憶装置90aよりコマンド群80bを読み出し、読み出したコマンド群80bに基づいて画像を描画する。例えば、描画部30bは、読み出したコマンド群80bに含まれる各プリミティブの描画コマンドに基づいて、スキャンラインSC1−SC6ごとに各プリミティブに対してラスタライズ処理を施し、各プリミティブのラスタ表現を生成する。そして、描画部30bは、生成した各プリミティブのラスタ表現をフレームバッファ50に順次に出力する。
そして、画像描画装置100は、画像描画処理を終了する。なお、図22の処理のフローは、制御装置40から画像の描画指示を受ける度に実行される。
図23は、図22に示したステップS200の処理の例を示す。図23に示したステップS201からステップS210の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。また、図23に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。
ステップS201において、解析部11は、図16において説明したように、記憶部90より前処理された図形の頂点を示す情報を読み出す。そして、解析部11は、読み出した情報に基づき、前処理された図形に含まれるプリミティブの頂点のうち最小および最大のY座標を示す頂点のY座標Ymin,Ymaxを取得する。
次に、ステップS202において、解析部11は、図16において説明したように、ステップS201で取得したプリミティブとの位置関係を比較するスキャンラインの下側および上側の境界を示すY座標YL,YHを記憶装置90aより読み出す。
次に、ステップS203において、解析部11は、図16および図17において説明したように、ステップS201で取得したプリミティブの頂点のY座標Ymimが、スキャンラインの上側の境界のY座標YHより小さいか否かを判定する。解析部11は、Y座標Yminがスキャンラインの上側の境界のY座標YHより小さい場合(YES)、処理をステップS204に移行する。一方、解析部11は、Y座標Yminがスキャンラインの上側の境界のY座標YH以上大きい場合(NO)、位置関係が図16(a)に示した三角形TA1のように、プリミティブがスキャンラインの上側の境界より上方に位置すると判定する。そして、解析部11は、処理をステップS208に移行する。
ステップS204において、解析部11は、図16および図17において説明したように、ステップS201で取得したプリミティブの頂点のY座標Yminが、スキャンラインの下側の境界のY座標YLより小さいか否かを判定する。解析部11は、Y座標Yminがスキャンラインの下側の境界のY座標YLより小さい場合(YES)、処理をステップS205に移行する。一方、解析部11は、Y座標Yminがスキャンラインの下側の境界のY座標YL以上大きい場合(NO)、図16(b)に示した三角形TA1または三角形TA2のように、プリミティブのY座標Yminを有する頂点がスキャンラインに含まれていると判定する。そして、解析部11は、処理をステップS206に移行する。
ステップS205において、解析部11は、図16および図17において説明したように、ステップS201で取得したプリミティブの頂点のY座標Ymaxが、スキャンラインの下側の境界のY座標YLより小さいか否かを判定する。解析部11は、Y座標Ymaxがスキャンラインの下側の境界のY座標YLより小さい場合(YES)、図16(c)に示した三角形TA1のように、プリミティブがスキャンラインの下側の境界より下方に位置すると判定する。そして、解析部11は、処理をステップS208に移行する。一方、解析部11は、Y座標Ymaxがスキャンラインの下側の境界のY座標の値YL以上大きい場合(NO)、図16(d)に示した三角形TA1または三角形TA2のように、プリミティブがスキャンラインの下側の境界を跨いでいると判定する。そして、解析部11は、処理をステップS207に移行する。
ステップS206において、解析部11は、図16および図17において説明したように、図17に示したテーブル120において、プリミティブとの位置関係を比較したスキャンラインの判定の格納領域に値1を格納する。そして、解析部11は、処理をステップS209に移行する。
ステップS207において、解析部11は、図16および図17において説明したように、図17に示したテーブル120において、プリミティブとの位置関係を比較したスキャンラインの判定の格納領域に値2を格納する。そして、解析部11は、処理をステップS209に移行する。
ステップS208において、解析部11は、図16および図17において説明したように、図17に示したテーブル120において、プリミティブとの位置関係を比較したスキャンラインの判定の格納領域に値0を格納する。そして、解析部11は、処理をステップS209に移行する。
ステップS209において、解析部11は、全てのスキャンラインについてステップS201で頂点の最小および最大のY座標Ymin,Ymaxを取得したプリミティブとの位置関係を比較したか否かを判定する。例えば、解析部11は、全てのスキャンラインについて、頂点のY座標Ymin,Ymaxを取得したプリミティブとの位置関係を比較した場合(YES)、処理をステップS210に移行する。一方、解析部11は、全てのスキャンラインについて比較していない場合(NO)、次のスキャンラインと、頂点のY座標Ymin,Ymaxを取得したプリミティブとの位置関係を比較するために、処理をステップS202に移行する。
ステップS210において、解析部11は、前処理された図形に含まれる全てのプリミティブについてスキャンラインとの位置関係を比較したか否かを判定する。例えば、解析部11は、全てのプリミティブについてスキャンラインとの位置関係を比較した場合(YES)、図22に示したステップS200の処理を終了する。そして、解析部11は、処理を図22に示したステップS300に移行する。一方、解析部11は、全てのプリミティブについてスキャンラインとの位置関係を比較していない場合(NO)、次のプリミティブと各スキャンラインとの位置関係を比較するために、処理をステップS201に移行する。
図24は、図22に示したステップS300の処理の例を示す。図24に示したステップS301からステップS307の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。また、図24に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。
ステップS301において、クリッピング部12は、図17において説明したように、前処理された図形に含まれるプリミティブそれぞれにおける、各スキャンラインとの位置関係を示す判定の結果を、図17に示したテーブル120の判定の格納領域から読み出す。
次に、ステップS302において、クリッピング部12は、図16および図17において説明したように、ステップS301で読み出した判定の結果を示す値が0か否かを判定する。例えば、クリッピング部12は、ステップS301で読み出した判定の結果を示す値が0の場合(YES)、図16(a)または図16(c)に示した三角形TA1のように、プリミティブがスキャンライン内にないと判定し、処理をステップS306に移行する。一方、クリッピング部12は、判定の結果を示す値が0でない場合(NO)、処理をステップS303に移行する。
ステップS303において、クリッピング部12は、図16および図17において説明したように、ステップS301で読み出した判定の結果を示す値が1か否かを判定する。例えば、クリッピング部12は、判定の結果を示す値が1の場合(YES)、処理をステップS304に移行する。一方、クリッピング部12は、判定の結果を示す値が2の場合(NO)、処理をステップS305に移行する。
ステップS304において、クリッピング部12は、図16および図17において説明したように、プリミティブが、図16(b)に示した三角形TA1のように、判定の結果を示す値が1であるスキャンラインの上側の境界で交差しているか否かを判定する。例えば、クリッピング部12は、判定の結果を示す値が1のスキャンラインの上側で隣接するスキャンラインにおける、プリミティブの判定の結果を示す値が1または2か否かを判定する。クリッピング部12は、上側で隣接するスキャンラインにおける、プリミティブの判定の結果を示す値が1または2の場合(YES)、プリミティブが、判定の結果を示す値が1のスキャンラインの上側の境界で交差していると判定する。そして、クリッピング部12は、処理をステップS305に移行する。一方、クリッピング部12は、上側で隣接するスキャンラインにおける、プリミティブの判定の結果を示す値が0の場合(NO)、プリミティブが、図16(b)に示す三角形TA2のように、判定の結果を示す値が1のスキャンライン内に収まっていると判定する。そして、クリッピング部12は、プリミティブから、判定の結果を示す値が1のスキャンラインに含まれる部分の図形をクリッピングすることなく、処理をステップS306に移行する。
ステップS305において、クリッピング部12は、図18および図19において説明したように、プリミティブからスキャンラインに含まれる部分の図形をクリッピングし、クリッピングした図形における新規の頂点を算出する。そして、クリッピング部12は、処理をステップS306に移行する。
ステップS306において、クリッピング部12は、1つのスキャンラインにおいて全てのプリミティブから、当該スキャンラインに含まれる部分の図形をクリッピングしたか否かを判定する。例えば、クリッピング部12は、全てのプリミティブからスキャンラインに含まれる部分の図形をクリッピングした場合(YES)、処理をステップS307に移行する。一方、クリッピング部12は、全てのプリミティブから、スキャンラインに含まれる部分の図形をクリッピングしていない場合(NO)、次のプリミティブから、スキャンラインに含まれる部分の図形をクリッピングするため、処理をステップS302に移行する。
ステップS307において、クリッピング部12は、前処理された図形に含まれる全てのプリミティブから、各スキャンラインに含まれる部分の図形をクリッピングしたか否かを判定する。例えば、クリッピング部12は、全てのプリミティブから、各スキャンラインに含まれる部分の図形をクリッピングした場合(YES)、ステップS300の処理を終了する。そして、クリッピング部12は、処理を図22に示したステップS400に移行する。一方、クリッピング部12は、全てのプリミティブから、各スキャンラインに含まれる部分の図形をクリッピングしていない場合(NO)、次のスキャンラインに含まれる部分の図形をクリッピングするため、処理をステップS301に移行する。
図25は、図22に示した生成部20bによるステップS400の処理の例を示す。図25に示したステップS401からステップS410の動作は、画像描画装置100に含まれるプロセッサ等の制御部がプログラムを実行することにより実現される。また、図25に示す処理は、画像描画装置100に搭載されるハードウェアにより実行されてもよい。
ステップS401において、生成部20bは、図20において説明したように、スキャンラインでクリッピングされた図形それぞれの頂点を示す情報を、記憶装置90aに格納された頂点テーブル110bの切り取り後の頂点と頂点数の格納領域から読み出す。
次に、ステップS402において、生成部20bは、読み出した頂点を示す情報において、クリッピングされた図形の頂点数が3より多いか否かを判定する。生成部20bは、頂点数が3より多い場合(YES)、クリッピングされた図形が4つ以上の頂点を有し、さらに分割することができる多角形と判定し、処理をステップS406に移行する。一方、生成部20bは、頂点数が3の場合(NO)、クリッピングされた図形はさらに分割することが困難な三角形であると判定し、処理をステップS403に移行する。
ステップS403において、生成部20bは、ステップS402で三角形と判定された図形における頂点テーブル110bの切り取り前の頂点と頂点数の格納領域と切り取り後の頂点と頂点数の格納領域とに格納される頂点が異なるか否かを判定する。生成部20bは、クリッピング前後で格納される頂点が異なる場合(YES)、クリッピング部12のクリッピングにより新たに生成された三角形と判定する。生成部20bは、処理をステップS405に移行する。一方、生成部20bは、クリッピング前後で格納される頂点が同じ場合(NO)、図16(b)に示した三角形TA2のように、1つのスキャンライン内に収まる三角形と判定する。そして、生成部20bは、処理をステップS404に移行する。
ステップS404において、生成部20bは、クリッピング前の三角形を新規のプリミティブとして保持する。そして、生成部20bは、処理をステップS408に移行する。
ステップS405において、生成部20bは、クリッピング後の三角形を新規のプリミティブとして保持する。そして、生成部20bは、処理をステップS408に移行する。
ステップS406において、生成部20bは、図20において説明したように、クリッピングされた図形を、さらに分割することで複数のプリミティブを生成する。そして、生成部20bは、処理をステップS407に移行する。
ステップS407において、生成部20bは、図20において説明したように、ステップS406で生成した複数のプリミティブそれぞれを、新規のプリミティブとして保持する。そして、生成部20bは、処理をステップS408に移行する。
ステップS408において、生成部20bは、1つのスキャンラインでクリッピングされた全ての図形について新規のプリミティブを保持したか否かを判定する。例えば、生成部20bは、当該スキャンラインでクリッピングされた全ての図形について新規のプリミティブを保持した場合(YES)、処理をステップS409に移行する。一方、生成部20bは、当該スキャンラインでクリッピングされた全ての図形の新規のプリミティブを保持していない場合(NO)、次のクリッピングされた図形に対し新規のプリミティブを保持するために、処理をステップS402に移行する。
ステップS409において、生成部20bは、全てのスキャンラインにおいてクリッピングされた図形について新規のプリミティブを保持したか否かを判定する。例えば、生成部20bは、全てのスキャンラインでクリッピングされた図形の新規のプリミティブを保持した場合(YES)、処理をステップS410に移行する。一方、生成部20bは、全てのスキャンラインでクリッピングされた図形の新規のプリミティブを保持していない場合(NO)、次のスキャンラインでクリッピングされた図形の新規のプリミティブを保持するために、処理をステップS401に移行する。
ステップS410において、生成部20bは、図21において説明したように、スキャンラインごとに保持する新規のプリミティブのそれぞれを描画するコマンドを含むコマンド群80bを生成する。例えば、生成部20bは、生成したコマンド群80bを記憶装置90aに予め割り当てられた格納領域に格納する。そして、生成部20bは、図22に示したステップS400の処理を終了し、処理をステップS500に移行する。
以上、この実施形態では、切取部10bは、受けた画像の描画指示に基づいて、描画する画像が含むプリミティブから各スキャンラインに含まれる部分の図形をクリッピングする。生成部20bは、スキャンラインごとにクリッピングされた図形を新規のプリミティブで分割し、スキャンラインごとに分割した新規のプリミティブを描画するコマンドを含むコマンド群80bを生成する。描画部30bは、コマンド群80bに含まれた描画コマンドに基づいて、各スキャンラインにおいて生成された新規のプリミティブの各々に対するラスタライズ処理を行い、各プリミティブのラスタ表現を生成する。図21および図22で説明したように、図14に示した描画部30bは、スキャンラインごとの分割で得られた新規のプリミティブの各々に対してラスタライズ処理する過程で、他のスキャンラインに含まれる新規のプリミティブをラスタライズすることはない。つまり、描画部30bが、各スキャンラインに含まれる新規のプリミティブのそれぞれをラスタライズする処理は、分割前の元の図形全体に対し1回のラスタライズ処理を施すことと同等である。すなわち、画像描画装置100は、図形全体に対するラスタライズ処理をスキャンライン数と同じ回数に亘って繰り返すことなく、元の描画指示で示された図形全体のラスタ表現を生成できる。これにより、画像描画装置100は、図形全体に対するラスタライズ処理をスキャンライン数と同じ回数の繰り返す場合に比べて、ラスタライズ処理の負荷を低減し、画像の描画処理の高速化を図ることができる。
なお、画像描画装置100は、描画方式として、ラスタスキャンベースレンダリングを用いたが、タイルベースレンダリングの描画方式を用いてもよい。
なお、生成部20bは、図21に示したコマンド群80bに格納される各プリミティブの描画コマンドを、スキャンラインSC1−SC6の順に格納したが、任意の順番でスキャンラインごとにプリミティブの描画コマンドを格納してもよい。
なお、生成部20bは、図25に示したステップS403において、クリッピング前後で、クリッピングされた図形の頂点が変化したか否かを判定したが、ステップS404とともに、ステップS403の処理は省略されてもよい。すなわち、生成部20bは、ステップS405において、クリッピング前後で、クリッピングされた図形の頂点の変化の有無にかかわらず、クリッピング後の三角形を新規のプリミティブとして保持してもよい。
図26は、図14に示した画像描画装置100および画像描画システム150のハードウェア構成の例を示す。なお、図26に示す各要素のうち、図14に示した要素と同等のものについては同一の符号を付して示し、詳細な説明は省略する。
コンピュータ装置200は、プロセッサ210、メモリ220、入出力インタフェース230、フレームバッファ50およびGPU(Graphics Processing Unit)300を含む。プロセッサ210、メモリ220、入出力インタフェース230およびGPU300は、バスを介し互いに接続される。また、入出力インタフェース230は、フレームバッファ50とともに、出力装置60および入力装置400に接続される。なお、コンピュータ装置200は、パーソナルコンピュータ、ゲーム機器あるいはカーナビゲーションション装置等である。
入力装置400は、例えば、キーボード、タッチパネルあるいはマウス等を含む。コンピュータ装置200のユーザは、入力装置400を操作し、例えば、画像描画処理の開始あるいは終了の指示等を行う。
メモリ220は、コンピュータ装置200のオペレーティングシステムを格納する。また、メモリ220は、プロセッサ210が、入力装置400を介して受けるユーザからの指示に基づいて画像の描画指示を生成し、生成した描画指示をGPU300に出力し画像描画処理を実行させるアプリケーションプログラムを格納する。なお、メモリ220に格納されるアプリケーションプログラムは、例えば、コンピュータ装置200に含まれるネットワークインタフェースを介してダウンロードされてもよい。また、メモリ220に格納されるアプリケーションプログラムは、CD(Compact Disc)やDVD(Digital Versatile Disc)等のリムーバブルディスクに記録して頒布することができる。
GPU300は、画像描画装置100、ホストインタフェース310、レジスタ320、プログラマブルシェーダ330、外部インタフェース340、ディスプレイコントローラ350、キャプチャコントローラ360およびメモリコントローラ370を含む。画像描画装置100、ホストインタフェース310、外部インタフェース340、ディスプレイコントローラ350、キャプチャコントローラ360およびメモリコントローラ370は、バスを介し互いに接続される。また、画像描画装置100は、レジスタ320およびプログラマブルシェーダ330に接続され、外部インタフェース340は、フレームバッファ50に接続される。
つまり、図14に示した画像描画システム150は、プロセッサ210、画像符号化装置100およびレジスタ320の協働によって実現する。
ホストインタフェース310は、プロセッサ210から画像の描画指示を受信し、受信した描画指示を画像描画装置100に出力する。
レジスタ320は、画像描画装置100が受けた描画指示の画像に含まれる図形の頂点を示す情報とディスプレイリスト、図17に示したテーブル120および図18に示した頂点テーブル110b等を格納する。また、レジスタ320は、図画像描画装置100による処理の途中経過を示すデータを格納する。
プログラマブルシェーダ330は、光源の計算や陰影の処理等を行う演算器であり、画像描画装置100により処理される各プリミティブでの画素に対する陰影や色彩のグラデーションの効果の制御指示を画像描画装置100に対して行う。
ディスプレイコントローラ350は、外部インタフェース340を介してフレームバッファ50からスキャンラインごとのラスタ表現の画像データを取得し、入出力インタフェース230を介し、取得した画像データを出力装置60に表示等させる。
キャプチャコントローラ360は、入出力インタフェース230を介して、コンピュータ装置200に外部から入力される映像信号を取り込み、取り込んだ映像信号を出力装置60に表示等させる。
メモリコントローラ370は、外部のフレームバッファ50やメモリ220とのデータのやり取りするデータ量、転送速度あるいはタイミング等の調整を行う。
画像描画装置100は、図14から図25において説明したように、前処理部15、切取部10b、生成部20bおよび描画部30bを含む。そして、画像描画装置100は、ホストインタフェース310を介して、プロセッサ210より画像の描画指示を受けると、画像描画処理を実行する。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10,10a,10b…切取部;11…解析部;12…クリッピング部;15…前処理部;20,20a,20b…生成部;30,30a,30b…描画部;40…制御装置;50…フレームバッファ;60…出力装置;70,70a…領域;80,80a,80b…コマンド群;90,90a…記憶装置;100…画像描画装置;110,110a,110b(1),110b(2),110b…頂点テーブル;120…テーブル;150…画像描画システム;200…コンピュータ装置;210…プロセッサ;220…メモリ;230…入出力インタフェース;300…GPU;310…ホストインタフェース;320…レジスタ;330…プログラマブルシェーダ;340…外部インタフェース;350…ディスプレイコントローラ;360…キャプチャコントローラ;370…メモリコントローラ;400…入力装置;SC1−SC6…スキャンライン;TL1−TL12…タイル

Claims (5)

  1. 描画指示に基づいて描画される第1図形のそれぞれから、出力装置に前記第1図形を含む画像を出力する単位である単位領域ごとに、前記単位領域に含まれる部分の図形を切り取る切取部と、
    前記単位領域ごとに、前記切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成する生成部と、
    前記単位領域ごとに生成された前記コマンドに基づいて前記第2図形のそれぞれを描画する描画部と、
    を備えることを特徴とする画像描画装置。
  2. 請求項1に記載の画像描画装置において、
    前記単位領域ごとに切り取られた図形は、前記単位領域の境界と前記第1図形の輪郭とで囲まれた多角形であり、
    前記第2図形のそれぞれは、前記多角形の頂点のうちの1つを共通に含む三角形である
    ことを特徴とする画像描画装置。
  3. 請求項1または請求項2に記載の画像描画装置において、
    前記切取部は、
    前記第1図形の頂点を示す情報と前記単位領域の境界を示す情報とに基づいて、前記第1図形の少なくとも一部を含む前記単位領域を特定する解析部と、
    前記第1図形から、前記解析部により特定された前記単位領域ごとに、前記単位領域に含まれる部分の図形を切り取るクリッピング部と、を備える
    ことを特徴とする画像描画装置。
  4. 描画指示に基づいて描画される第1図形のそれぞれから、出力装置に前記第1図形を含む画像を出力する単位である単位領域ごとに、前記単位領域に含まれる部分の図形を切取部により切り取り、
    前記単位領域ごとに、前記切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成部により生成し、
    前記単位領域ごとに生成された前記コマンドに基づいて前記第2図形のそれぞれを描画部により描画する、
    ことを特徴とする画像描画方法。
  5. 描画指示に基づいて描画される第1図形のそれぞれから、出力装置に前記第1図形を含む画像を出力する単位である単位領域ごとに、前記単位領域に含まれる部分の図形を切り取る切取部と、
    前記単位領域ごとに、前記切取部により切り取られた図形のそれぞれを分割することで得られる少なくとも1つの第2図形を描画するコマンドを生成する生成部と、
    前記単位領域ごとに生成された前記コマンドに基づいて前記第2図形のそれぞれを描画する描画部と、
    を含む画像描画装置と、
    前記画像描画装置に前記描画指示を出力する制御装置と、
    前記第1図形の頂点を示す情報と、前記単位領域の境界を示す情報とを格納する記憶装置と、
    を備えることを特徴とする画像描画システム。
JP2014108677A 2014-05-27 2014-05-27 画像描画装置、画像描画方法および画像描画システム Pending JP2015225421A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014108677A JP2015225421A (ja) 2014-05-27 2014-05-27 画像描画装置、画像描画方法および画像描画システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014108677A JP2015225421A (ja) 2014-05-27 2014-05-27 画像描画装置、画像描画方法および画像描画システム

Publications (1)

Publication Number Publication Date
JP2015225421A true JP2015225421A (ja) 2015-12-14

Family

ID=54842131

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014108677A Pending JP2015225421A (ja) 2014-05-27 2014-05-27 画像描画装置、画像描画方法および画像描画システム

Country Status (1)

Country Link
JP (1) JP2015225421A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021068290A (ja) * 2019-10-25 2021-04-30 住友重機械工業株式会社 三角形要素分割方法、モデル化装置、プログラム、及び二次元平面図形を定義するデータ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021068290A (ja) * 2019-10-25 2021-04-30 住友重機械工業株式会社 三角形要素分割方法、モデル化装置、プログラム、及び二次元平面図形を定義するデータ
JP7339846B2 (ja) 2019-10-25 2023-09-06 住友重機械工業株式会社 モデル化装置及びプログラム

Similar Documents

Publication Publication Date Title
EP3129973B1 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
KR102116708B1 (ko) 그래픽스 프로세싱 유닛
JP5336067B2 (ja) グラフィックスを処理する方法および装置
JP5596938B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP2007241878A (ja) 描画装置、描画方法及び描画プログラム
US6975318B2 (en) Polygon binning process for tile-based rendering
JP2016110655A (ja) レンダリング方法及びその装置
JP2005352657A (ja) 描画処理装置、描画処理方法、及び描画処理プログラム
JP6385406B2 (ja) 画像処理装置、画像処理方法、及びプログラム
JP5067501B2 (ja) 多色ベクトル画像処理装置および方法
JPH11102446A (ja) グラフィックス入力装置
JP2010146255A (ja) ベクトル図形描画装置
JP2015225421A (ja) 画像描画装置、画像描画方法および画像描画システム
JP2003091737A (ja) 描画処理装置、描画処理プログラムを記録した記録媒体、描画処理プログラム、描画処理方法
JPH09231385A (ja) オブジェクトのラスタ化方法及び装置
JP5304443B2 (ja) 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
JP2005332195A (ja) テクスチャユニット、画像描画装置、テクセル転送方法
JP4691494B2 (ja) 画像描画装置、頂点選出方法、頂点選出プログラム及び集積回路
JP2007122188A (ja) 画像形成装置及び画像処理方法、並びにプログラム
JP6361267B2 (ja) 画像処理装置
JP2012098951A (ja) 図形描画処理装置、図形描画処理方法、及びコンピュータプログラム
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
JP2010238110A (ja) 画像処理装置、画像処理方法および画像処理プログラム
US10755468B2 (en) Image processing apparatus, image processing method, and program to improve speed for calculating a color of pixels in image data
JP2006113909A (ja) 画像処理装置、画像処理方法及び画像処理プログラム