JP2003288073A - 描画装置、方法及びプログラム - Google Patents

描画装置、方法及びプログラム

Info

Publication number
JP2003288073A
JP2003288073A JP2002091856A JP2002091856A JP2003288073A JP 2003288073 A JP2003288073 A JP 2003288073A JP 2002091856 A JP2002091856 A JP 2002091856A JP 2002091856 A JP2002091856 A JP 2002091856A JP 2003288073 A JP2003288073 A JP 2003288073A
Authority
JP
Japan
Prior art keywords
sprite
bit string
line
pixel
data
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.)
Granted
Application number
JP2002091856A
Other languages
English (en)
Other versions
JP3899977B2 (ja
Inventor
Yasuhiro Enomoto
保宏 榎本
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.)
Yamaha Corp
Original Assignee
Yamaha Corp
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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2002091856A priority Critical patent/JP3899977B2/ja
Publication of JP2003288073A publication Critical patent/JP2003288073A/ja
Application granted granted Critical
Publication of JP3899977B2 publication Critical patent/JP3899977B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 フレームメモリに複数のスプライトを重ねて
書き込む場合に二度書きすることなく高速に処理し、消
費電力を削減する。 【解決手段】 スプライト1、2を重ねて書き込む場
合、従来と逆に手前のスプライト1を書き込み、その後
ろにスプライト2を書き込む。スキャンラインjにおい
て、8個のピクセルを1ブロックとする。スプライト1
はアドレスXL_ 1〜XRS_1 がスプライト2はXLS_2 〜
XRS_2 が表示部分であり、他の部分は透明である。ま
た、ピクセルごとに1ビットが書き込まれるマスクメモ
リを用意する。ブロック内の各ピクセルについてスプラ
イト1の表示部分か否かを検出し、検出結果を各ピクセ
ルごとに1ビットで表したビット列を出力し、このビッ
ト列とマスクメモリのビット列を演算したビット列を
得、このビット列を用いてスプライトデータのフレーム
メモリへの書き込みを制御すると共にマスクメモリを更
新する。スプライト2にも同様に行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、スプライトをフレ
ームメモリ上に描画する描画装置、方法及び描画装置に
おけるコンピュータが実行するプログラムに関するもの
である。
【0002】
【従来の技術】図13はフレームバッファ(フレームメ
モリ)上に二次元スプライトを描画する従来の描画装置
を概略的に示すブロック図である。尚、スプライト(sp
rite)とは、例えばコンピュータゲームのアニメーショ
ン等で用いられる絵の単位であり、通常は矩形で、その
中に絵が描かれ、周囲が透明なバックグラウンドとなっ
ている。
【0003】図13において、スプライトバッファAか
らスプライトデータを読み出し、二次元描画エンジン1
0により拡大、縮小、回転等の処理をして、フレームバ
ッファ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は、フレームバッファ2
0のピクセル(画素)に既にスプライトの書き込みがあ
るか否かを判定するマスクメモリを内蔵し、このマスク
メモリを書き込みの際に参照することにより、無駄な書
き込みを省くためのものである。
【0012】図2はマスク演算装置30の構成を示すブ
ロック図である。マスク演算装置30は、入力レジスタ
であるY レジスタ31、XRレジスタ32、XLレジスタ3
3と、XL_S カウンタ34、XL_B カウンタ35、COLO
R レジスタ36、COLOR セレクタ37、BG_COLOR レジ
スタ38(BGはバックグラウンドを示す)と、マスク発
生装置39、マスクメモリ40、書き込み制御装置41
とから構成される。
【0013】次に、二次元描画エンジン10について図
3を参照して説明する。図3において、スプライト1は
図示のように矩形を有し、実際に表示されるスプライト
1aと透明なバックグラウンド1bからなる。二次元描
画エンジン10は、このスプライト1に対して拡大、縮
小、回転等の変換処理を行い、実際に描画するフレーム
バッファ20上のアドレスを計算してマスク演算装置3
0に出力する。即ち、図示のように、各スキャンライン
を示す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 カウンタ3
4、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レジスタ3
2、XLレジスタ33、XL_S カウンタ34、XL_B カウ
ンタ35、COLOR セレクタ37、BG_COLOR レジスタ3
8の出力から、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_MAS
Kとして求める。マスクパターンPAT_MSK はブロック内
のピクセル数に等しく、2m ビットとなる。PAT_MSK
の計算には、マスク発生装置39からの上記スタートフ
ラグ、エンドフラグ、XLレジスタ33のピクセルアドレ
ス部分であるXL[m+n-1:n] 、XRレジスタ32のピクセル
アドレス部分であるXR[m+n-1:n] が用いられる。
【0025】m=3とした場合の1ブロック内のマスク
パターンPTN_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】上記のようにして計算されたPTN_MSK
と、2m 個のピクセルデータ比較器48〜50の出力BG
N_MSK との論理積を取ることで、カレントパターンCRN
_MSKを計算する。即ち、CRN_MSK =PTN_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 とO
LD_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レジスタ3
3にストアされる。同時に、セクタ内の最初のピクセル
データが、COLOR レジスタ36にストアされる。図示の
ようにスプライト1は1セクタ内に収まるため、全ての
ピクセルデータがCOLOR レジスタ36にストアされる。
【0036】次に、XL_S カウンタ34、XL_B カウン
タ35に、XL_1 のセクタアドレス、ブロックアドレス
部分がロードされる。このとき、スタートフラグ=1、
エンドフラグ=0であり、最初のブロックであることが
わかる。従って、スプライト1のブロック0のPTN_MSK
は、 PTN_MSK =0000 1111 となる。尚、スプライト領域外のデータはバックグラウ
ンドカラーであるので、スプライト領域外のデータがバ
ックグラウンドカラーでない場合には、このようなデー
タにはならない。
【0037】XL_1 からXLS_1 の間はバックグラウン
ドである。このため、2m 個のピクセルデータ比較器4
8〜50から出力されるBGN_MSK は、 BGN_MSK =0000 0000 また、マスクメモリ40はクリアされているため、 OLD_MSK =0000 0000 となる。そして、 CRN_MSK = PTN_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_MS
K に対応したピクセルデータがフレームバッファ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_M
SK はすべて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】以上説明したように本発明の実施の形態
は、 PTN_MSK :スプライトデータの存在ビットを表示 BGN_MSK :バックグラウンド領域のビット(の反転ビ
ット)を表示するものとし、 CRN_MSK :対象スプライトでの表示すべきビットを示
す) とすると、 CRN_MSK =PTN_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_MS
K は、未描画ビット列を示すがCRN_MSK |!OLD_MSK
により、新たに追加描画すべきエリア(ビット)が判明
するので、 第3のビット列=PRC_MS(=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:表示されるスプライト、1
b:バックグラウンド、10:二次元描画エンジン、2
0:フレームバッファ、30:マスク演算装置、31:
Y レジスタ、32:XRレジスタ、33:XLレジスタ、3
4:XL_S カウンタ、35:XL_B カウンタ、36:CO
LOR レジスタ、37:COLOR セレクタ、38:BG_COLO
R レジスタ、39:マスク発生装置、40:マスクメモ
リ、41:書き込み制御装置

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 所定形状を有するスプライトをフレーム
    メモリへライン毎に書き込む描画装置において、 複数のスプライトデータが順次ライン毎に入力されると
    共に、各ライン上のピクセルを複数個ごとにブロック化
    し、入力されたラインについて各ブロック内の個々のピ
    クセルがスプライト領域のピクセルであるか否かを検出
    し、検出結果を各ピクセル毎に1ビットで表した第1の
    ビット列を出力する検出手段と、 前記フレームメモリの各アドレスにデータが書き込まれ
    たことを記憶するマスクメモリと、 前記マスクメモリから読み出した第2のビット列と前記
    第1のビット列とを演算することにより新たにフレーム
    メモリに書き込むべきビット情報を示す第3のビット列
    を出力し、この第3のビット列に基づいて前記フレーム
    メモリへのスプライトデータの書き込みを制御すると共
    に、前記第3のビット列を用いて前記マスクメモリを更
    新することにより、前記フレームメモリ上の前面に表示
    されるものから奥に表示されるものに向かって順次複数
    のスプライトを重ねて描画する書き込み制御手段とを設
    けたことを特徴とする描画装置。
  2. 【請求項2】 前記スプライトは、表示される領域とバ
    ックグラウンド領域とを有し、前記第1のビット列は表
    示される領域についてのものであることを特徴とする請
    求項1記載の描画装置。
  3. 【請求項3】 入力されるスプライトデータに対して所
    定の変換処理を施し、処理されたスプライトデータを、
    そのスプライト領域のライン上のアドレスと共に前記検
    出手段に供給する二次元描画エンジンを設け、前記検出
    手段は、前記アドレスに基づいて前記検出を行うことを
    特徴とする請求項1又は2記載の描画装置。
  4. 【請求項4】 所定形状を有するスプライトをフレーム
    メモリへライン毎に書き込む描画方法において、 複数のスプライトデータが順次ライン毎に入力されると
    共に、各ライン上のピクセルを複数個ごとにブロック化
    し、入力されたラインについて各ブロック内の個々のピ
    クセルがスプライト領域のピクセルであるか否かを検出
    し、検出結果を各ピクセル毎に1ビットで表した第1の
    ビット列を出力し、 前記フレームメモリの各アドレスにデータが書き込まれ
    たことをマスクメモリに記憶し、 前記マスクメモリから読み出した第2のビット列と前記
    第1のビット列とを演算することにより新たにフレーム
    メモリに書き込むべきビット情報を示す第3のビット列
    を出力し、 この第3のビット列に基づいて前記フレームメモリへの
    スプライトデータの書き込みを制御すると共に、前記第
    3のビット列を用いて前記マスクメモリを更新すること
    により、前記フレームメモリ上の前面に表示されるもの
    から奥に表示されるものに向かって順次複数のスプライ
    トを重ねて描画することを特徴とする描画方法。
  5. 【請求項5】 前記スプライトは、表示される領域とバ
    ックグラウンド領域とを有し、前記第1のビット列は表
    示される領域についてのものであることを特徴とする請
    求項4記載の描画方法。
  6. 【請求項6】 二次元描画エンジンを用いて入力される
    スプライトデータに対して所定の変換処理を施し、処理
    されたスプライトデータとそのスプライト領域のライン
    上のアドレスとを得、このアドレスに基づいて前記検出
    を行うことを特徴とする請求項4又は5記載の描画方
    法。
  7. 【請求項7】 所定形状を有するスプライトをフレーム
    メモリへライン毎に書き込む描画装置で用いられるプロ
    グラムであって、 複数のスプライトデータが順次ライン毎に入力されると
    共に、各ライン上のピクセルを複数個ごとにブロック化
    し、入力されたラインについて各ブロック内の個々のピ
    クセルがスプライト領域のピクセルであるか否かを検出
    し、検出結果を各ピクセル毎に1ビットで表した第1の
    ビット列を出力する検出処理と、 前記フレームメモリの各アドレスにデータが書き込まれ
    たことをマスクメモリに記憶する記憶処理と、 前記マスクメモリから読み出した第2のビット列と前記
    第1のビット列とを演算することにより新たにフレーム
    メモリに書き込むべきビット情報を示す第3のビット列
    を出力する演算処理と、 この第3のビット列に基づいて前記フレームメモリへの
    スプライトデータの書き込みを制御すると共に、前記第
    3のビット列を用いて前記マスクメモリを更新すること
    により、前記フレームメモリ上の前面に表示されるもの
    から奥に表示されるものに向かって順次複数のスプライ
    トを重ねて描画する描画処理とをコンピュータに実行さ
    せるためのプログラム。
  8. 【請求項8】 前記スプライトは、表示される領域とバ
    ックグラウンド領域とを有し、前記第1のビット列は表
    示される領域についてのものであることを特徴とする請
    求項7記載のプログラム。
  9. 【請求項9】 入力されるスプライトデータに対して所
    定の変換処理を施し、処理されたスプライトデータを、
    そのスプライト領域のライン上のアドレスと共に前記検
    出処理に供給する二次元描画エンジン処理を設け、前記
    アドレスに基づいて前記検出処理を行うことを特徴とす
    る請求項7又は8記載のプログラム。
JP2002091856A 2002-03-28 2002-03-28 描画装置、方法及びプログラム Expired - Fee Related JP3899977B2 (ja)

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 true JP2003288073A (ja) 2003-10-10
JP3899977B2 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)

Also Published As

Publication number Publication date
JP3899977B2 (ja) 2007-03-28

Similar Documents

Publication Publication Date Title
JP3645024B2 (ja) 描画装置及び描画方法
JP4061697B2 (ja) 画像表示方法及びそれを実行する画像表示装置
JP2976945B2 (ja) 画像描画装置
JPH11161819A (ja) 画像処理装置、画像処理方法、及び画像処理プログラムを記録した記録媒体
JP4827659B2 (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JP2001126086A (ja) ビデオゲームにおける立体モデル表示方法及び装置、ゲーム装置並びにビデオゲーム用立体モデル表示プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2001084396A (ja) レンダリング方法及び装置、ゲーム装置、並びに立体モデルをレンダリングするためのプログラムを格納したコンピュータ読み取り可能な記録媒体
JP2003288073A (ja) 描画装置、方法及びプログラム
JP3490983B2 (ja) 画像処理方法及び画像処理用プログラム
JP3110975B2 (ja) 文字マスク機能付表示装置
JP2000057365A (ja) 3次元グラフィックス描画装置
JP3027777B2 (ja) コンピュータグラフィクスにおける描画装置および描画方法
JP2005025254A (ja) コンピュータグラフィックス描画装置
JP2002196878A (ja) 記録媒体、画像処理装置および方法
JP3721951B2 (ja) 画像生成方法及び装置
JP2001109911A (ja) 3次元図形表示方法および装置
TW449729B (en) Effective test ahead method and structure for Z buffer in 3D graphics
JP3545935B2 (ja) 画像の生成・表示方法及びこの方法を記録した記録媒体
JP3311905B2 (ja) 画像処理装置
JP3638999B2 (ja) 画像データ作成装置
JP2000076480A (ja) 画像生成装置、画像生成方法および記憶媒体
JP4596678B2 (ja) 線分描画装置
JP2773458B2 (ja) ベクトル制御装置
JP5669199B2 (ja) 画像描画装置、画像描画方法、及びプログラム
JP2000029788A (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