JP3899977B2 - 描画装置、方法及びプログラム - Google Patents
描画装置、方法及びプログラム Download PDFInfo
- Publication number
- JP3899977B2 JP3899977B2 JP2002091856A JP2002091856A JP3899977B2 JP 3899977 B2 JP3899977 B2 JP 3899977B2 JP 2002091856 A JP2002091856 A JP 2002091856A JP 2002091856 A JP2002091856 A JP 2002091856A JP 3899977 B2 JP3899977 B2 JP 3899977B2
- Authority
- JP
- Japan
- Prior art keywords
- sprite
- bit string
- data
- address
- mask
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、スプライトをフレームメモリ上に描画する描画装置、方法及び描画装置におけるコンピュータが実行するプログラムに関するものである。
【0002】
【従来の技術】
図13はフレームバッファ(フレームメモリ)上に二次元スプライトを描画する従来の描画装置を概略的に示すブロック図である。尚、スプライト(sprite)とは、例えばコンピュータゲームのアニメーション等で用いられる絵の単位であり、通常は矩形で、その中に絵が描かれ、周囲が透明なバックグラウンドとなっている。
【0003】
図13において、スプライトバッファAからスプライトデータを読み出し、二次元描画エンジン10により拡大、縮小、回転等の処理をして、フレームバッファ20に書き込む。この間にスプライトバッファBに次のスプライトデータを書き込み、スプライトバッファAの読み出しが終了すると、スプライトバッファBを読み出してそのスプライトデータを二次元描画エンジン10に供給する。スプライトバッファAにはさらに次のスプライトデータの書き込みが行われる。このようにして、スプライトバッファA,Bに交互にスプライトデータの書き込みと読み出しが行われ、読み出されたスプライトデータは二次元描画エンジン10で処理された後、フレームバッファ20に書き込まれていく。フレームバッファ20から読み出されたスプライトデータは、表示装置に送られて表示される。
【0004】
フレームバッファ20には、最も後ろに存在するスプライトの書き込みから開始し、順次に他のスプライトを重ねながら最も前面に存在するスプライトの書き込みまでが行われる。この書き込みのプライオリティは、予め別に設けられたアトリビュートテーブル(図示せず)に書き込まれており、このテーブルを参照することで決定している。
【0005】
【発明が解決しようとする課題】
上述した従来の描画装置においては、アトリビュートテーブルを参照することにより、図14に示すように、背景となるスプライトAが先に書き込まれ、その上にスプライトBが書き込まれる。この場合、スプライトAとBが重なった斜線の部分は二度描画されることになり、そのための消費電力や処理・時間が無駄となっていた。
【0006】
本発明は上記の問題を解決するためになされたもので、二次元で定義されるスプライトを、視点に近いものから順に書き込むことにより、視点から遠いところにあるスプライトの重なった部分の書き込みを省き、書き込み時間のオーバーヘッド、消費電力を低減し、効率的な描画を行えるようにすることを目的としている。
【0007】
【課題を解決するための手段】
上記の目的を達成するために、本発明による描画装置は、所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画装置において、複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライト領域のピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力する検出手段と、前記フレームメモリの各アドレスにデータが書き込まれたことを記憶するマスクメモリと、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記第3のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画する書き込み制御手段とを設けたものである。
【0008】
また、本発明による描画方法は、所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画方法において、複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライト領域のピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力し、前記フレームメモリの各アドレスにデータが書き込まれたことをマスクメモリに記憶し、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記第3のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画するようにしたものである。
【0009】
また、本発明によるプログラムは、所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画装置で用いられるプログラムであって、複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライト領域のピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力する検出処理と、前記フレームメモリの各アドレスにデータが書き込まれたことをマスクメモリに記憶する記憶処理と、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力する演算処理と、この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記第3のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画する描画処理とをコンピュータに実行させるためのプログラムである。
【0010】
【作用】
従って、本発明によれば、ライン毎に順次入力されるスプライトデータについて、各ライン上のピクセルを複数個毎にブロック化し、ラインについて各ブロック内の個々のピクセルがスプライト領域のピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力すると共に、前記フレームメモリの各アドレスにデータが書き込まれたことをマスクメモリに記憶し、マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、この第3のビット列に基づいてフレームメモリへのスプライトデータの書き込みを制御すると共に、第3のビット列を用いてマスクメモリを更新することにより、フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画し、この処理をスプライト毎に繰り返すことにより、フレームメモリ上の前面から奥に向かって二度書きすることなく、複数のスプライトを順次重ねて描画することができる。
【0011】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図1は本発明の実施の形態による描画装置を示すブロック図である。
図1において、本実施の形態は、図13の二次元描画エンジン10とフレームバッファ20との間にマスク演算装置30を設けたものである。マスク演算装置30は、フレームバッファ20のピクセル(画素)に既にスプライトの書き込みがあるか否かを判定するマスクメモリを内蔵し、このマスクメモリを書き込みの際に参照することにより、無駄な書き込みを省くためのものである。
【0012】
図2はマスク演算装置30の構成を示すブロック図である。
マスク演算装置30は、入力レジスタであるY レジスタ31、XRレジスタ32、XLレジスタ33と、XL_S カウンタ34、XL_B カウンタ35、COLOR レジスタ36、COLOR セレクタ37、BG_COLOR レジスタ38(BGはバックグラウンドを示す)と、マスク発生装置39、マスクメモリ40、書き込み制御装置41とから構成される。
【0013】
次に、二次元描画エンジン10について図3を参照して説明する。
図3において、スプライト1は図示のように矩形を有し、実際に表示されるスプライト1aと透明なバックグラウンド1bからなる。二次元描画エンジン10は、このスプライト1に対して拡大、縮小、回転等の変換処理を行い、実際に描画するフレームバッファ20上のアドレスを計算してマスク演算装置30に出力する。即ち、図示のように、各スキャンラインを示すY 座標(Y1,Y2,Y3,Y4 ---)と、スプライト1の領域の左側の座標XL(XL1,XL2,XL3,XL4 ---) と、右側の座標XR(XR1,XR2,XR3,XR4 ---) を計算し、アドレスとして出力する。各アドレスは、図2のマスク演算装置30における入力レジスタとしてのY レジスタ31、XRレジスタ32、XLレジスタ33に入力される。
【0014】
次に、本発明の第1の実施の形態によるフレームメモリとしてのフレームバッファ20及びマスクメモリ40の構成について図4(a)を参照して説明する。
図示のように、フレームバッファ20、マスクメモり40は、スキャンラインごとに、セクタ、ブロック、ピクセル(画素)、ビット(1画素のビット数)により階層的に構造化されている。1ラインは2h 個のセクタから構成され、1セクタは2k 個のブロックから構成され、1ブロックは2m 個のピクセルから構成され、1ピクセルは2n 個のビットから構成される。1ブロックは、フレームバッファ20のデータバス幅に相当する。
図示の例では、1ピクセル=16ビット(n=4)、1ブロック=8ピクセル(m=3)、1セクタ=4ブロック(k=2)=4×8ピクセル=4×8×16ビットとしている。従って、1ラインは2のh+k+m+n乗個のビットで構成されている。
【0015】
次に、図2のマスク演算装置30における入力レジスタ等について説明する。
図2において、二次元描画エンジン10からは、各アドレスY, XL,XR、及びXLとXRとの間に存在するピクセルデータが送られてくる。XLとXRとの間に存在するピクセルデータは、1セクタごとにCOLOR レジスタ36に書き込まれる。また、Y はY レジスタ31に、XRはXRレジスタ32に書き込まれる。XLはXLレジスタ33に書き込まれた後、XL_S,XL_B の2つに分割される。 XL_S はセクタアドレスを示し、XL_B はブロックアドレスを示し、それぞれXL_S カウンタ34、XL_B カウンタ35に書き込まれる。
図4(b)のようにh+k+m+n ビットを表現した場合に、[y:x] は図4(c)で示すビットを表すものとすると、XL、XRがh+k+m+n ビットの場合、XLはXL_S[h+k+m+n-1:k+m+n]と、XL_B[k+m+n-1:m+n]とに分解される。 XL_S カウンタ34、XL_B カウンタ35には、XLの初期値の対応するセクタ及びブロックがそれぞれロードされる。
【0016】
1ブロックの処理が終了すると、XL_B カウンタ35はインクリメントされる。また、 XE_B カウンタ35が1つのセクタの終了まで達すると、XL_B カウンタ35がインクリメントされると共に、XL_S カウンタ34もインクリメントされる。XLとXRを比較し、両者の値が等しくなるとそのラインの処理を終了する。比較はマスク発生装置39で行われる。
【0017】
次に、マスク演算装置30における他のレジスタ及びカウンタ等について説明する。
図2において、BG_COLOR レジスタ38は、スプライト1のバックグラウンド1bとなるカラーデータ(透明)をストアする。COLOR レジスタ36は、二次元描画エンジン10からの1セクタ分のスプライトのカラーデータ(ピクセルデータ)を保持する。後述する図6にも示すように、セクタが更新されるに従って新たなセクタのカラーデータがストアされる。また、COLOR セレクタ37は、COLOR レジスタ36にストアされた1セクタ分のカラーデータから、1ブロックのカラーデータをブロックの左側から順に抽出して出力する。ブロックアドレスが更新されると、それに対応したブロックのカラーデータがXL_B カウンタ35の出力に応じて選択され、出力される。
【0018】
図2においては、フレームバッファ20にアクセスするためのY アドレス、セクタアドレス、ブロックアドレスが、Y レジスタ31、XL_S カウンタ34、XL_B カウンタ35から供給されているが、ピクセルアドレスは供給されていない。これは、書き込み制御装置41からの後述するPRC_MSK パターンによりフレームバッファ20への書き込みを制御するためである。即ち、上記PRC_MSK により選択されたピクセルデータがフレームバッファ20に書き込まれるためである。
【0019】
図5は上記のことを説明するためのもので、図2のマスク演算装置30の要部を示している。
図5において、フレームバッファ20には、XL_S カウンタ34からセクタアドレスが、XL_B カウンタ35からブロックアドレスが供給されている。また、図において説明されるように、ピクセルアドレスは不要となっている。
【0020】
次に、本発明の第1の実施の形態によるマスク発生装置39について説明する。図6はマスク発生装置39の構成を示すブロック図である。
マスク発生装置39は、マスク演算装置30におけるXRレジスタ32、XLレジスタ33、XL_S カウンタ34、XL_B カウンタ35、COLOR セレクタ37、BG_COLOR レジスタ38の出力から、1ブロック内で、スプライトが可視である(即ち、バックグラウンドではない)ピクセルを検出し、検出結果を0又は1のビット列として出力する。0がバックグラウンド、1がスプライト内で可視であることを示す。
【0021】
図6において、セクタスタートアドレス比較器42は、XL_ SとXLのセクタアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。
ブロックスタートアドレス比較器43は、XL_B とXLのブロックアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。
AND回路44で、セクタスタートアドレス比較器42とブロックスタートアドレス比較器43の各出力の論理積をとることで、スタートフラグを出力する。
【0022】
セクタエンドアドレス比較器45は、XL_S とXRのセクタアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。ブロックエンドアドレス比較器46は、XL_B とXRのブロックアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。
AND回路47で、セクタエンドアドレス比較器45とブロックエンドアドレス比較器46の各出力の論理積をとることで、エンドフラグを出力する。
【0023】
2m 個のピクセルデータ比較器48〜50は、COLOR セレクタ37から入力された1ブロック内の各ピクセルカラーデータと、バックグラウンドに指定されているカラーデータを比較し、そのピクセルがバックグラウンドカラーと同じであるかどうかを調べる。ピクセルのカラーがバックグラウンドカラーと等しいときは0、そうでないときは1をBGN_MSK として出力する。即ち、 BGN_MSK ビットで0で示されるピクセルは、バックグラウンドカラーとなる。尚、スプライト領域外のデータとしてはバックグラウンドカラーが入力される。
【0024】
カレントマスク計算装置51は、現在入力されているブロックのうち、バックグラウンドでないピクセルを検出する。まず、ブロック内に存在するピクセルを、1ピクセルが1ビットのマスクパターンPAT_MASKとして求める。マスクパターンPAT_MSK はブロック内のピクセル数に等しく、2m ビットとなる。
PAT_MSK の計算には、マスク発生装置39からの上記スタートフラグ、エンドフラグ、XLレジスタ33のピクセルアドレス部分であるXL[m+n-1:n] 、XRレジスタ32のピクセルアドレス部分であるXR[m+n-1:n] が用いられる。
【0025】
m=3とした場合の1ブロック内のマスクパターンPAT_MSK の例を図7(a)〜(d)に示す。図において、
(a)スタートフラグ=1、エンドフラグ=0の場合、XLのスタートアドレス有するピクセルがブロック内に存在する。
(b)スタートフラグ=0、エンドフラグ=1の場合、XRのエンドアドレス有するピクセルがブロック内に存在する。
(c)スタートフラグ=1、エンドフラグ=1の場合、XLのスタートアドレス、XRのエンドアドレスを有するピクセルがともにブロック内に存在する。
(d)スタートフラグ=0、エンドフラグ=0の場合、XLのスタートアドレス、XRのエンドアドレスを有するピクセルはともにブロック内に存在しない。
これらは一例を示すものであり、XR,XL のデータの値により色々なデータに変わり得る。一般に表1のようになる。
【0026】
【表1】
【0027】
上記のようにして計算されたPAT_MSK と、2m 個のピクセルデータ比較器48〜50の出力BGN_MSK との論理積を取ることで、カレントパターンCRN_MSKを計算する。即ち、
CRN_MSK =PAT_MSK &BGN_MSK となる。
【0028】
次に、マスクメモリ40と書き込み制御装置41について図8を参照して説明する。
マスクメモリ40は、フレームバッファ20と同様のアドレスY 、セクタアドレスXL_S 、ブロックアドレスXL_B でアクセスされるメモリであり、データ幅が2m ビット、1ビットで1ピクセルを表す。
マスクメモリ40は表示期間の最初にすべて0にクリアされる。0はその対応するフレームバッファ20にまだスプライトが書き込まれていないことを示す。スプライトデータが書き込まれると、1が書き込まれる。
【0029】
新しいブロックデータが入力されると、マスクメモリ40から該当するブロックのマスクパターンOLD_MSK が読み出される。 OLD_MSK は、以前にそのブロック内のピクセルに書き込みがあったかどうかを示している。 OLD_MSK は書き込み制御装置41に送られ、ここで新しいブロックのカレントパターンCRN_MSKを参照する。
【0030】
書き込み制御装置41では、CRN_MSK とOLD_MSK との論理和を求めることで、新たに書き込まれたピクセルに対応するビットをNEW_MSK として、マスクメモリ40の OLD_MSK に上書きする形で書き込み保存する。CRN_MSK から OLD_MSK を参照して既に書き込まれているビットを取り除いた部分が、新たに入力されたブロックデータに寄与するピクセルとなり、それをプロセスパターンPRC_MSK のビット列として計算する。即ち、
NEW_MSK =CRN_MSK |OLD_MSK
PRC_MSK =CRN_MSK &!OLD_MSK
である。尚、|は論理和、&は論理積、!はビットの反転を意味する。
書き込み制御装置41は、このPRC_MSK に基づいてスプライトデータのフレームバッファ20への書き込みを制御する。
【0031】
もし、PRC_MSK がすべて0であれば、そのブロックは既にプライオリテイの高いスプライトによって描画済みであるので書き込む必要はない。その場合は次のブロックの処理に移る。もし、一つでもPRC_MSK が1であれば、対応するピクセルがフレームバッファ20に書き込まれる。
【0032】
次に、フレームバッファ20について説明する。
フレームバッファ20は、1ブロック内のピクセル毎に書き込みが制御可能な構成とする。 PRC_MSK がフレームバッファ20の書き込みを制御する。
【0033】
次に、上記構成による動作について図9を参照して説明する。
図9のように、あるスキャンラインjにおいて、スプライト1の下にスプライト2を描画する場合について説明する。図示のように、スプライト1、2は横に細長い矩形であり、スプライト2がスプライト1より大きい。
XL_1 は、スプライト1の外形(矩形)の左側のX座標であり、XLS_1 は、スプライト1のバックグラウンドがなくなるX座標である。XRS_1 は、スプライト1のバックグラウンドが始まるX座標であり、XR_1 は、スプライト1の外形の右側のX座標である。同様に、XL_2 は、スプライト2の外形(矩形)の左側のX座標であり、XLS_2 は、スプライト2のバックグラウンドがなくなるX座標である。 XRS_2 は、スプライト2のバックグラウンドが始まるX座標であり、XR_2 は、スプライト2の外形の右側のX座標である。
【0034】
ここでは、1ブロックが8ピクセルよりなり、1セクタが4ブロックからなる場合について説明する。
まず、アトリビュートテーブルを参照することにより、スプライト1がスプライト2よりも前面にあることがわかる。従って、二次元描画エンジン10により、まずスプライト1の処理から開始される。
【0035】
以下、処理順序に従って説明する。
・スプライト1、セクタi、ブロック0の処理
二次元描画エンジン10から、スキャンラインj,XR_1 ,XL_1 の座標がマスク演算装置30に送られ、それぞれ、Y レジスタ31、XRレジスタ32、XLレジスタ33にストアされる。同時に、セクタ内の最初のピクセルデータが、COLOR レジスタ36にストアされる。図示のようにスプライト1は1セクタ内に収まるため、全てのピクセルデータがCOLOR レジスタ36にストアされる。
【0036】
次に、XL_S カウンタ34、XL_B カウンタ35に、XL_1 のセクタアドレス、ブロックアドレス部分がロードされる。このとき、スタートフラグ=1、エンドフラグ=0であり、最初のブロックであることがわかる。従って、スプライト1のブロック0のPAT_MSKは、
PAT_MSK =0000 1111となる。尚、スプライト領域外のデータはバックグラウンドカラーであるので、スプライト領域外のデータがバックグラウンドカラーでない場合には、このようなデータにはならない。
【0037】
XL_1 からXLS_1 の間はバックグラウンドである。このため、2m 個のピクセルデータ比較器48〜50から出力されるBGN_MSK は、
BGN_MSK =0000 0000
また、マスクメモリ40はクリアされているため、
OLD_MSK =0000 0000となる。そして、
CRN_MSK = PAT_MSK & BGN_MSK
NEW_MSK = CRN_MSK |OLD_MSK
PRC_MSK = CRN_MSK & !OLD_MSKが計算される。この計算による各マスクデータを表2に示す。
【0038】
【表2】
【0039】
これにより、ブロック0内には描画すべきピクセルが存在しないことがわかる。この場合は、XL_B カウンタ35がインクリメントされ、すぐに次のブロックの処理に移る。
【0040】
・スプライト1、セクタi、ブロック1の処理
次のブロック1では、スタートフラグ=0かつエンドフラグ=0である。この場合の各マスクデータは表3に示す通りとなる。
【0041】
【表3】
【0042】
NEW_MSK は、マスクメモリ40から読み出されたアドレスに書き込まれ、マスクメモリ40が更新される。 PRC_MSK に対応したピクセルデータがフレームバッファ20に書き込まれる。
【0043】
・スプライト1、セクタi、ブロック2の処理
ブロック2も同様となる。各マスクデータは、表4に示す通りである。
【0044】
【表4】
【0045】
・スプライト1、セクタi、ブロック3の処理
ブロック3の場合、スタートフラグ=0、エンドフラグ=1となる。従って、 XRS_1 とXR_1 との間はバックグラウンドとなる。各マスクデータは、表5に示す通りである。
【0046】
【表5】
【0047】
NEW_MSK は、読み出されたアドレスに書き込まれ、マスクメモリ40が更新される。 PRC_MSK に対応したピクセルデータがフレームバッファ20に書き込まれる。
以上の処理を繰り返して、スプライト1に関連する全てのスキャンラインの処理が終了した後、スプライト2の処理が開始される。
【0048】
スプライト2が、スキャンラインjの処理に達した場合を考える。
スキャンラインj に対応するマスクメモリ40には、スプライト1の処理により既に表6に示す値が書き込まれている。
【0049】
【表6】
【0050】
・スプライト2、セクタi−1、ブロック3の処理
二次元描画エンジン10から、スキャンラインj、XR_2 、XL_2 、の座標がマスク演算装置30に送られ、Y レジスタ31、XRレジスタ32、XLレジスタ33にストアされる。
スプライト2の最初のセクタ及びブロックは、セクタi−1となり、ブロック3となる。XL_2 からXLS_2 の間はバックグラウンドとなる。スプライト2のセクタi−1のデータがCOLOR レジスタ36にロードされる。各マスクデータは、表7の通りである。
【0051】
【表7】
【0052】
フレームバッファ20への書き込み後、XL_B カウンタ35をインクリメントしその結果0となるので、XL_S カウンタ34がインクリメントされ、次のセクタであるセクタi、ブロック0の処理に移る。
【0053】
・スプライト2、セクタi、ブロック0の処理
スプライト2のセクタiのデータがCOLOR レジスタ36にロードされる。各マスクデータは表8の通りである。
【0054】
【表8】
【0055】
マスクメモリ40が更新される。 PRC_MSK に対応したピクセルデータがフレームバッファ20に書き込まれる。その後、ブロックがインクリメントされ、次のブロック1の処理に移る。
【0056】
・スプライト2、セクタi、ブロック1の処理
セクタi、ブロック1は、スプライト1処理時にマスクメモリ40が更新されている。それを読み出し、さらに更新して書き込む。各マスクデータは表9の通りである。
【0057】
【表9】
【0058】
この場合、PRC_MSK はすべて0となる。従って、フレームバッファ20への書き込みは行われず、すぐに次のブロックの処理に移ることができる。
【0059】
・スプライト2、セクタi、ブロック2の処理
セクタi、ブロック2は、セクタi、ブロック1と同様に、スプライト1の処理時にマスクメモリ40が更新されている。それを読み出し、さらに更新して書き込む。各マスクデータは表10の通りである。
【0060】
【表10】
【0061】
この場合も、ブロック1と同様に、PRC_MSK はすべて0となる。従って、フレームバッファ20への書き込みが行われず、すぐに次のブロックの処理に移ることができる。
【0062】
・スプライト2、セクタi、ブロック3の処理
スプライト2のセクタi、ブロック3内にあるXRS_2 からXR_2 まではバックグラウンドとなる。各マスクデータは表11の通りである。
【0063】
【表11】
【0064】
PRC_MSK の1 の部分が、スプライト2のデータとなる。
スプライト2のピクセルのうち、この部分のみがフレームバッファ20に書き込まれる。
【0065】
・スプライト2、セクタi+1、ブロック0の処理
各マスクデータは、表12の通りである。
【0066】
【表12】
【0067】
セクタi+1、ブロック0には、スプライト2の寄与がないことがわかる。従って、次のラインj+1の処理に移ることができる。
以上の結果、マスクメモリ40は、スプライト1とスプライト2とにより、表13に示すように更新されたことになる。
【0068】
【表13】
【0069】
以上述べた処理を、トッププライオリティのスプライトから順次繰り返すことにより、既に書き込まれているピクセルに対して上書きが行われることをなくし、スプライトをフレームバッファ上に高速に展開することが可能となる。また、消費電力も削減することができる。
【0070】
次に、本発明の第2の実施の形態について説明する。
上述した第1の実施の形態は、図4のように1ラインをセクタ、ブロック、ピクセル、ビットの4段の階層構造とし、ブロック単位に処理を行う場合であるが、本実施の形態は、図10のようにブロックを省略して3段の階層構造とし、セクタ単位に処理を行う場合である。
図10においては、1ラインを2h セクタ、1セクタを2k ピクセル(k=2として4ピクセル)、1ピクセル=2n (n=2)ビットとしている。
【0071】
図11は第2の実施の形態によるマスク発生装置39を示す。
図11において、図6におけるブロックアドレスは1セクタ内のピクセルアドレスに対応する。マスクビットは2k 個のピクセルに対応する。また、図6におけるCOLOR セレクタ37は省略される。
セクタスタートアドレス比較器52は、XL_ SとXLのセクタアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。ピクセルスタートアドレス比較器53は、XL_B でピクセルアドレスがカウントアップされるものとした場合、XL_B とXLのピクセルアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。
AND回路54で、セクタスタートアドレス比較器52とピクセルスタートアドレス比較器53の各出力の論理積とることで、スタートフラグを出力する。
【0072】
セクタエンドアドレス比較器55は、XL_S とXRのセクタアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。ピクセルエンドアドレス比較器56は、XL_B とXRのピクセルアドレスを比較し、アドレスが等しいときは1、そうでないときは0を出力する。
AND回路57で、セクタエンドアドレス比較器55とピクセルエンドアドレス比較器56の各出力の論理積をとることで、エンドフラグを出力する。
【0073】
2k 個のピクセルデータ比較器58〜60は、1セクタ内の各ピクセルカラーデータと、バックグラウンドに指定されているカラーデータを比較し、そのピクセルがバックグラウンドカラーと同じであるかどうかを調べる。ピクセルのカラーがバックグラウンドカラーと等しいときは0、そうでないときは1をBGN_MSKとして出力する。即ち、 BGN_MSK ビットで0で示されるピクセルは、バックグラウンドカラーとなる。
【0074】
カレントマスク計算装置61は、現在入力されているセクタのうち、バックグラウンドでないピクセルを検出する。まず、セクタ内に存在するピクセルを、1ピクセルが1ビットのマスクパターンPAT_MSK として求める。マスクパターンPAT_MSK はセクタ内のピクセル数に等しく、2k ビットとなる。
PAT_MSK の計算には、マスク発生装置39からの上記スタートフラグ、エンドフラグ、XLレジスタ33のピクセルアドレス部分、XRレジスタ32のピクセルアドレス部分が用いられる。
【0075】
図12は、h=6、k=2、n=2とした場合のマスク発生装置39の構成例を示すブロック図であり、図11と対応する部分には同一番号を付して重複する説明は省略する。尚、ピクセルデータ比較器は58〜60、62が図示されている。
【0076】
以上説明したように本発明の実施の形態は、
PAT_MSK :スプライトデータの存在ビットを表示
BGN_MSK :バックグラウンド領域のビット(の反転ビット)を表示するものとし、
CRN_MSK :対象スプライトでの表示すべきビットを示す)とすると、
CRN_MSK =PAT_MSK & BGN_MSKで示される。
【0077】
請求項1の記載においては、
第1のビット列=CRN_MSK
第2のビット列=OLD_MSK
である。そして、
NEW_MSK=OLD_MSK |CRN_MSK
となって、このNEW_MSK により新たにマスクメモリに書き込れる。この際、OLD_MSK が記憶されていたアドレスに上書きされて保存される。
【0078】
また、OLD_MSK の反転ビット列!OLD_MSK は、未描画ビット列を示すが
CRN_MSK |!OLD_MSK により、新たに追加描画すべきエリア(ビット)が判明するので、
第3のビット列=PRC_MSK(=CRN_MSK |!OLD_MSK )
を用いてフレームメモリへスプライトデータの書き込みを行う。
【0079】
従って、本実施の形態のポイントは、
・フレームメモリの表示エリアに対応するマスクメモリを設け、
・フレームメモリにデータが書き込まれたことをマスクメモリ上にフラグを立てて記憶しておき、
・フラグが立っている場合は、フレームメモリの対応するアドレスにはデータを書き込まない。
と言う点にある。
また、スプライトデータは、表示画面上で手前に表示されるべきデータから順に奥に向かって描画処理に転送されることを前提条件にしている。
【0080】
尚、本発明における各請求項の記載における「ブロック」は、第1の実施の形態における「ブロック」、及び第2の実施の形態における「セクタ」と等価であるものとする。
【0081】
次に、本発明の実施の形態によるプログラムについて説明する。
本発明による描画装置をソフトウェア構成とする場合、前述した各処理を、描画装置のコンピュータシステムにおけるCPUが実行するためのプログラムは、本発明によるプログラムを構成する。
【0082】
このプログラムの記録媒体としては、光磁気ディスク、光ディスク、半導体メモリ、磁気記録媒体等を用いることができ、これらをROM、RAM、CD−ROM、フレキシブルディスク、メモリカード等に構成して用いてよい。またこの記録媒体は、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部のRAM等の揮発性メモリのように、一定時間プログラムを保持するものも含まれる。
【0083】
また上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータシステムに伝送されるものであってもよい。上記伝送媒体とは、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体をいうものとする。
【0084】
また、上記プログラムは、前述した機能の一部を実現するためであってもよい。さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0085】
従って、この記録媒体を図1のシステム又は装置とは異なるシステム又は装置において用い、そのシステム又は装置のコンピュータがこの記録媒体に格納されたプログラムを実行することによっても、各実施の形態で説明した機能及び効果と同等の機能及び効果を得ることができ、本発明の目的を達成することができる。
【0086】
【発明の効果】
以上説明したように本発明によれば、トッププライオリティに従って各スプライトを表示画面の手前から奥に向かって順にブロック毎にフレームメモリに書き込み、その際、書き込みのあったブロックの個々のピクセルについてマスクメモリにフラグを立て、次のデータを書き込む際、マスクメモリのフラグを調べ、既に書き込みのあったブロック内のピクセルについては、フレームメモリのそのピクセルに上書きをしないため、無駄な書き込みがなく高速に処理することができ、消費電力等を削減することができる。
【図面の簡単な説明】
【図1】 本発明の実施の形態による描画装置を示すブロック図である。
【図2】 マスク演算装置を示すブロック図である。
【図3】 二次描画エンジンを説明する構成図である。
【図4】 フレームバッファ、マスクメモリの第1の実施の形態による階層構造及びデータの構成を示す構成図である。
【図5】 図2を捕捉説明するためのマスク発生装置の要部を示すブロック図である。
【図6】 第1の実施の形態によるマスク発生装置を示すブロック図である。
【図7】 マスク発生装置におけるスタートフラグとエンドフラグを示す構成図である。
【図8】 マスクメモリと書き込み制御装置を示すブロック図である。
【図9】 二つのスプライトを重ねて描画する例を示す構成図である。
【図10】 フレームバッファ、マスクメモリの第2の実施の形態による階層構造を示す構成図である。
【図11】 第2の実施の形態によるマスク発生装置を示すブロック図である。
【図12】 図11の具体的な構成例を示すブロック図である。
【図13】 従来の描画装置を示すブロック図である。
【図14】 従来の描画装置により二つのスプライトを重ねて描画する場合を説明するための構成図である。
【符号の説明】
1、2:スプライト、1a:表示されるスプライト、1b:バックグラウンド、10:二次元描画エンジン、20:フレームバッファ、30:マスク演算装置、31:Y レジスタ、32:XRレジスタ、33:XLレジスタ、34:XL_S カウンタ、35:XL_B カウンタ、36:COLOR レジスタ、37:COLOR セレクタ、38:BG_COLOR レジスタ、39:マスク発生装置、40:マスクメモリ、41:書き込み制御装置
Claims (6)
- 所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画装置において、
複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライトの表示される領域に対応したピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力する検出手段と、
前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが既に書き込まれていることを第2のビット列として記憶するマスクメモリと、
前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが書き込まれているか否かを示す第4のビット列を出力し、この第4のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画する書き込み制御手段とを設けたことを特徴とする描画装置。 - 入力されるスプライトデータに対して所定の変換処理を施し、処理されたスプライトデータを、そのスプライト領域のライン上のアドレスと共に前記検出手段に供給する二次元描画エンジンを設け、前記検出手段は、前記アドレスに基づいて前記検出を行うことを特徴とする請求項1記載の描画装置。
- 所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画方法において、
複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライトの表示される領域に対応したピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力し、
前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが既に書き込まれていることを第2のビット列としてマスクメモリに記憶し、
前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、
この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが書き込まれているか否かを示す第4のビット列を出力し、この第4のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画することを特徴とする描画方法。 - 二次元描画エンジンを用いて入力されるスプライトデータに対して所定の変換処理を施し、処理されたスプライトデータとそのスプライト領域のライン上のアドレスとを得、このアドレスに基づいて前記検出を行うことを特徴とする請求項3記載の描画方法。
- 所定形状を有するスプライトをフレームメモリへライン毎に書き込む描画装置で用いられるプログラムであって、
複数のスプライトデータが順次ライン毎に入力されると共に、各ライン上のピクセルを複数個ごとにブロック化し、入力されたラインについて各ブロック内の個々のピクセルがスプライトの表示される領域に対応したピクセルであるか否かを検出し、検出結果を各ピクセル毎に1ビットで表した第1のビット列を出力する検出処理と、
前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが書き込まれていることを第2のビット列としてマスクメモリに記憶する記憶処理と、
前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより新たにフレームメモリに書き込むべきビット情報を示す第3のビット列を出力し、この第3のビット列に基づいて前記フレームメモリへのスプライトデータの書き込みを制御すると共に、前記マスクメモリから読み出した第2のビット列と前記第1のビット列とを演算することにより前記フレームメモリの各アドレスにスプライトの表示される領域に対応したデータが書き込まれているか否かを示す第4のビット列を出力し、この第4のビット列を用いて前記マスクメモリを更新することにより、前記フレームメモリ上の前面に表示されるものから奥に表示されるものに向かって順次複数のスプライトを重ねて描画する書き込み制御処理と
をコンピュータに実行させるためのプログラム。 - 入力されるスプライトデータに対して所定の変換処理を施し、処理されたスプライトデータを、そのスプライト領域のライン上のアドレスと共に前記検出処理に供給する二次元描画エンジン処理を設け、前記アドレスに基づいて前記検出処理を行うことを特徴とする請求項5記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002091856A JP3899977B2 (ja) | 2002-03-28 | 2002-03-28 | 描画装置、方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002091856A JP3899977B2 (ja) | 2002-03-28 | 2002-03-28 | 描画装置、方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003288073A JP2003288073A (ja) | 2003-10-10 |
JP3899977B2 true JP3899977B2 (ja) | 2007-03-28 |
Family
ID=29236841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002091856A Expired - Fee Related JP3899977B2 (ja) | 2002-03-28 | 2002-03-28 | 描画装置、方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3899977B2 (ja) |
-
2002
- 2002-03-28 JP JP2002091856A patent/JP3899977B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2003288073A (ja) | 2003-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3761085B2 (ja) | 画像処理装置及びその構成部品、レンダリング処理方法 | |
JP2621568B2 (ja) | 図形描画方法およびその装置 | |
JP3645024B2 (ja) | 描画装置及び描画方法 | |
JP2882465B2 (ja) | 画像生成方法およびその装置 | |
US6441818B1 (en) | Image processing apparatus and method of same | |
JP3899977B2 (ja) | 描画装置、方法及びプログラム | |
EP1139294A2 (en) | Graphical image system and apparatus | |
JP3110975B2 (ja) | 文字マスク機能付表示装置 | |
KR100393305B1 (ko) | 컴퓨터 판독 가능 기록 매체, 묘화 방법 및 그래픽 묘화장치 | |
JP3154741B2 (ja) | 画像処理装置及びその方式 | |
JPH06149533A (ja) | 表示領域外セグメントの描画処理を削減したセグメント高速描画方式 | |
JP2005025254A (ja) | コンピュータグラフィックス描画装置 | |
JP4408152B2 (ja) | テクスチャマッピング方法及びテクスチャマッピング装置 | |
CN110223369B (zh) | Tbr架构的帧缓存写回方法、装置及计算机存储介质 | |
JP3688765B2 (ja) | 描画方法およびグラフィックス装置 | |
JP3971448B2 (ja) | 描画装置及び描画方法 | |
JPH1021415A (ja) | 図形処理装置並びに図形処理方法 | |
US6489967B1 (en) | Image formation apparatus and image formation method | |
JPH0588838A (ja) | マルチウインドウ表示装置 | |
JP4482996B2 (ja) | データ記憶装置とその方法および画像処理装置 | |
JP2001109911A (ja) | 3次元図形表示方法および装置 | |
JP4596678B2 (ja) | 線分描画装置 | |
JP3934111B2 (ja) | 描画装置及び描画方法 | |
JP3721951B2 (ja) | 画像生成方法及び装置 | |
JP2606176B2 (ja) | 図形処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040924 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060201 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060606 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060905 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061106 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061218 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313532 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110112 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120112 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130112 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140112 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |