(57)【要約】【課題】ＣＰＵに多大な処理負担をかけることなく任意の境界図形を基準とした図形の描き分けを実現すること。【解決手段】画像処理装置１００は、外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標の２次元座標にて特定される画素と、画素ごとの深度値とが設定された図形データを取得すると、取得された図形データが境界図形に指定されていた場合、図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値をｘ座標の値ごとに抽出し、抽出された深度値を１Ｄ深度バッファ１２０のｘ座標の値ごとに書き込む。その後、あらたな図形データが読み込まれると、この図形データに含まれる任意の画素の深度値と、１Ｄ深度バッファ１２０におけるｘ座標の値ごとに書き込まれている深度値の中の同一のｘ座標の値に書き込まれている深度値とを比較し、比較結果に応じて図形データを描画するか否かを判断する。【選択図】図１
2009288990.tif 000002
【特許請求の範囲】
【請求項１】
ラインバッファと、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得手段と、
前記取得手段によって取得された図形データを描画する描画手段と、
前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出手段と、
前記抽出手段によって抽出された深度値を前記ラインバッファにおけるｘ座標の値ごとに書き込む書込手段と、
前記書込手段によって前記ラインバッファに深度値が書き込まれた後、前記取得手段によって、あらたな描画対象図形の頂点データから生成された図形データが読み込まれると、当該図形データに含まれる任意の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較手段と、
前記比較手段の比較結果に応じて前記描画手段による前記あらたな描画対象図形の頂点データから生成された図形データの描画を禁止する描画制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記抽出手段は、前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のｙ座標が最小となる画素に設定されている深度値を前記ｘ座標の値ごとに抽出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記描画制御手段は、前記比較手段によって、前記ラインバッファに書き込まれている深度値がより小さいと判断された場合に、前記描画手段による前記あらたな図形データの描画を禁止することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記描画手段は、前記取得手段によって取得された図形データが境界図形に指定されていた場合、前記比較手段による比較結果を無効にして前記図形データを描画することを特徴とする請求項１〜３のいずれか一つに記載の画像処理装置。
【請求項５】
ラインバッファにアクセス可能なコンピュータを、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得手段、
前記取得手段によって取得された図形データを描画する描画手段、
前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出手段、
前記抽出手段によって抽出された深度値を前記ラインバッファにおけるｘ座標の値ごとに書き込む書込手段、
前記書込手段によって前記ラインバッファに深度値が書き込まれた後、前記取得手段によって、あらたな描画対象図形の頂点データから生成された図形データに含まれる任意の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較手段、
前記比較手段の比較結果に応じて前記あらたな描画対象図形の頂点データから生成された図形データを描画させないように前記描画手段を制御する描画制御手段、
として機能させることを特徴とする画像処理プログラム。
【請求項６】
画像処理装置が、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得工程と、
前記取得工程にて境界図形に指定された図形データが取得された場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出工程と、
前記抽出工程によって抽出された深度値をラインバッファにおけるｘ座標の値ごとに書き込む書込工程と、
前記境界図形に指定された図形データを描画する境界描画工程と、
前記取得工程にて境界図形に指定されていない図形データが取得された場合、当該境界図形に指定されていない図形データに含まれる任意の画素の深度値と、前記ラインバッファに書き込まれているｘ座標ごとの深度値の中から前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較工程と、
前記比較工程による比較結果に応じて、前記境界図形に指定されていない図形データを描画する図形描画工程と、
を実行することを特徴とする画像処理方法。
【請求項７】
描画データに含まれる第１図形データの各画素位置において、前記各画素位置に対応する第１深度値を第１軸方向に拡張して記憶し、
前記第１図形データの第２軸方向の画素位置と前記描画データに含まれる第２図形データの前記第２軸方向の所定の画素位置とを対応付け、
対応付けられた画素位置において、前記第１図形データの前記第１深度値と前記第２図形データの第２深度値とを比較し、
前記第１深度値と前記第２深度値とを比較した結果に応じて、前記第２図形データを描画するか否かを判定することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、３次元画像を描画するための画像処理装置、画像処理プログラムおよび画像処理方法に関する。
【背景技術】
【０００２】
従来より、カーナビゲーションシステムや、ゲームコンソールなどでは、即時的に画像を描画するリアルタイムグラフィックスシステムが適用されている。特に近年のリアルタイムグラフィックスシステムでは、地図描画アプリケーションのように、真上から垂直に見下ろした２次元的な道路表示だけでなく、運転者による視点、あるいは、鳥瞰視点からの３次元的な道路表示と、３次元的なビル表示を組み合わせた、写実的な表現を実現する機能が要求されることが多くなった。
【０００３】
ところが、従来のリアルタイムグラフィックスシステムによって３次元地図描画をおこなう場合、通常の３次元画像のコンピューターグラフィックスの手法をそのまま適用しても利用者の所望する品質の画像描写は期待できなかった。たとえば、経路誘導すべき道路が手前のビルの陰に隠れてしまってナビゲーションとしての機能を果たせなかったり、視点に近いビルが前方クリップ面で切断されて断面が見えてしまったり、といった不都合が生じることが多かった。
【０００４】
そこで、手前のビルを描画した上で隠された道路をビルの上から上書きしたり、ビルが道路を隠した部分だけビルを半透明で描画したりすることにより、表示すべき道路が隠蔽されるのを防ぐ技術が開示されている（たとえば、下記特許文献１、２参照。）。また、経路誘導の目的で着目する道路を境界線として、その境界線よりも奥に建っているビルのみ立体的に描画し、境界線より手前のビルは立体的には描画しないといった描き分けをおこなう技術も提供されている。
【０００５】
【特許文献１】特開２００７−２６２０１号公報
【特許文献２】特許第３３５１７６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したような従来技術を利用したとしても、境界線となる道路（以下、「境界道路」という）の前後でビルを描き分ける場合には多くの問題が発生していた。たとえば、上述したように手前の建物や物体によって陰になってしまう面（以下、「陰面」という）を消去するには、陰面を検出して描画しないようにグラフィックＬＳＩに指示する隠面消去処理が必要となる。この陰面消去処理には、奥行き方向（Ｚ軸方向）に関する情報を蓄積する深度バッファを用いた深度テストにより実現される。
【０００７】
しかしながら、一般的なグラフィックスＬＳＩの構成では深度バッファは１セットしか実装されていないため、境界道路による描き分けはハードウェアでアシストできない。上述のような描き分けをハードウェアによって実行するためには、２セットの深度バッファが必要となる。さらに、用意した２セットのバッファは、それぞれの深度比較結果を適切に組み合わせなければならず、実装が難しいという問題があった。
【０００８】
一方、上述のようにハードウェア資源に依存せずにソフトウェア処理によって陰面消去処理をおこなうこともできる。しかしながら、ソフトウェア処理によって隠面消去処理をおこなう場合には、ナビゲーションシステムのアプリケーションプログラムにおいてアルゴリズムを実装し、ＣＰＵ上で深度バッファに相当する処理を実行させる必要がある。したがって、ソフトウェア処理によって隠面消去処理を実現するにはＣＰＵの処理負担が大きく、大幅な性能低下の原因となるという問題があった。
【０００９】
この発明は、上述した従来技術による問題点を解消するため、ＣＰＵに多大な処理負担をかけることなく任意の境界図形を基準とした図形の描き分けを実現する画像処理装置、画像処理プログラムおよび画像処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、この画像処理装置、画像処理プログラムおよび画像処理方法は、ラインバッファにアクセス可能な装置によって実現され、外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する処理と、取得された図形データを描画する処理と、取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する処理と、抽出された深度値を前記ラインバッファにおけるｘ座標の値ごとに書き込む処理と、前記ラインバッファに深度値が書き込まれた後、あらたな描画対象図形の頂点データから生成された図形データが読み込まれると、当該図形データに含まれる任意の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する処理と、比較結果に応じて前記あらたな描画対象図形の頂点データから生成された図形データの描画を禁止する処理と、を含むことを要件とする。
【００１１】
この画像処理装置、画像処理プログラムおよび画像処理方法によれば、メモリ容量の少ないラインバッファに境界図形の深度値を書き込み、他の図形データを構成する画素の深度値と比較することによって、他の図形データが境界図形の手前に位置するか、奥に位置するかに応じて描き分けることができる。
【発明の効果】
【００１２】
この画像処理装置、画像処理プログラムおよび画像処理方法によれば、ＣＰＵに多大な処理負担をかけることなく任意の境界図形を基準とした図形の描き分けを実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、画像処理装置、画像処理プログラムおよび画像処理方法の好適な実施の形態を詳細に説明する。この画像処理装置、画像処理プログラムおよび画像処理方法では、１次元のラインバッファをあらたに深度バッファとして追加し、この深度バッファを用いて、任意の境界図形を基準として描画する図形か、描画しない（消去する）図形かの判断をおこなって描画させたい図形のみを選別して描画させることができる。
【００１４】
（画像処理の概要）
まず、本実施の形態にかかる画像処理の概要について説明する。図１は、本実施の形態にかかる画像処理の概要を示す説明図である。本実施の形態にかかる画像処理装置１００は、描画処理部１１０と、１Ｄ深度バッファ１２０と、２Ｄ深度バッファ１３０と、フレームバッファ１４０とを備えている。これら各機能部は、具体的には、グラフィックスＬＳＩやグラフィックスメモリによって実現される。
【００１５】
描画処理部１１０は、外部から描画対象図形の頂点データが入力されると、画素データを生成し（ステップＳ１１１）、描画判断をおこない（ステップＳ１１２）、判断結果に応じて画素データを描画する（ステップＳ１１３）。
【００１６】
上述のステップＳ１１２の描画判断では大別して２種類の判断がおこなわれる。１つめの判断は、１Ｄ深度バッファ１２０と、画素データとの深度比較による境界道路の手前か奥かの判断処理である。１Ｄ深度バッファ１２０には、境界道路の横方向の深度値が書き込まれている。この判断によって境界道路の手前に位置すると判断された場合には、その画素データは境界道路を遮蔽してしまうため、フレームバッファ１４０に描画されない。一方、境界道路の奥に位置すると判断された場合には、その画素データに対しては、つぎに説明する２つめの判断がおこなわれる。
【００１７】
２つめの判断は、２Ｄ深度バッファ１３０と、境界道路の奥にあると判断された画素データとの深度比較による陰面消去に関する判断処理である。２Ｄ深度バッファ１３０には、すでにフレームバッファ１４０に描画されている画素データの深度値が書き込まれている。この判断によってすでにフレームバッファ１４０に描画されている画素データよりも手前に位置すれば描画する画素データとして判断され、奥に位置すれば陰面に位置するため描画しない画素データと判断される。
【００１８】
ステップＳ１１３では、ステップＳ１１２よって描画すると判断された画素データを描画し、フレームバッファ１４０に書き込む。フレームバッファ１４０に書き込まれた画素データはディスプレイなどの出力機器１５０に出力されることによって画像として表示される。
【００１９】
上述したように、本実施の形態では、１Ｄ深度バッファ１２０を用いて境界道路との深度比較をおこなうことによって、ハードウェア面の構成が容易であり、なおかつ、ソフトウェア面でＣＰＵへの処理負担の少ない画像処理を実現する。この１Ｄ深度バッファ１２０の構成は、本実施の形態独自のものである。したがって、以下１Ｄ深度バッファ１２０について説明する。
【００２０】
図２は、グラフィックスＬＳＩによる地図画像の描画例を示す説明図である。グラフィックスＬＳＩは、入力された画像データ（たとえば、地図画像）に含まれている図形の頂点データに応じて画素データを生成し、描画例２００のように描画する。描画例２００の場合、画像データは地図画像であり、図形情報として建築物や道路をあらわす頂点データが含まれている。
【００２１】
描画例２００に描画されている道路のいずれかを境界道路に設定した場合は、この境界道路を基準として手前に位置する図形か、奥に位置する図形かを判断する。そして、手前に位置する図形は描画されず、奥に位置する図形のみ描画される。
【００２２】
ここで、仮に陰面消去用の２Ｄ深度バッファ１３０と同じ構成の２Ｄ深度バッファ１３０を追加した場合の構成について説明する。従来にも、２Ｄ深度バッファが２セット実装された画像処理装置（たとえば、特開平３−２６９６８７）は提供されていた。この描画処理装置では、２セットの２Ｄ深度バッファ１３０を用いることによって３次元ＣＡＤで物体の切断面を描画することができるため、境界道路を基準としたビルの手前か奥かの選別にも応用できる。しかしながら、実際には２Ｄ深度バッファ１３０を２セット使用しただけでは多くの問題が生じてしまう。
【００２３】
まず、第１の問題としては、あらたな２Ｄ深度バッファ１３０が追加された分、２Ｄ深度バッファ１３０相当のソフトウェア処理を軽減できる一方で、追加された２Ｄ深度バッファ１３０へのメモリアクセスが必要となる点が挙げられる。この問題によって、２Ｄ深度バッファ１３０が１セットの構成と比べた場合に、追加となる性能ペナルティがあらたに発生してしまう。
【００２４】
また、第２の問題として、２Ｄ深度バッファ１３０として利用するためのメモリ領域が２倍必要になり、結果としてリソースを逼迫してしまう点が挙げられる。２Ｄ深度バッファを複数実装する場合には必然的に同じ問題に直面する。したがって、３セット以上の多面深度バッファを実装した構成は現実的ではないことがわかる。
【００２５】
また、第３の問題として、境界道路の深度値をそのまま２Ｄ深度バッファ１３０に書き込んだとしても、境界道路を挟んでのビルの選別はできない場合がある点が挙げられる。図３は、境界道路を含んだ描画例を示す模式図である。図３のように、描画例３００には境界道路３０１が含まれているとする。この描画例３００にさらに建築物をあらわす図形を描画する場合に、境界道路３０１の深度値が書き込まれた２Ｄ深度バッファ１３０に基づいて、手前か奥かを判断しなければならない。
【００２６】
しかしながら、たとえば、建築物をあらわす図形データ３０２を描画する場合、境界道路３０１と重複していない部分では、比較する２Ｄ深度バッファ１３０の深度値が記録されていないため、境界道路３０１の手前か奥かが判断できない。この問題の対応策として深度値が反映された境界道路３０１を壁のように天地方向に引き伸ばして、判断基準面を用意する必要がある。
【００２７】
図４は、判断基準面の一例を示す模式図である。図４のような判断基準面４００を用いれば、境界道路３０１を基準とした手前か奥かの判断が可能となる。ところが、判断基準面４００を用意するためには、具体的には境界道路用の深度バッファに境界道路３０１の深度値を書き込む際に、境界道路３０１自身の画素座標だけでなく、同じｘ座標を持ち深度バッファ上で上下に並んだ画素にも、同じ深度値を書き込む処理が必要となる。この処理は、上記の第１の問題で指摘した性能ペナルティをも上回るメモリアクセスを発生させ、グラフィックスＬＳＩの処理速度を大きく低下させてしまう。
【００２８】
さらに、第４の問題として、画素データを描画する際の視点がある程度上空に設定されているような場合、すなわち、地表面を深い角度で見下ろすような鳥瞰条件の場合、上述したような判断基準面４００を用意したとしても手前か奥かの判断が破綻してしまう可能性が高い点が挙げられる。
【００２９】
図５は、鳥瞰視点の地図画像描画時の描き分け判断処理を示す説明図である。図５の視点５０１から建築物５０２を見下ろした画像を描画する際、境界道路３０１の幅よりもビルの高さの方が大きい場合、建築物５０２の上層部が判断基準面によってあらわされた深度を突き破ってしまう。したがって、境界道路３０１の幅よりもビルの高さの方が大きい場合には、天地方向に深度値の傾斜を持つような、傾いた判断基準面４００を用意する必要がある。すなわち、判断基準面４００の傾斜の大きさと、判断基準面４００の上端あるいは下端での深度値とを、演算により別途求めなければならず、処理負担が増加してしまう。
【００３０】
このように、境界道路３０１を挟んで手前か奥かの判断をおこなうための深度バッファとして、２Ｄ深度バッファ１３０を単純に追加しても効率的に描画処理を実現することはできない。そこで、本実施の形態では、１次元のラインバッファである１Ｄ深度バッファ１２０を追加する。
【００３１】
１Ｄ深度バッファ１２０は、境界道路３０１を構成する画素データのうち、横方向の深度値の変化のみを記憶する。このような構成にすることにより、図４、５にて説明した判断基準面４００を用意する必要性が排除され、性能ペナルティを抑制することができる。このとき、境界道路３０１自体は３次元空間を２次元画面に投影した図形を持つ。
【００３２】
ここで、図６は、１Ｄ深度バッファの構成を示す説明図である。図６の上段の２次元座標図６００は、境界道路３０１を構成する図形６０１を構成する画素の一部をあらわしている。図形６０１の各画素素には、深度値Ｚ（Ｚ０〜Ｚ２２）が設定されている。このように、図形６０１を構成する画素はｘ，ｙ座標値（横方向と縦方向）に加えてｚ軸（奥行き方向）の座標値も含む。したがって、本来であれば、境界道路３０１の深度値を記録するには、２次元座標図６００のように、ｘ，ｙ座標値単位で深度値を記録できなければならなかった。
【００３３】
そこで、今回あらたに追加する１Ｄ深度バッファ１２０は、２次元情報を１次元情報に適切に縮退させるために、ｘ軸方向のｘ座標の値ごとに１つの深度値のみを記録するように処理する。したがって、１Ｄ深度バッファ１２０のように、ｘ座標が同じ値の画素データであれば、ｙ座標の値にかかわらず同じ深度値として扱われる。
【００３４】
ここで、２次元情報を１次元情報へ適切に縮退する手法としては、幾つかの手法が用いられる。最も簡易なものとしては、図形６０１の画素のｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値をランダムに抽出して、１Ｄ深度バッファ１２０に書き込めばよい。これは、境界道路３０１上に描画する建築物が存在しないことを利用している。すなわち、どのような建築物であっても、必ず境界道路３０１を構成する画素の手前か奥に位置するため、判断が破綻することはない。
【００３５】
また、上述のように、境界道路３０１の画素のｘ座標の値が同じ画素列の中のいずれか一つを抽出する処理が、ハードウェア構成上、もしくは、ソフトウェアのプログラム上難しいようであれば、指定したルールにしたがって抽出する処理にしてもよい。たとえば、図６では、ｘ座標の値が同じ画素列の中のｙ座標が最小となる画素に設定されている深度値を抽出している。これと反対に、ｘ座標の値が同じ画素列の中のｙ座標が最大となる画素に設定されている深度値を抽出してもよい。あるいは、深度比較を有効にしてｘ座標の値が同じ画素列の中の最小深度値が最終的に上書きされず残るようにしてもよい（下記の実施の形態１，２ではこの抽出手法を採用した例を説明する）。なお、ここでは、一例としてｘ座標の値が同じ画素列をひとまとめにして画素を集約しているが、境界道路３０１の描画例によっては、ｙ座標の値が同じ画素列をひとまとめにして画素を集約してもよい。
【００３６】
そして、境界道路３０１を描画後、さらに、３Ｄビルなどの建築物を地図画像に描画する場合、境界道路３０１と描画対象となる建築物との深度比較をおこなう。その際には、建築物の任意の２次元座標の画素、たとえば［ｘ１，ｙ１］に設定されている深度値Ｚと、１Ｄ深度バッファ１２０に記録されている［ｘ１］の深度値Ｚとを比較する。すなわち、１Ｄ深度バッファ１２０に記録されている１次元の座標値を同じくする２次元の座標値に拡張して比較していることになる。
【００３７】
また、陰面消去処理などで用いられる従来の一般的な深度比較は、描画対象画素の深度値と深度バッファの対応座標の深度値との比較であった。すなわち、描画対象図形の頂点座標から図形を構成する画素を算出した後におこなう処理であった。これに対して本実施の形態では、描画対象図形の頂点座標から図形を構成する画素を算出する前段、すなわち、頂点座標の深度値と深度バッファの対応座標の深度値との深度比較をおこなう処理として提供できる。このように、ビル底面部の頂点（相当の画素）に設定されている深度値を利用することによって、描画処理の初期段階にて深度比較がおこなえる。したがって、効率的に建築物全体を描画するか否かを判断することができる。また、描画しないと判断された場合は、描画の初期段階でキャンセルされるため、無駄な描画処理を未然に防ぐことができる。
【００３８】
また、１Ｄ深度バッファ１２０を境界道路３０１の深度値として、描画対象図形となる建築物の頂点座標の深度値を比較することによって、図５にて説明した問題も発生しない。さらに、上述のように頂点における深度値と、境界道路３０１の深度値を深度比較することにより、画素レベルでの深度比較よりも圧倒的に比較回数を削減でき、画像処理性能を大幅に向上させることができる。
【００３９】
なお、３Ｄビルを描画するか否かを選別する境界道路として、複数の道路を組み合わせるような場合も、１Ｄ深度バッファ１２０を複数用意し、それぞれの境界道路用に割り当てればよい。そして、それぞれの１Ｄ深度バッファ１２０からの深度比較結果を、論理和や論理積などによって合成することにより、複合的な深度境界を構築することができる。このとき、２Ｄ深度バッファ１３０と比較して１Ｄ深度バッファ１２０をあらたに構成する場合のメモリ容量は極小で済むため、容易に実現可能となる。
【００４０】
なぜならば、境界道路用の１Ｄ深度バッファ１２０は、通常の２Ｄ深度バッファ１３０に対して数百分の一の画素数に対応した深度値が記録できるメモリ容量しか必要としない。したがって、複数の１Ｄ深度バッファ１２０をグラフィックスＬＳＩ上に混載することは十分に実現可能である。また、１Ｄ深度バッファ１２０を複数搭載するのであれば、グラフィックスＬＳＩ上のメモリ資源で実現できるため外部メモリを利用する必要もない。これは、外部メモリへのアクセスの排除を意味し、従来からのグラフィックスメモリバンド幅を逼迫せずに済むことを意味する。
【００４１】
また、従来の陰面消去処理の際の２Ｄ深度バッファ１２０を用いた深度比較処理では、深度比較を有効にした場合に書込みマスクによって２Ｄ深度バッファ１３０やフレームバッファ１４０の更新を禁止する機能は存在した。しかしながら、２Ｄ深度バッファ１３０とフレームバッファ１４０との双方の深度比較が実行された場合に、フレームバッファ１４０のみの深度比較を無効にする機能は存在しなかった。結果として、深度比較結果を反映したバッファについての更新はおこなわれるが、フレームバッファ１４０では、深度比較結果を無視して無条件に図形を書き込むような処理を実行することはできなかった。
【００４２】
本実施の形態にて求められるような境界道路を基準とした建築物の描き分けをおこなう場合には、上述のようにフレームバッファ１４０に対して深度比較結果を無視して無条件に図形を書き込むような処理が必要となる。１Ｄ深度バッファ１２０は、１次元座標の値ごとの深度値を持ち、フレームバッファ１４０は２次元座標の値ごとの深度値を持つ。すなわち対応関係が１対多数となる。そのため、たとえば、まずｘ座標方向の値がｘ１、ｙ座標方向の値がｙ１の画素を描画し、つぎにｘ座標方向の値がｘ１、ｙ座標方向の値がｙ２の画素を描画するときに、ｙ１の深度値がｙ２の深度値よりも小さければ、１Ｄ深度バッファ１２０上での深度比較によって描画しないと判断されてしまい、フレームバッファ１４０に描画されなくなってしまう。したがって、本実施の形態にかかる画像処理装置１００では、境界道路３０１のように陰面消去処理を必要としない描画対象に関しては、フレームバッファ１４０に限って深度比較を無効化するように制御する機能を搭載する。
【００４３】
このように、本実施の形態にかかる画像処理装置１００の描画処理では、メモリ容量の少ないラインバッファに境界図形の深度値を書き込み、他の図形データを構成する画素の深度値と比較することによって、他の図形データが境界図形の手前に位置するか、奥に位置するかに応じて描き分けることができる。したがって、ＣＰＵに多大な処理負担をかけることなく任意の境界図形を基準とした図形の描き分けを実現することができる。
【００４４】
つぎに、上述した画像処理を実現するための具体的な構成について説明する。図１では、画像処理装置１００の構成を簡易的に示したが、具体的な構成としては以下に説明するような例が挙げられる。
【００４５】
＜汎用の情報処理装置による構成例＞
まず、１つめの構成例としては、汎用の情報処理装置にて図１のハードウェア資源を用いて図１にて説明した画像処理を実現する構成が挙げられる。汎用の情報処理装置を画像処理装置１００として利用する場合、汎用の情報処理装置のＣＰＵによって図１の描画処理部１１０相当の処理を実行する機能部を構成する。また、汎用の情報処理装置に搭載されたメモリ領域に１Ｄ深度バッファ１２０、２Ｄ深度バッファ１３０およびフレームバッファ１４０をそれぞれ構成する。
【００４６】
（画像処理装置のハードウェア構成）
図７−１は、実施の形態にかかる画像処理装置のハードウェア構成を示すブロック図である。図７−１において、画像処理装置１００は、汎用の情報処理装置であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）７０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）７０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）７０３と、磁気ディスクドライブ７０４と、磁気ディスク７０５と、光ディスクドライブ７０６と、光ディスク７０７と、ディスプレイ７０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）７０９と、キーボード７１０と、マウス７１１と、スキャナ７１２と、プリンタ７１３と、を備えている。また、各構成部はバス７００によってそれぞれ接続されている。
【００４７】
ここで、ＣＰＵ７０１は、画像処理装置１００の全体の制御を司る。ＲＯＭ７０２は、ブートプログラム、画像処理プログラムなどのプログラムを記憶している。ＲＡＭ７０３は、ＣＰＵ７０１のワークエリアとして使用される。磁気ディスクドライブ７０４は、ＣＰＵ７０１の制御にしたがって磁気ディスク７０５に対するデータのリード／ライトを制御する。磁気ディスク７０５は、磁気ディスクドライブ７０４の制御で書き込まれたデータを記憶する。
【００４８】
光ディスクドライブ７０６は、ＣＰＵ７０１の制御にしたがって光ディスク７０７に対するデータのリード／ライトを制御する。光ディスク７０７は、光ディスクドライブ７０６の制御で書き込まれたデータを記憶したり、光ディスク７０７に記憶されたデータをコンピュータに読み取らせたりする。
【００４９】
ディスプレイ７０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ７０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００５０】
インターフェース（以下、「Ｉ／Ｆ」と略する。）７０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク７１４に接続され、このネットワーク７１４を介して他の装置に接続される。そして、Ｉ／Ｆ７０９は、ネットワーク７１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ７０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００５１】
キーボード７１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス７１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５２】
スキャナ７１２は、画像を光学的に読み取り、画像処理装置内に画像データを取り込む。なお、スキャナ７１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ７１３は、画像データや文書データを印刷する。プリンタ７１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００５３】
なお、上述した各機能は、一例であり、ＣＰＵ７０１、ＲＯＭ７０２およびＲＡＭ７０３以外の構成については任意である。
【００５４】
（画像処理装置の機能的構成）
つぎに、画像処理装置１００の機能的構成について説明する。なお、通常の描画処理および隠面消去処理はすでに公知の技術であるため、ここでは、本実施の形態にかかる描画処理の特徴点となる境界図形を基準とした図形の描き分けを実現するための機能に限定して説明する。
【００５５】
図７−２は、画像処理装置の機能的構成を示すブロック図である。画像処理装置１００は、取得部７２１と、描画部７２２と、抽出部７２３と、書込部７２４と、比較部７２５と、描画制御部７２６と、１Ｄ深度バッファ１２０と、フレームバッファ１４０と、を含む構成である。この制御部となる機能（取得部７２１〜描画制御部７２６）は、具体的には、たとえば、図７−１に示したＲＯＭ７０２、ＲＡＭ７０３、磁気ディスク７０５、光ディスク７０７などの記憶領域に記憶された描画処理プログラムをＣＰＵ７０１に実行させることにより、または、Ｉ／Ｆ７０９により、その機能を実現する。また、メモリとなる機能（１Ｄ深度バッファ１２０と、フレームバッファ１４０）は、図７−１に示したＲＡＭ７０３などの記憶領域により、その機能を実現する。
【００５６】
取得部７２１は、外部から入力された頂点データに基づいて画像処理装置内で生成された画素データに基づいて、ｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する。なお、取得された図形データは、ＲＡＭ７０３、磁気ディスク７０５、光ディスク７０７などの記憶領域に記憶される。
【００５７】
描画部７２２は、取得部７２１によって取得された図形データを描画する。描画部７２２による描画は、フレームバッファ１４０に対しておこなわれる。なお、描画部７２２は、取得部７２１によって図形データが取得されると、この図形データを一意的に描画するが、この描画処理は、後述する描画制御部７２６によって制御（禁止／許可）される。
【００５８】
抽出部７２３は、取得部７２１によって取得された図形データが境界道路などの境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する。具体的には、たとえば、抽出部７２３は、取得部７２１によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のｙ座標が最小または最大となる画素に設定されている深度値を前記ｘ座標の値ごとに抽出してもよい。
【００５９】
書込部７２４は、抽出部７２３によって抽出された深度値をラインバッファによって構成された１Ｄ深度バッファ１２０のｘ座標の値ごとに書き込む。
【００６０】
比較部７２５は、書込部７２４によってラインバッファ１２０に深度値が書き込まれた後、取得部７２１によってあらたな図形データが読み込まれると、当該図形データに含まれる任意の画素の深度値と、ラインバッファ１２０のｘ座標の値ごとに書き込まれている深度値の中の上述した任意の画素と同一のｘ座標の値に書き込まれている深度値とを比較する。比較結果は、ＲＡＭ７０３などの記憶領域に記憶される。
【００６１】
描画制御部７２６は、比較部７２５の比較結果に応じて描画部７２２によるあらたな図形データの描画を禁止する。具体的には、たとえば、描画制御部７２６は、比較部７２５によって、ラインバッファ１２０に書き込まれている深度値がより小さいと判断された場合に、描画部７２２によるあらたな図形データの描画を禁止する。
【００６２】
以上説明したように、汎用の情報処理装置にて描画処理プログラムを実行させることによって、図７−２のような機能部を構成することができる。描画部７２２は、取得部７２１によって取得した図形データを一意的に描画する。その後、描画部７２２によって境界図形が描画されると、以降取得された図形データは、境界図形との深度比較によって描画制御部７２６が描画判断をおこない、描画部７２２の描画を制御する。
【００６３】
＜グラフィックスＬＳＩによる構成例＞
つぎに、２つめの構成例としては、グラフィックスＬＳＩにて図１のハードウェア資源を用いて図１にて説明した画像処理を実現する構成が挙げられる。グラフィックスＬＳＩは、画像描画に特化した構成をもつＬＳＩである。ここではグラフィックスＬＳＩによる実施の形態１〜４について説明する。
【００６４】
・実施の形態１
まず、実施の形態１について説明する。実施の形態１は、グラフィックスＬＳＩを用いた描画処理をおこなう場合のもっとも基本的な処理となる。
【００６５】
（グラフィックスＬＳＩおよびグラフィックスメモリの構成）
まず、グラフィックスＬＳＩおよびグラフィックスメモリの構成について説明する。図８−１は、実施の形態１におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。
【００６６】
図８−１のように、実施の形態１におけるグラフィックスＬＳＩ８１０は、画素データ処理部８１１と、アドレス計算／画素値抽出部８１２と、深度比較部８１３と、１Ｄ深度バッファ８１４と、１Ｄ深度バッファ先頭アドレスレジスタ８１５と、フレームバッファ先頭アドレスレジスタ８１６と、２Ｄ深度バッファ先頭アドレスレジスタ８１７とを含んでいる。また、グラフィックスメモリ８２０は、フレームバッファ８２１と、２Ｄ深度バッファ８２２とを含んでいる。なお、上記の１Ｄ深度バッファ８１４は、上述したように２次元座標ごとにあらわされた深度値を、１次元座標ごとの深度値に減退させたラインバッファである。
【００６７】
グラフィックスＬＳＩ８１０において、画素データ処理部８１１は、描画対象となる図形の図形データから頂点データを読み込み画素単位の画素データとして出力する。具体的に説明すると、画素データ処理部８１１には、頂点シェーダ（バーテックスシェーダ）、三角形セットアップ、ラスタライザ、フラグメントシェーダとの４種類のソフトウェア実行部が搭載されている。そして、画素データ処理部８１１に頂点データが入力されると、頂点シェーダによって座標変換が施される。座標変換された頂点データは、三角形セットアップ、ラスタライザ、フラグメントシェーダによって各処理を施された後、画素データとして出力される。なお、画素データ処理部８１１によって実行される４種類のソフトウェアは、グラフィックスＬＳＩにおける標準的な処理であるため詳細な説明は省略する。
【００６８】
アドレス計算／画素値抽出部８１２は、画素データ処理部８１１から出力された画素データから色値、［ｘ，ｙ］座標値および深度値を抽出する機能と、抽出した［ｘ，ｙ］座標値と各バッファの先頭アドレスとから画素データの読み書き対象アドレスを計算する機能とを備えている。
【００６９】
画素データから抽出する値のうち、アドレス計算を必要としない色情報は、色情報抽出器８１２ａによって抽出された後、グラフィックスメモリ８２０のフレームバッファ８２１に書き込まれる。また、深度値は、深度値抽出器８１２ｄによって抽出された後、１Ｄ深度バッファ８１４とグラフィックスメモリ８２０の２Ｄ深度バッファ８２２にそれぞれ書き込まれる。さらに、抽出された深度値は、深度比較部８１３にも送られる。
【００７０】
画素データから抽出する値のうち、アドレス計算をおこなう［ｘ，ｙ］座標値は、ｙ座標抽出器８１２ｂによって［ｙ］座標値が抽出され、［ｘ］座標値はｘ座標抽出器８１２ｃによって抽出される。そして、抽出された［ｘ，ｙ］座標値は、２次元アドレス計算機８１２ｅに入力され、２Ｄ深度バッファ８２２における画素データの読み書き対象アドレスを算出する。また、［ｘ］座標値は、１次元アドレス計算機８１２ｆにも入力され、１Ｄ深度バッファ８１４における画素データの読み書き対象アドレスを算出する。
【００７１】
なお、２次元アドレス計算機８１２ｅにおいてアドレスを計算する際には、２Ｄ深度バッファ先頭アドレスレジスタ８１７に書き込まれている２Ｄ深度バッファ８２２の先頭アドレスと、フレームバッファ先頭アドレスレジスタ８１６に書き込まれているフレームバッファ８２１の先頭アドレスとが参照される。同様に、１次元アドレス計算機８１２ｆにおいてアドレスを計算する際には、１Ｄ深度バッファ先頭アドレスレジスタ８１５に書き込まれている１Ｄ深度バッファ８１４の先頭アドレスが参照される。
【００７２】
また、アドレス計算／画素値抽出部８１２に配置されたＧ１，Ｇ２，Ｇ３の各ゲートは、深度比較部８１３における深度比較によって不可視と判定された画素の書き込みを抑止するためのスイッチである。各ゲートのＯＮ／ＯＦＦは、後述する深度比較部８１３のゲート制御器８１３ｃによって制御される。
【００７３】
深度比較部８１３は、あらかじめ設定された深度バッファ比較条件を基準として、入力された画素データから抽出された深度値と、各深度バッファにすでに書き込まれている深度値とを比較する。具体的には、１Ｄ深度バッファ比較条件レジスタ８１３ａおよび２Ｄ深度バッファ比較条件レジスタ８１３ｂには、それぞれ、あらたに読み込んだ画素データとの深度値比較の際に利用する比較条件が書き込まれている。そして、１Ｄ深度バッファ比較条件レジスタ８１３ａには、境界道路３０１を基準とした描き分け判断の際に、２Ｄ深度バッファ２Ｄ深度バッファ比較条件レジスタ８１３ｂには、陰面消去処理の判断の際にそれぞれ、比較条件が読み出される。また、そして、深度比較部８１３ｄは、比較結果に応じてゲート制御器８１３ｃの振る舞いを変化させる。
【００７４】
なお、上述した１Ｄ深度バッファ比較条件レジスタ８１３ａおよび２Ｄ深度バッファ比較条件レジスタ８１３ｂに書き込まれている深度バッファ比較条件としては、たとえば、３ＤグラフィックスのためのプログラムインターフェイスであるＯｐｅｎＧＬの例に倣えば、「ＮＥＶＥＲ（未処理）」、「ＬＥＳＳ（未満：＜）」、「ＥＱＵＡＬ（同等：＝）」、「ＬＥＱＵＡＬ（以下：≦）」、「ＧＲＥＡＴＥＲ（超過：＞）」、「ＮＯＴＥＱＵＡＬ（不等：≠）」、「ＧＥＱＵＡＬ（以上：≧）」、「ＡＬＷＡＩＳ（常時）」の中からいずれかを選択するものとする。
【００７５】
上述した構成のうち、本実施の形態の特有の構成は、アドレス計算／画素値抽出部８１２における１次元アドレス計算機８１２ｆと、ゲートＧ３と、深度比較部８１３における１Ｄ深度バッファ比較条件レジスタ８１３ａ、ゲート制御器８１３ｃのゲートＧ３制御機能、深度比較器８１３ｄの最新画素の深度値と１Ｄ深度バッファ８１４の深度値とを比較する機能、１Ｄ深度バッファ８１４、１Ｄ深度バッファ先頭アドレスレジスタ８１５である。
【００７６】
また、２次元アドレス計算機８１２ｅは、一般的な方式と同様に、画素の［ｘ，ｙ］座標を用いる。これに対して、１次元アドレス計算機８１２ｆは、画素のｙ座標を無視して画素のｘ座標のみを用いることにより、２次元座標系と１次元座標系との変換を適切におこなうことができる（図６参照）。
【００７７】
つぎに、ゲート制御器８１３ｃにおける制御内容について説明する。図８−２は、ゲート制御器における制御をあらわす真理値表である。なお、実施の形態１の説明では、図８−２における、ゲートＧ１〜Ｇ３の記載についてのみ説明する。なお、ゲートＧ４に関しては実施の形態２以降に利用されるゲートであるため、内容については後述する。また、ゲートＧ４の有無を除いて、他のゲートＧ１〜Ｇ３の制御内容は、全実施の形態にて共通である。
【００７８】
各ゲートＧの制御内容は、画像処理装置１００における処理グループの状態に依存する。処理グループは、画像処理装置１００においてどのような図形データを描画しようとしているかによって下記の４つに分類される。
【００７９】
処理グループ１：境界道路描画以前の境界道路以外の道路描画
処理グループ２：境界道路描画
処理グループ３：境界道路描画以降の境界道路以外の道路描画
処理グループ４：３Ｄビル描画
【００８０】
なお、処理グループ４のｃａｓｅＡは、１Ｄ深度バッファ８１４による深度比較と２Ｄ深度バッファ８２２による深度比較の両方の結果、描画図形が可視と判定された場合に相当する。また、処理グループ４のｃａｓｅＢは、１Ｄ深度バッファ８１４による深度比較の結果、描画図形が不可視と判定された場合に相当する。さらに、処理グループ４のｃａｓｅＣは、２Ｄ深度バッファ８２２による深度比較の結果、描画図形が不可視と判定された場合に相当する。
【００８１】
各ゲートＧについて説明すると、まず、ゲートＧ１は、フレームバッファ８２１への描画制御である。処理グループ１から処理グループ３までは、２Ｄ深度バッファ８２２による深度比較（陰面消去処理用）をおこなわず、常時描画するためＯＮとなる。また、処理グループ２は、本実施の形態における特徴的な状態である。したがって、１Ｄ深度バッファ８１４による深度比較（境界道路に相当する深度境界の生成）をおこなって１Ｄ深度バッファ８１４に反映させながらも、フレームバッファ８２１には常時描画するという状態である。そして、処理グループ４では、可視と判定されたｃａｓｅＡ以外は、フレームバッファ８２１に描画しないためＯＦＦとなる。
【００８２】
つぎに、ゲートＧ２は、２Ｄ深度バッファ８２２への上書き更新制御である。処理グループ１から処理グループ３までは、２Ｄ深度バッファ８２２による深度比較（陰面消去処理用）をおこなわないので、常時ＯＦＦとなる。そして、処理グループ４では、可視と判定されたｃａｓｅＡ以外は、２Ｄ深度バッファ８２２を上書き更新しないためＯＦＦとなる。
【００８３】
つぎに、ゲートＧ３は１Ｄ深度バッファ８１４への上書き更新制御である。処理グループ１と処理グループ３とでは、１Ｄ深度バッファ８１４による深度比較（境界道路に相当する深度境界の生成）をおこなわないため、常時ＯＦＦとなる。処理グループ２では、１Ｄ深度バッファ８１４による深度比較をおこなって１Ｄ深度バッファ８１４上に深度境界を生成するため、ＯＮとなる。そして、処理グループ４では、１Ｄ深度バッファ８１４上に生成済みの深度境界を保護するため、常時ＯＦＦとなる。
【００８４】
（描画処理手順）
つぎに実施の形態１における描画処理手順について説明する。図９−１および図９−２は、実施の形態１における描画処理手順を示すフローチャートである。図９−１では、前半の処理グループ１，２の処理手順を説明し、図９−２では、後半の処理グループ３，４の処理手順を説明する。また、図９−１および図９−２の左側の領域は、描画コマンドとしてプログラムに記述された内容が実行されることによってＬＳＩに指示として送られる処理である。一方、右側の領域は、描画コマンドとして受け取った指示を、グラフィックスＬＳＩが内部で自動的に変換して実行する処理をあらわしている。
【００８５】
図９−１の処理グループ１は、境界道路を含まない２Ｄ地図データ９０１をフレームバッファ８２１に描画する処理である。まず、１Ｄ深度バッファ８１４および２Ｄ深度バッファ８２２と、フレームバッファ８２１とについて、後段の処理にて読み込む２Ｄ地図データ９０１との深度比較を無効化する（ステップＳ９１１〜Ｓ９１３）。続いて、外部から２Ｄ地図データ９０１を読み込み、鳥瞰図表現による擬似３Ｄ的な２Ｄ地図を描画する（ステップＳ９１４）。なお、ここで読み込む２Ｄ地図データ９０１には、境界道路は含まれていないものとする。また、ステップＳ９１４では、ステップＳ９１１〜Ｓ９１３によって深度比較を無効化しているので、各深度バッファへの深度値の書込みはおこなわれない。一方、グラフィックスＬＳＩでは、ステップＳ９１４の描画指示を受けて２Ｄ地図データ９０１の図形をフレームバッファ８２１に描画し（ステップＳ９１５）、処理グループ１の処理が終了する。
【００８６】
つぎに、処理グループ２は、境界道路部分の２Ｄ地図データ９０２をフレームバッファ８２１に描画する処理である。また境界道路を描画する際は、境界道路の深度値を１Ｄ深度バッファ８１４に上書きする処理も追加される。まず、１Ｄ深度バッファ８１４の深度比較を有効化（ステップＳ９２１）するとともに、１Ｄ深度バッファ８１４への書込み（深度値の更新）を許可する（ステップＳ９２２）。続いて、１Ｄ深度バッファ８１４を、最遠方に相当する深度値でクリアする（ステップＳ９２３）。グラフィックスＬＳＩでは、ステップＳ９２３のクリア指示に応じて、最遠方に相当する深度値で１Ｄ深度バッファ８１４が塗りつぶす（ステップＳ９２４）。
【００８７】
さらに、外部から境界道路に相当する２Ｄ地図データ９０２を読み込み、ステップＳ９１４と同様に、鳥瞰図表現による擬似３Ｄ的な２Ｄ地図を描画する（ステップＳ９２５）。なお、ここで読み込まれた２Ｄ地図データ９０２は、境界道路であるが、必ずしも処理グループ２において境界道路を描画する必然性はなく、一例に過ぎない。すなわち、ここでは、２次元地図データ中の任意の読み出し順序に位置するデータが境界道路として採用される可能性があることをあらわしている。
【００８８】
グラフィックスＬＳＩ８１０では、フレームバッファ８２１については２Ｄ地図データ９０２との深度比較をおこなわずに、境界道路を構成する画素の色値をそのまま描画する（ステップＳ９２６）。１Ｄ深度バッファ８１４については２Ｄ地図データ９０２との画素の重なり合いが発生した場合、深度比較をおこなう（ステップＳ９２７）。このときの深度比較ルールはＬＥＳＳである。すなわち、深度値が小さい方（視点に近い方）の値が採用される。
【００８９】
したがって、ステップＳ９２７において、境界道路に相当する２Ｄ地図データ９０２の深度が１Ｄ深度バッファ８１４よりも手前である場合（ステップＳ９２７：Ｙｅｓ）、１Ｄ深度バッファ８１４に境界道路の深度が上書き更新される（ステップＳ９２８）。なお、境界道路に相当する２Ｄ地図データ９０２の深度が１Ｄ深度バッファ８１４よりも奥である場合（ステップＳ９２７：Ｎｏ）、１Ｄ深度バッファ８１４はステップＳ９２４において更新せずに、処理グループ３に移行する。
【００９０】
ここで、ステップＳ９２７の処理についてさらに説明する。境界道路が単一の図形で構成される場合、本来であれば２次元的に境界道路の画素は他の図形の画素と重なり合わない。しかしながら、本実施の形態の場合、境界道路の２次元の深度値分布をｘ座標（横方向）のみの１次元の深度値に縮退させている。この１次元の深度値は、ｘ座標が同じであれば、異なるｙ座標（縦方向）すべての深度値が同じ値として扱われる。したがって、図形では、重なり合っていないながら、深度比較処理上は必然的に重なりが発生してしまう。結果的に、ステップＳ９２７の処理によって、境界道路の視点に近い側の端に相当する深度値が１Ｄ深度８１４バッファ上に残ることになる。
【００９１】
また、ステップＳ９２６にて説明したように、フレームバッファ８２１については、１Ｄ深度バッファ８１４とは対照的に、深度比較をおこなわない。これは、境界道路の深度値が１Ｄ深度バッファ８１４上で縮退されているためである。具体的には、境界道路３０１の視点に近い側の比較が終了した後に、同じｘ座標を持つより遠方側の画素を描画する場合に、深度比較で正しく手前か奥かを判断できない。結果として、フレームバッファ８２１上の境界道路の画素に欠損が生じてしまう可能性がある。なお、従来の一般的なグラフィックスシステムでは、深度比較の有効無効は深度バッファとフレームバッファ８２１の両方に共通に作用してしまうので、本発明のように独立に制御できない。
【００９２】
つぎに、図９−２の処理グループ３は、処理グループ１と同様に境界道路を含まない２Ｄ地図データ９０３をフレームバッファ８２１に描画する処理である。処理グループ１との違いは、すでに境界道路が描画されており、１Ｄ深度バッファ８１４に境界道路の深度が上書きされている点である。まず、１Ｄ深度バッファ８１４との深度比較を再び無効化し（ステップＳ９３１）、境界道路以外の残りの２Ｄ地図データ９０３を鳥瞰図表現で擬似３次元的に描画する（ステップＳ９３２）。一方、グラフィックスＬＳＩ８１０では、ステップＳ９３２の描画指示を受けて２Ｄ地図データ９０３の図形をフレームバッファ８２１に描画し（ステップＳ９３３）、処理グループ３の処理が終了する。
【００９３】
最後に処理グループ４は、描画データの中の３Ｄビルデータ９０４をフレームバッファ８２１に描画する。まず、描画のための準備として、１Ｄ深度バッファ８１４、２Ｄ深度バッファ８２２およびフレームバッファ８２１それぞれと３Ｄビルデータ９０４との深度比較をすべて有効化する（ステップＳ９４１〜Ｓ９４３）。また、ステップＳ９４１〜Ｓ９４３の処理と併せて１Ｄ深度バッファ８１４への書込みを禁止し（ステップＳ９４４）、２Ｄ深度バッファ８２２への書込みを許可する（ステップＳ９４５）。
【００９４】
ステップＳ９４４のように１Ｄ深度バッファ８１４への書込みを禁止することによって、３Ｄビルデータ９０４の描画がすべて完了するまでの間、境界道路の深度値を１Ｄ深度バッファ８１４上に保持して保護することができる。また、２Ｄ深度バッファ８２２に関しては、一般的なグラフィックスシステムと同様に陰面消去処理をおこなう必要がある。したがって、視点により近いビルの深度値で上書きされるように、ステップＳ９４５のように書込みを許可しておく必要がある。
【００９５】
続いて、２Ｄ深度バッファ８２２を、最遠方に相当する深度値でクリアする（ステップＳ９４６）。したがって、グラフィックスＬＳＩ８１０では、ステップＳ９４６のクリア指示に応じて、最遠方に相当する深度値で２Ｄ深度バッファ８２２を塗りつぶす（ステップＳ９４７）。
【００９６】
そして、３Ｄビルデータ９０４が読み込まれると、３Ｄビルデータ９０４に含まれている複数の３Ｄビルを順番に描画する（ステップＳ９４８）。グラフィックスＬＳＩ８１０では、フレームバッファ８２１に３Ｄビルを描画するための処理がおこなわれる。なお、グラフィックスＬＳＩ８１０は、ステップＳ９４８による３Ｄビルデータ９０４の描画指示に応じて３Ｄビルデータ９０４に含まれている複数の３Ｄビルを順番に描画する。したがって、以下に説明する処理は、３Ｄビルデータ９０４に含まれている複数の３Ｄビルについてそれぞれおこなわれる。
【００９７】
まず、１Ｄ深度バッファ８１４と３Ｄビルとの深度比較をおこない、３Ｄビルが境界道路の奥か否かを判断する（ステップＳ９４９）。このステップＳ９４９における深度比較はＧＲＥＡＴＥＲである。すなわち、１Ｄ深度バッファ８１４に書き込まれている境界道路の深度値より大きい、言い換えるとより遠方側のビルであれば（ステップＳ９４９：Ｙｅｓ）、その３Ｄビルは可視である（描画する必要がある）可能性があるため、つぎに、２Ｄ深度バッファ８２２との深度比較に移行する。
【００９８】
一方、ステップＳ９４９において、境界道路の深度値より小さい、すなわち境界道路よりより視点に近い３Ｄビルであれば（ステップＳ９４９：Ｎｏ）、描画によって境界道路より手前の道路を遮蔽してしまうため、この段階で描画をキャンセルして３Ｄビルデータ９０４の中のつぎの３Ｄビルに対する処理に移行する。
【００９９】
ステップＳ９４９によって境界道路の奥にあると判断された（ステップＳ９４９：Ｙｅｓ）３Ｄビルは、さらに、２Ｄ深度バッファ８２２と深度比較をおこない、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも手前か否かを判断する（ステップＳ９５０）。したがってステップＳ９５０における深度比較ルールはＬＥＳＳとなる。
【０１００】
ステップＳ９５０の判断は、一般的な陰面消去処理時の処理である。２Ｄ深度バッファ８２２は、ステップＳ９４７によって最遠方に相当する深度値に塗りつぶされている。したがって、３Ｄビルデータ９０４に含まれる３Ｄビルのうち最初に処理された３Ｄビルは、必然的に２Ｄ深度バッファ８２２の深度値よりも手前と判断される。
【０１０１】
ステップＳ９５０の判断において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも手前であれば（ステップＳ９５０：Ｙｅｓ）、３Ｄビルの他の図形の陰面にならない。そこで、３Ｄビルを正しい遠近関係でフレームバッファ８２１に描画する（ステップＳ９５１）。また、フレームバッファ８２１に描画された３Ｄビルの深度値を２Ｄ深度バッファ８２２に上書き更新する（ステップＳ９５２）。このステップＳ９５２によって上書き更新された３Ｄビルの深度値は、つぎに描画される３Ｄビルに対する陰面消去処理の判断に利用される。
【０１０２】
なお、ステップＳ９５０の判断において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも奥であれば（ステップＳ９５０：Ｎｏ）、他の３Ｄビルの陰面に位置することになる。したがって、この段階で描画をキャンセルして３Ｄビルデータ９０４の中のつぎの３Ｄビルに対する処理に移行する。そして、３Ｄビルデータ９０４に含まれるすべての３Ｄビルの処理が終わると、そのまま一連の処理を終了する。なお、図９−１および図９−２において説明した各処理は、グラフィックスＬＳＩ内部においては、一つの図形の処理中にその図形を構成するすべての画素にわたってループ実行される。
【０１０３】
このように、実施の形態１では、境界道路を描画する際に、あらたな構成である１Ｄ深度バッファに境界道路の深度値を書き込むことによって境界道路を基準とした図形データの描き分けが可能になった。また、ステップＳ９４９における１Ｄ深度バッファ８１４との深度比較によって境界道路の手前と判断された場合は（ステップＳ９４９：Ｎｏ）、２Ｄ深度バッファとの深度比較をおこなう必要がない。したがってグラフィックスＬＳＩ外部のグラフィックスメモリへのアクセスが発生せず、性能向上効果も得られる。
【０１０４】
以上、図９−１および図９−２にて説明した各手順を従来の３次元画像処理と比較して論理的なパイプラインとして簡潔に説明する。ここで、図１０−１は、従来の３次元画像処理のデータの流れを示すブロック図である。また、図１０−２は、実施の形態１における３次元画像処理のデータの流れを示すブロック図である。
【０１０５】
図１０−１のように、従来は、入力された頂点データは、頂点シェーダ（ステップＳ１００１）、三角形セットアップ（ステップＳ１００２）、ラスタライザ（ステップＳ１００３）、フラグメントシェーダ（ステップＳ１００４）を施した後、２Ｄ深度バッファによる深度テストをおこない（ステップＳ１００５）、描画処理が実行され（ステップＳ１００６）、出力された画素データがフレームバッファ８２１に書き込まれる。なお、ステップＳ１００５における深度テストは陰面消去処理に利用される。
【０１０６】
一方、実施の形態１の場合は、上述のステップＳ１００１〜ステップＳ１００４の処理をおこなった後、追加した１Ｄ深度バッファ８１４による深度テストがおこなわれる（ステップＳ１００７）。このステップＳ１００７における深度テストは境界道路を基準として描画判断に利用される。その後、従来と同様に、２次元バッファによる深度テストをおこない（ステップＳ１００５）、描画処理が実行され（ステップＳ１００６）、出力された画素データがフレームバッファ８２１に書き込まれる。
【０１０７】
図１１は、実施の形態１による地図画像の描画例を示す説明図である。図１０−２にて説明した処理をおこなうことにより、描画例１１００のような境界道路３０１を基準とした３Ｄビルの描き分けがなされた３Ｄ地図画像が描画される。
【０１０８】
・実施の形態２
つぎに、実施の形態２について説明する。実施の形態２では、描画対象図形として入力された図形データから頂点情報を優先的に抽出して、境界道路との深度比較に利用する。
【０１０９】
（グラフィックスＬＳＩおよびグラフィックスメモリの構成）
まず、グラフィックスＬＳＩおよびグラフィックスメモリの構成について説明する。図１２は、実施の形態２におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。以下、図８−１に示した実施の形態１のグラフィックスＬＳＩ８１０との相違点について説明する。
【０１１０】
図１２のように、実施の形態２におけるグラフィックスＬＳＩ１２１０は、図８−１のグラフィックスＬＳＩ８１０の画素データ処理部８１１に代わって、頂点シェーダ１２１１と、画素データ処理部１２１２を備えている。また、これら頂点シェーダ１２１１と、画素データ処理部１２１２とを制御するためのゲートＧ４が追加されている。
【０１１１】
頂点シェーダ１２１１は、独立した機能ブロックとなっているため、ゲートＧ４によって画素データ処理部１２１２に出力するデータを遮断することができる。また、頂点シェーダ１２１１には、ジオメトリシェーダのプログラムも含まれている。なお、図８−２に示しているように、ゲートＧ４は、ゲート制御器８１３ｃによって、頂点データの深度値と１Ｄ深度バッファ８１４との深度比較が不合格になった場合に遮断されるよう制御される。
【０１１２】
ゲートＧ４が遮断されると、頂点シェーダ１２１１から出力された頂点データが画素データ処理部１２１２の三角形セットアップに送られない。すなわち、上述したように、頂点データの深度値と１Ｄ深度バッファ８１４との深度比較が不合格になった場合は、描画対象図形は描画しないと判断されたことになる。したがって、ゲートＧ４をＯＦＦにすることで描画対象図形の画素化を早期にキャンセルし、無駄な処理を省略することができる。したがって、性能向上にも寄与することができる。
【０１１３】
また、頂点シェーダ１２１１、アドレス計算／画素値抽出部８１２のｘ座標抽出器８１２ｃと深度値抽出器８１２ｄとにデータを流す経路が追加されている。この経路を通って、頂点シェーダ１２１１によって座標変換された頂点データが、画素データに変換されることなく直接供給される。すなわち、画素座標［ｘ，ｙ］の一つ一つの画素データに含まれるｘ座標と深度値を抽出する代わりに、三角形の頂点座標［ｘ，ｙ］のみのｘ座標と深度値を抽出し、１Ｄ深度バッファ８１４との深度比較をおこなう。
【０１１４】
つぎに、実施の形態２においてあらたに追加されたゲートＧ４の制御内容について説明する。図８−２を用いて説明すると、ゲートＧ４は、頂点データの読込みキャンセル制御である。したがって処理グループ４のｃａｓｅＢのみ、１Ｄ深度バッファ８１４による深度比較（深度境界より奥か手前か）により図形描画を事前キャンセルできるので、ＯＦＦとなる。
【０１１５】
（描画処理手順）
つぎに実施の形態２における描画処理手順について説明する。図１３および図１４は、実施の形態２における描画処理手順を示すフローチャートである。なお、図９−１および図９−２にて説明した実施の形態１の描画処理手順の処理グループ１〜３については、実施の形態２において同様の処理となる。したがって、図１３および図１４では、処理内容の異なる処理グループ４（３Ｄビルデータ９０４の描画処理）について説明する。なお、図１３は、処理グループ４の前半の処理を、図１４は、処理グループ４の後半の処理をあらわしている。
【０１１６】
図１３の処理グループ４−１は、描画のための準備として各深度バッファを設定する処理である。まず、１Ｄ深度バッファ８１４、２Ｄ深度バッファ８２２およびフレームバッファ８２１それぞれの深度比較をすべて有効化する（ステップＳ１３１１〜Ｓ１３１３）。また、ステップＳ１３１１〜Ｓ１３１３の処理と併せて１Ｄ深度バッファ８１４への書込みを禁止し（ステップＳ１３１４）、２Ｄ深度バッファ８２２への書込みを許可する（ステップＳ１３１５）。
【０１１７】
ステップＳ１３１４のように１Ｄ深度バッファ８１４への書込みを禁止することによって、３Ｄビルデータ９０４の描画がすべて完了するまでの間、境界道路の深度値を１Ｄ深度バッファ８１４上に保持して保護することができる。また、２Ｄ深度バッファ８２２に関しては、一般的なグラフィックスシステムと同様に陰面消去処理をおこなう必要がある。したがって、視点により近いビルの深度値で上書きされるように、ステップＳ１３１５のように書込みを許可しておく必要がある。
【０１１８】
続いて、頂点深度比較モードを有効化し（ステップＳ１３１６）、２Ｄ深度バッファ８２２を、最遠方に相当する深度値でクリアする（ステップＳ１３１７）。したがって、グラフィックスＬＳＩ１２１０では、ステップＳ１３１７のクリア指示に応じて、最遠方に相当する深度値で２Ｄ深度バッファ８１４を塗りつぶす（ステップＳ１３１８）。
【０１１９】
つぎに、処理グループ４−２は、３Ｄビルデータ９０４に含まれている３Ｄビルを描画するコマンドを生成する処理である。まず、３Ｄビルデータ９０４を読み込むと、この３Ｄビルデータ９０４に含まれている複数の３Ｄビルを順番に描画する（ステップＳ１３２１）。グラフィックスＬＳＩ１２１０では、フレームバッファ８２１に３Ｄビルを描画するための処理がおこなわれる。なお、グラフィックスＬＳＩ１２１０は、ステップＳ１３２１による複数の３Ｄビルデータ９０４の描画指示に応じて順番に複数の３Ｄビルを描画する。したがって、以下に説明する処理は、３Ｄビルデータ９０４に含まれている複数の３Ｄビルについてそれぞれおこなわれる。
【０１２０】
これを受けてグラフィックスＬＳＩ１２１０では、ビルデータの描画指示に応じて頂点シェーダ１２１１によって算出された頂点座標を、さらに、３Ｄビルデータ９０４に含まれている一つのビルについての先頭入力頂点を頂点シェーダによって座標変換を施す（ステップＳ１３２２）。そして、ジオメトリ変換された３Ｄビルの頂点に対して１Ｄ深度バッファ８１４との深度比較をおこない、処理中の３Ｄビルの頂点が境界道路３０１よりも奥か否かを判断する（ステップＳ１３２３）。
【０１２１】
このステップＳ１３２３における頂点の深度比較において、１Ｄ深度バッファ８１４の深度値の方が大きい、すなわち、３Ｄビルが手前にあると判断された場合（ステップＳ１３２３：Ｎｏ）、同一の３Ｄビル中の後続頂点の深度比較を打ち切って、同じ３Ｄビルデータ９０４に含まれるつぎの３Ｄビルの処理に移行する。ここでは、ビルの一つの角が境界道路の手前か奥のどちらにあるかが分かれば、そのビル全体が境界道路のどちら側にあるか判明するという現実的な制約を利用している。そして、ステップＳ１３２３において、３Ｄビルが、境界道路３０１の奥にあると判断された場合（ステップＳ１３２３：Ｙｅｓ）、処理グループ４−３の処理に移行する。
【０１２２】
つぎに、図１４の処理グループ４−３は、画素データ処理部１２１２において３Ｄビルデータ９０４を構成する図形のいずれかの頂点を選択して（ステップＳ１３３１）、三角形セットアップ（ステップＳ１３３２）と、ラスタライズ（ステップＳ１３３３）とを施すことによって描画対象図形を画素に分解する。
【０１２３】
そして、処理グループ４−４では、隠面消去判断に応じてフレームバッファ８２１への描画をおこなう。まず、ステップＳ１３３３によってラスタライズされた３Ｄビルの画素を選択し（ステップＳ１３４１）、２Ｄ深度バッファ８２２の対応座標に記録されている深度値との深度比較をおこない、選択した図形が２Ｄ深度バッファ８２２の対応座標に記録されている深度値よりも手前か否かを判断する（ステップＳ１３４２）。
【０１２４】
ステップＳ１３４２において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも手前であれば（ステップＳ１３４２：Ｙｅｓ）、３Ｄビルの他の図形の陰面にならない。そこで、３Ｄビルを正しい遠近関係でフレームバッファ８２１に描画する（ステップＳ１３４３）。また、フレームバッファ８２１に描画された３Ｄビルの深度値を２Ｄ深度バッファ８２２に上書き更新し（ステップＳ１３４４）、ステップＳ１３４５の処理に移行する。このステップＳ１３４４によって上書き更新された３Ｄビルの深度値は、つぎに描画される３Ｄビルに対する陰面消去処理の判断に利用される。
【０１２５】
なお、ステップＳ１３４２の判断において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも奥であれば（ステップＳ１３４２：Ｎｏ）、他の３Ｄビルの陰面に位置することになる。したがって、この段階で描画をキャンセルして３Ｄビルの全画素の処理が終了したかを判断する（ステップＳ１３４５）。ここで、他の画素の処理が残っている場合（ステップＳ１３４５：Ｎｏ）、つぎの画素を選択し（ステップＳ１３４６）、ステップＳ１３４２の処理に戻る。
【０１２６】
一方、全画素の処理が終了した場合（ステップＳ１３４５：Ｙｅｓ）、さらに、３Ｄビルにおける全頂点の処理が終了したか否かを判断する（ステップＳ１３４７）。ここで、他の頂点の処理が残っている場合（ステップＳ１３４７：Ｎｏ）、つぎの頂点を選択し（ステップＳ１３４８）、ステップＳ１３３２の処理に戻る。一方、３Ｄビルにおける全頂点の処理が終了した場合（ステップＳ１３４７：Ｙｅｓ）、３Ｄビルデータ９０４に含まれるすべての３Ｄビルの処理が終わると、そのまま一連の処理を終了する。
【０１２７】
また、図１５は、実施の形態２における３次元画像処理のデータの流れを示すブロック図である。図１５では、上述の図９−２のように、実施の形態２の処理を論理的なパイプラインとして簡潔に説明する。
【０１２８】
まず、入力された頂点データは、頂点シェーダ（ステップＳ１５０１）の後、追加した１Ｄ深度バッファ８１４による深度テストがおこなわれる（ステップＳ１５０２）。そして、三角形セットアップ（ステップＳ１５０３）、ラスタライザ（ステップＳ１５０４）、フラグメントシェーダ（ステップＳ１５０５）を施した後、２Ｄ深度バッファによる深度テストをおこない（ステップＳ１５０６）、描画処理が実行され（ステップＳ１５０７）、出力された画素データがフレームバッファ８２１に書き込まれる。
【０１２９】
・実施の形態３
つぎに、実施の形態３について説明する。実施の形態３では、複数の１Ｄ深度バッファを利用して複数の境界道路が設定された場合の描き分けを実現する。
【０１３０】
（グラフィックスＬＳＩおよびグラフィックスメモリの構成）
まず、グラフィックスＬＳＩおよびグラフィックスメモリの構成について説明する。図１６は、実施の形態３におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。以下、図８−１に示した実施の形態１のグラフィックスＬＳＩ８１０と、図１２に示した実施の形態２のグラフィックスＬＳＩ１２１０との相違点について説明する。
【０１３１】
グラフィックスＬＳＩ１６１０は、複数の１Ｄ深度バッファ１６１３（１Ｄ深度バッファＡ，Ｂ）を備えている。また、図１２のグラフィックスＬＳＩ１２１０と同様に、画素データではなく頂点データの段階で、１Ｄ深度バッファとの深度比較をおこなう。その他、具体的な相違点として下記の点が挙げられる。
【０１３２】
・１Ｄ深度バッファ先頭アドレスレジスタ１６１４もＡ、Ｂの２つを備えている。
【０１３３】
・１Ｄ深度バッファＡ，Ｂ（１６１３）のどちらにアクセスするかを制御する１Ｄ深度バッファ選択機構１６１２を含んでいる。この、１Ｄ深度バッファ選択機構１６１２は、プログラムからの指示によりＡ／Ｂのいずれかを決定し、接続されているセレクタにより、アドレスおよびデータの通信経路を切り替える機能を備えている。
【０１３４】
・深度比較機構１６１１は、複数の１Ｄ深度バッファ１６１３からの判定出力を組み合わせる方法を定義する１次元深度バッファ合成条件レジスタ１６１１ａを含んでいる。（たとえば、ＡＮＤ、ＯＲなどの論理式を選択するための識別情報が格納され、ＡＮＤが選択されている場合であれば、１Ｄ深度バッファＡと１Ｄ深度バッファＢの両方の深度比較で合格した場合に、ゲートＧ４が開通する）
【０１３５】
（描画処理手順）
つぎに実施の形態３における描画処理手順について説明する。図１７−１および図１７−２は、実施の形態３における描画処理手順を示すフローチャートである。図９−１および図９−２にて説明した実施の形態１の描画処理手順の処理グループ１，３については、実施の形態３においても同様の処理となる。したがって、図１７−１および図１７−２では、処理内容の異なる処理グループ２（境界道路の描画処理）および処理グループ４（３Ｄビルデータ９０４の描画処理）について説明する。なお、図１７−１は、処理グループ２の処理を、図１７−２は、処理グループ４の処理をあらわしている。
【０１３６】
まず、図１７−１の処理部グループ２は、複数の１Ｄ深度バッファに対応しているため、１Ｄ深度バッファの数だけループをおこなう。ここでは、ループ処理用に、１Ｄ深度バッファの通し番号ｉを設定し、まず、通し番号ｉ＝０に設定する（ステップＳ１７２１）。この通し番号は、グラフィックスＬＳＩ１６１０に搭載されたすべての１Ｄ深度バッファに付与されており、たとえば、１Ｄ深度バッファＡであれば、通し番号ｉ：０、１Ｄ深度バッファＢであれば、通し番号ｉ：１とする。
【０１３７】
そして、１Ｄ深度バッファｉの深度比較を有効化（ステップＳ１７２２）するとともに、１Ｄ深度バッファｉへの書込み（深度値の更新）を許可する（ステップＳ１７２３）。続いて、１Ｄ深度バッファｉを、最遠方に相当する深度値でクリアする（ステップＳ１７２４）。グラフィックスＬＳＩ１６１０では、ステップＳ１７２４のクリア指示に応じて、最遠方に相当する深度値で１Ｄ深度バッファｉを塗りつぶす（ステップＳ１７２５）。
【０１３８】
さらに、外部から境界道路に相当する２Ｄ地図データ９０２を読み込み、鳥瞰図表現による擬似３Ｄ的な２Ｄ地図を描画する（ステップＳ１７２６）。グラフィックスＬＳＩ１６１０では、フレームバッファ８２１については２Ｄ地図データ９０２との深度比較をおこなわずに、境界道路を構成する画素の色値をそのまま描画する（ステップＳ１７２７）。１Ｄ深度バッファｉについては２Ｄ地図データ９０２との画素の重なり合いが発生した場合、深度比較をおこなう（ステップＳ１７２８）。このときの深度比較ルールはＬＥＳＳである。すなわち、深度値が小さい方（視点に近い方）の値が採用される。
【０１３９】
したがって、ステップＳ１７２８において、境界道路に相当する２Ｄ地図データ９０２の深度が１Ｄ深度バッファｉよりも手前である場合（ステップＳ１７２８：Ｙｅｓ）、１Ｄ深度バッファｉに境界道路の深度が上書き更新される（ステップＳ１７２９）。なお、境界道路に相当する２Ｄ地図データ９０２の深度が１Ｄ深度バッファｉよりも奥である場合（ステップＳ１７２８：Ｎｏ）、１Ｄ深度バッファｉはステップＳ１７２５において最遠方に相当する深度値で塗りつぶされているため、更新せずに、つぎのステップＳ１７３０およびステップＳ１７３１の処理に移行する。
【０１４０】
つぎに、１Ｄ深度バッファｉの深度比較を無効化する（ステップＳ１７３０）とともに、１Ｄ深度バッファｉへの書込み（深度値の更新）を禁止する（ステップＳ１７３１）。そして、１Ｄ深度バッファの通し番号ｉがすべて終了したか否かを判断し（ステップＳ１７３２）、まだ１Ｄ深度バッファの通し番号ｉが残っている場合には（ステップＳ１７３２：Ｎｏ）、通し番号ｉをインクリメントし（ステップＳ１７３３）、つぎの通し番号ｉに対応する１Ｄ深度バッファｉについて同様に処理を開始する。一方、１Ｄ深度バッファの通し番号ｉが終了した場合には（ステップＳ１７３２：Ｙｅｓ）、そのままつぎの処理グループ４へ移行する。
【０１４１】
つぎに、図１７−２の処理部グループ４は、描画データの中の３Ｄビルデータ９０４をフレームバッファ８２１に描画する。まず、描画のための準備として、１Ｄ深度バッファ１６１３，１６１４、２Ｄ深度バッファ８２２およびフレームバッファ８２１それぞれの深度比較をすべて有効化する（ステップＳ１７４１〜Ｓ１７４３）。また、ステップＳ１７４１〜Ｓ１７４３の処理と併せて１Ｄ深度バッファ１６１３，１６１４への書込みを禁止し（ステップＳ１７４４）、２Ｄ深度バッファ８２２への書込みを許可する（ステップＳ１７４５）。
【０１４２】
続いて、２Ｄ深度バッファ８２２を、最遠方に相当する深度値でクリアする（ステップＳ１７４６）。したがって、グラフィックスＬＳＩ１６１０では、ステップＳ１７４６のクリア指示に応じて、最遠方に相当する深度値で２Ｄ深度バッファ８２２を塗りつぶす（ステップＳ１７４７）。
【０１４３】
そして、３Ｄビルデータ９０４が読み込まれると、３Ｄビルデータ９０４に含まれている複数の３Ｄビルを順番に描画する（ステップＳ１７４８）。グラフィックスＬＳＩ１６１０では、フレームバッファ８２１に３Ｄビルを描画するための処理がおこなわれる。なお、グラフィックスＬＳＩ８１０は、ステップＳ１７４８による３Ｄビルデータ９０４の描画指示に応じて３Ｄビルデータ９０４に含まれている複数の３Ｄビルを順番に描画する。したがって、以下に説明する処理は、３Ｄビルデータ９０４に含まれている複数の３Ｄビルについてそれぞれおこなわれる。
【０１４４】
まず、１Ｄ深度バッファのいずれか一つが選択される（ステップＳ１７４９）。そして、選択された１Ｄ深度バッファと３Ｄビルとの深度比較をおこない、３Ｄビルが境界道路の奥か否かを判断する（ステップＳ１７５０）。このステップＳ１７５０における深度比較はＧＲＥＡＴＥＲである。すなわち、選択された１Ｄ深度バッファに書き込まれている境界道路の深度値より大きい、言い換えるとより遠方側のビルであれば（ステップＳ１７５０：Ｙｅｓ）、つぎに、１Ｄ深度バッファがすべて終了したか否かを判断し（ステップＳ１７５１）、終了していなければ（ステップＳ１７５１：Ｎｏ）、つぎの１Ｄ深度バッファを選択し（ステップＳ１７５２）、ステップＳ１７５０の処理に戻る。
【０１４５】
一方、１Ｄ深度バッファがすべて終了していると判断された場合（ステップＳ１７５１：Ｙｅｓ）、その３Ｄビルは可視である（描画する必要がある）可能性があるため、つぎに、２Ｄ深度バッファ８２２との深度比較に移行する。なお、いずれかの１Ｄ深度バッファを選択した際に、一度でも３Ｄビルが境界道路の手前であると判断された場合には（ステップＳ１７５０：Ｎｏ）、この段階で描画をキャンセルして３Ｄビルデータ９０４の中のつぎの３Ｄビルに対する処理に移行する。
【０１４６】
一方、ステップＳ１７５０の判断では、はじかれずに（Ｎｏと判断されずに）、すべての１Ｄ深度バッファの処理が終了した場合は（ステップＳ１７５１：Ｙｅｓ）、つぎに、３Ｄビルは、２Ｄ深度バッファ８２２と深度比較をおこない、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも手前か否かを判断する（ステップＳ１７５３）。したがってステップＳ１７５３における深度比較ルールはＬＥＳＳとなる。
【０１４７】
ステップＳ１７５０の判断は、一般的な陰面消去処理時の処理である。２Ｄ深度バッファ８２２は、ステップＳ１７４７によって最遠方に相当する深度値に塗りつぶされている。したがって、３Ｄビルデータ９０４に含まれる３Ｄビルのうち最初に処理された３Ｄビルは、必然的に２Ｄ深度バッファ８２２の深度値よりも手前と判断される。
【０１４８】
ステップＳ１７５３の判断において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも手前であれば（ステップＳ１７５３：Ｙｅｓ）、３Ｄビルの他の図形の陰面にならない。そこで、３Ｄビルを正しい遠近関係でフレームバッファ８２１に描画する（ステップＳ１７５４）。また、フレームバッファ８２１に描画された３Ｄビルの深度値を２Ｄ深度バッファ８２２に上書き更新する（ステップＳ１７５５）。このステップＳ１７５５によって上書き更新された３Ｄビルの深度値は、つぎに描画される３Ｄビルに対する陰面消去処理の判断に利用される。
【０１４９】
なお、ステップＳ１７５３の判断において、３Ｄビルが２Ｄ深度バッファ８２２に書き込まれている深度値よりも奥であれば（ステップＳ１７５３：Ｎｏ）、他の３Ｄビルの陰面に位置することになる。したがって、この段階で描画をキャンセルして３Ｄビルデータ９０４の中のつぎの３Ｄビルに対する処理に移行する。そして、３Ｄビルデータ９０４に含まれるすべての３Ｄビルの処理が終わると、そのまま一連の処理を終了する。なお、図１７−１および図１７−２において説明した各処理は、グラフィックスＬＳＩ内部においては、一つの図形の処理中にその図形を構成するすべての画素にわたってループ実行される。
【０１５０】
図１８−１は、実施の形態３における３次元画像処理のデータの流れを示すブロック図である。図１８−１では、実施の形態１に、複数の１Ｄ深度バッファを搭載した場合の処理を論理的なパイプラインとして簡潔に説明する。
【０１５１】
まず、入力された頂点データは、頂点シェーダ（ステップＳ１８１１）、三角形セットアップ（ステップＳ１８１２）、ラスタライザ（ステップＳ１８１３）、フラグメントシェーダ（ステップＳ１８１４）を施した後、追加した１Ｄ深度バッファ１６１３（深度バッファＡ，Ｂ）によってそれぞれ深度テストがおこなわれる（ステップＳ１８１５，Ｓ１８１６）。その後、２Ｄ深度バッファ８２２による深度テストをおこない（ステップＳ１８１７）、描画処理が実行され（ステップＳ１８１８）、出力された画素データがフレームバッファ８２１に書き込まれる。
【０１５２】
また、図１８−２は、実施の形態３における頂点単位の深度比較を含む３次元画像処理のデータの流れを示すブロック図である。図１８−２では、複数の１Ｄ深度バッファを搭載し、さらに、実施の形態２のように、頂点単位の深度比較によって描画を制御する場合を論理的なパイプラインとして簡潔に説明する。
【０１５３】
まず、入力された頂点データは、頂点シェーダ（ステップＳ１８２１）の後、追加した１Ｄ深度バッファ１６１３（深度バッファＡ，Ｂ）によってそれぞれ深度テストがおこなわれる（ステップＳ１８２２，Ｓ１８２３）。その後、三角形セットアップ（ステップＳ１８２４）、ラスタライザ（ステップＳ１８２５）、フラグメントシェーダ（ステップＳ１８２６）を施した後、２Ｄ深度バッファ８２２による深度テストをおこない（ステップＳ１８２７）、描画処理が実行され（ステップＳ１８２８）、出力された画素データがフレームバッファ８２１に書き込まれる。
【０１５４】
（実施の形態４）
つぎに、実施の形態４について説明する。実施の形態４では、複数の境界道路を設定し、なおかつ単一の１Ｄ深度バッファを用いて深度比較をおこなう。また、実施の形態２，３と同様に、画素データではなく、頂点データの段階で１Ｄ深度バッファとの深度比較をおこなう。したがって、グラフィックスＬＳＩの構成は、実施の形態２にて説明したグラフィックスＬＳＩ１２１０と同様であるため、ここでは説明を省略する。
【０１５５】
（描画処理手順）
つぎに実施の形態４における描画処理手順について説明する。図１９−１および図１９−２は、実施の形態４における描画処理手順を示すフローチャートである。なお、ここでも、実施の形態３と同様に、図９−１および図９−２にて説明した実施の形態１の描画処理手順の処理グループ１，３については処理に差異がない。したがって、図１９−１および図１９−２では、処理内容の異なる処理グループ２（境界道路の描画処理）および処理グループ４（３Ｄビルデータ９０４の描画処理）について説明する。なお、図１９−１は、処理グループ２の処理を、図１９−２は、処理グループ４の処理をあらわしている。
【０１５６】
まず、図１９−１の処理部グループ２は、１つの１Ｄ深度バッファ８１４に複数の境界道路３０１の深度値を書き込む処理がおこなわれる。したがって、まず、１Ｄ深度バッファ８１４の深度比較を有効化（ステップＳ１９２１）するとともに、１Ｄ深度バッファ８１４への書込み（深度値の更新）を許可する（ステップＳ１９２２）。続いて、１Ｄ深度バッファ８１４を、最遠方に相当する深度値でクリアする（ステップＳ１９２３）。グラフィックスＬＳＩ１２１０では、ステップＳ１９２３のクリア指示に応じて、最遠方に相当する深度値で１Ｄ深度バッファ８１４を塗りつぶす（ステップＳ１９２４）。
【０１５７】
その後、複数の境界道路に対して順番に処理をおこなうため、ここでは、ループ処理用に、境界道路の通し番号ｊを設定し、まず、通し番号ｊ＝０に設定する（ステップＳ１９２５）。そして、複数の境界道路から境界道路ｊに相当する２Ｄ地図データ１７０１を読み込み、鳥瞰図表現による擬似３Ｄ的な２Ｄ地図を描画する（ステップＳ１９２６）。
【０１５８】
そして、グラフィックスＬＳＩ１２１０では、フレームバッファ８２１については２Ｄ地図データ１７０１との深度比較をおこなわずに、境界道路ｊを構成する画素の色値をそのまま描画する（ステップＳ１９２７）。そして、１Ｄ深度バッファ８１４については境界道路ｊの２Ｄ地図データ１７０１との画素の重なり合いが発生した場合、深度比較をおこなう（ステップＳ１９２８）。このときの深度比較ルールはＬＥＳＳである。すなわち、深度値が小さい方（視点に近い方）の値が採用される。
【０１５９】
したがって、ステップＳ１９２８において、境界道路ｊに相当する２Ｄ地図データ１７０１の深度が１Ｄ深度バッファ８１４よりも手前である場合（ステップＳ１９２８：Ｙｅｓ）、１Ｄ深度バッファ８１４に境界道路の深度が上書き更新される（ステップＳ１９２９）。そして、境界道路ｊに相当する２Ｄ地図データ１７０１がすべて終了したか否かの判断をおこない（ステップＳ１９３０）、他の境界道路ｊが残っていれば（ステップＳ１９３０：Ｎｏ）、境界道路ｊをインクリメントし（ステップＳ１９３１）、ステップＳ１９２６の処理に戻る。なお、ステップＳ１９２８において、境界道路ｊに相当する２Ｄ地図データ１７０１の深度が１Ｄ深度バッファ８１４よりも奥である場合（ステップＳ１９２８：Ｎｏ）、つぎの境界道路ｊの処理へ切り替えるため、ステップＳ１９３０の処理へ移行する。
【０１６０】
一方、ステップＳ１９３０において、すべての境界道路ｊへの処理が終了していれば（ステップＳ１９３０：Ｙｅｓ）、複数の境界道路の深度値が１Ｄ深度バッファ８１４に集約して書き込まれたため、１Ｄ深度バッファ８１４の深度比較を無効化（ステップＳ１９３２）するとともに、１Ｄ深度バッファ８１４への書込み（深度値の更新）を禁止し（ステップＳ１９３３）、処理グループ３へ移行する。
【０１６１】
そして、図１９−２では、処理グループ４として、描画データの中の３Ｄビルデータ９０４をフレームバッファ８２１に描画する。このステップＳ１９４１〜ステップＳ１９５２までの処理は、図９−２のステップＳ９４１〜９５２までの処理と同じであるため説明を省略する。
【０１６２】
しかしながら、実施の形態４の処理グループ４では、複数の境界道路の深度値が集約された１Ｄ深度バッファ８１４と３Ｄビルとの深度比較がなされている。ここで、実施の形態４における、複数の境界道路の深度値が集約された１Ｄ深度バッファ８１４について説明する。
【０１６３】
図２０は、複数の境界道路の深度値が集約された１Ｄ深度バッファを示す模式図である。また、図２１は、複数の境界道路の設定例を示す説明図である。図２０の模式図２０００は、１Ｄ深度バッファ８１４に書き込まれている深度値を濃淡によって表現している。ここでは、濃→淡が、手前→奥に対応している。すなわち、図２０の模式図は、図２１に示した複数の境界道路の設定例２１００を反映した深度値をあらわしている。
【０１６４】
設定例２１００では、複数の境界道路（たとえば、３０１Ａ，３０１Ｂ）とが交差している場合、道路の輪郭のうち、視点から遠いものを破線および１点鎖線で表示している。１Ｄ深度バッファ８１４に境界道路３０１の深度値を描き込む際、判定式をＬＥＳＳ（描き込み済み深度より小さい深度値を持つ画素なら、その深度値で１Ｄ深度バッファ８１４を更新する）に設定する。この結果、破線や１点鎖線で示した道路輪郭や、道路内部の深度値は上書きされ、最終的に実線で示した道路輪郭の深度値が、１Ｄ深度バッファ８１４上に残る。
【０１６５】
上述した振る舞いは、境界道路３０１を何本追加してもかわらず、常に視点に近い側の道路輪郭が深度境界になる。逆に、１点鎖線で示した輪郭を深度境界にしたい場合は、判定式をＬＥＳＳからＧＲＥＡＴＥＲ（描き込み済み深度より大きい深度値を持つ画素なら、その深度値で１次元深度バッファを更新する）に変更すれば対応できる。なお、さらに、複雑な深度境界が必要な場合は、１つの１Ｄ深度バッファ８１４で対応できない状況がありうる。したがって、画像処理装置１００のメモリ容量に応じて、実施の形態３にて説明したような複数の１Ｄ深度バッファを搭載する構成を選択してもよい。
【０１６６】
以上説明したように、本実施の形態によれば、境界道路の深度値の書込用に、ラインバッファである、１Ｄ深度バッファを搭載して、深度比較をおこなうため、実装が容易である。また、１Ｄ深度バッファを用いることによって、境界道路の深度値の比較をハードウェア的に実現するため、ＣＰＵへの処理負担も軽減される。たとえ、図７−１のように、汎用の情報処理装置を用いてソフトウェア的に実現する場合であっても、１Ｄ深度バッファは、情報処理装置のメモリ資源を利用するため、処理負荷を抑えることができる。したがって、ＣＰＵに多大な処理負担をかけることなく任意の境界図形を基準とした図形の描き分けを実現することができる。
【０１６７】
なお、本実施の形態で説明した画像処理方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
【０１６８】
また、本実施の形態で説明した画像処理装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した画像処理装置１００の機能（取得部７２１〜描画制御部７２６）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、画像処理装置１００を製造することができる。
【０１６９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１７０】
（付記１）ラインバッファと、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得手段と、
前記取得手段によって取得された図形データを描画する描画手段と、
前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出手段と、
前記抽出手段によって抽出された深度値を前記ラインバッファにおけるｘ座標の値ごとに書き込む書込手段と、
前記書込手段によって前記ラインバッファに深度値が書き込まれた後、前記取得手段によって、あらたな描画対象図形の頂点データから生成された図形データが読み込まれると、当該図形データに含まれる任意の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較手段と、
前記比較手段の比較結果に応じて前記描画手段による前記あらたな描画対象図形の頂点データから生成された図形データの描画を禁止する描画制御手段と、
を備えることを特徴とする画像処理装置。
【０１７１】
（付記２）前記抽出手段は、前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のｙ座標が最小となる画素に設定されている深度値を前記ｘ座標の値ごとに抽出することを特徴とする付記１に記載の画像処理装置。
【０１７２】
（付記３）前記抽出手段は、前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のｙ座標が最大となる画素に設定されている深度値を前記ｘ座標の値ごとに抽出することを特徴とする付記１に記載の画像処理装置。
【０１７３】
（付記４）前記比較手段は、前記書込手段によって前記ラインバッファに深度値が書き込まれた後、前記取得手段によってあらたな図形データが読み込まれると、当該図形データに含まれる頂点座標の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較することを特徴とする付記１〜３のいずれか一つに記載の画像処理装置。
【０１７４】
（付記５）前記描画制御手段は、前記比較手段によって、前記ラインバッファに書き込まれている深度値がより小さいと判断された場合に、前記あらたな図形データの描画を禁止することを特徴とする付記１〜４のいずれか一つに記載の画像処理装置。
【０１７５】
（付記６）前記描画制御手段は、前記取得手段によって取得された図形データが前記境界図に指定されていたか否かに応じて、前記描画手段による描画の禁止／許可を制御することを特徴とする付記１〜５のいずれか一つに記載の画像処理装置。
【０１７６】
（付記７）前記ラインバッファを複数備え、
前記抽出手段は、前記取得手段によって境界図形に指定された図形データが複数取得された場合、各図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出し、
前記書込手段は、前記抽出手段によって抽出された各図形データの深度値を前記ラインバッファ群の中の異なるラインバッファにおけるｘ座標の値ごとに書き込み、
前記比較手段は、前記書込手段によって前記ラインバッファ群に深度値が書き込まれた後、前記取得手段によってあらたな図形データが読み込まれると、当該図形データに含まれる任意の画素の深度値と、前記ラインバッファ群の各ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較することを備えることを特徴とする付記１〜６のいずれか一つに記載の画像処理装置。
【０１７７】
（付記８）前記抽出手段は、前記取得手段によって境界図形に指定された図形データが複数取得された場合、各図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出し、
前記書込手段は、前記抽出手段によって抽出された各図形データの深度値の最小値を前記ラインバッファにおけるｘ座標の値ごとに書き込むことを特徴とする付記１〜６のいずれか一つに記載の画像処理装置。
【０１７８】
（付記９）前記描画手段は、前記取得手段によって取得された図形データが境界図形に指定されていた場合、前記比較手段による比較結果を無効にして前記図形データを描画することを特徴とする付記１〜８のいずれか一つに記載の画像処理装置。
【０１７９】
（付記１０）ラインバッファにアクセス可能なコンピュータを、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得手段、
前記取得手段によって取得された図形データを描画する描画手段、
前記取得手段によって取得された図形データが境界図形に指定されていた場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出手段、
前記抽出手段によって抽出された深度値を前記ラインバッファにおけるｘ座標の値ごとに書き込む書込手段、
前記書込手段によって前記ラインバッファに深度値が書き込まれた後、前記取得手段によって、あらたな描画対象図形の頂点データから生成された図形データに含まれる任意の画素の深度値と、前記ラインバッファにおけるｘ座標の値ごとに書き込まれている深度値の中の前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較手段、
前記比較手段の比較結果に応じて前記あらたな描画対象図形の頂点データから生成された図形データを描画させないように前記描画手段を制御する描画制御手段、
として機能させることを特徴とする画像処理プログラム。
【０１８０】
（付記１１）画像処理装置が、
外部から入力された描画対象図形の頂点データから生成されたｘ，ｙ座標による２次元座標にて特定される画素と、当該画素ごとの深度値とが設定された図形データを取得する取得工程と、
前記取得工程にて境界図形に指定された図形データが取得された場合、当該図形データにおいて、ｘ座標の値が同じ画素列の中のいずれか一つの画素に設定されている深度値を前記ｘ座標の値ごとに抽出する抽出工程と、
前記抽出工程によって抽出された深度値をラインバッファにおけるｘ座標の値ごとに書き込む書込工程と、
前記境界図形に指定された図形データを描画する境界描画工程と、
前記取得工程にて境界図形に指定されていない図形データが取得された場合、当該境界図形に指定されていない図形データに含まれる任意の画素の深度値と、前記ラインバッファに書き込まれているｘ座標ごとの深度値の中から前記画素と同一のｘ座標の値に書き込まれている深度値とを比較する比較工程と、
前記比較工程による比較結果に応じて、前記境界図形に指定されていない図形データを描画する図形描画工程と、
を実行することを特徴とする画像処理方法。
【０１８１】
（付記１２）描画データに含まれる第１図形データの各画素位置において、前記各画素位置に対応する第１深度値を第１軸方向に拡張して記憶し、
前記第１図形データの第２軸方向の画素位置と前記描画データに含まれる第２図形データの前記第２軸方向の所定の画素位置とを対応付け、
対応付けられた画素位置において、前記第１図形データの前記第１深度値と前記第２図形データの第２深度値とを比較し、
前記第１深度値と前記第２深度値とを比較した結果に応じて、前記第２図形データを描画するか否かを判定することを特徴とする画像処理方法。
【図面の簡単な説明】
【０１８２】
【図１】本実施の形態にかかる画像処理の概要を示す説明図である。
【図２】グラフィックスＬＳＩによる地図画像の描画例を示す説明図である。
【図３】境界道路を含んだ描画例を示す模式図である。
【図４】判断基準面の一例を示す模式図である。
【図５】鳥瞰視点の地図画像描画時の描き分け判断処理を示す説明図である。
【図６】１Ｄ深度バッファの構成を示す説明図である。
【図７−１】実施の形態にかかる画像処理装置のハードウェア構成を示すブロック図である。
【図７−２】画像処理装置の機能的構成を示すブロック図である。
【図８−１】実施の形態１におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。
【図８−２】ゲート制御器における制御をあらわす真理値表である。
【図９−１】実施の形態１における描画処理手順を示すフローチャート（その１）である。
【図９−２】実施の形態１における描画処理手順を示すフローチャート（その２）である。
【図１０−１】従来の３次元画像処理のデータの流れを示すブロック図である。
【図１０−２】実施の形態１における３次元画像処理のデータの流れを示すブロック図である。
【図１１】実施の形態１による地図画像の描画例を示す説明図である。
【図１２】実施の形態２におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。
【図１３】実施の形態２における描画処理手順を示すフローチャート（その１）である。
【図１４】実施の形態２における描画処理手順を示すフローチャート（その２）である。
【図１５】実施の形態２における３次元画像処理のデータの流れを示すブロック図である。
【図１６】実施の形態３におけるグラフィックスＬＳＩとグラフィックスメモリとの構成を示すブロック図である。
【図１７−１】実施の形態３における描画処理手順を示すフローチャート（その１）である。
【図１７−２】実施の形態３における描画処理手順を示すフローチャート（その２）である。
【図１８−１】実施の形態３における３次元画像処理のデータの流れを示すブロック図である。
【図１８−２】実施の形態３における頂点単位の深度比較を含む３次元画像処理のデータの流れを示すブロック図である。
【図１９−１】実施の形態４における描画処理手順を示すフローチャート（その１）である。
【図１９−２】実施の形態４における描画処理手順を示すフローチャート（その２）である。
【図２０】複数の境界道路の深度値が集約された１Ｄ深度バッファを示す模式図である。
【図２１】複数の境界道路の設定例を示す説明図である。
【符号の説明】
【０１８３】
１００  画像処理装置
１１０  描画処理部
１２０  １Ｄ深度バッファ
１３０  ２Ｄ深度バッファ
１４０  フレームバッファ
７００  バス
７０１  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
７０２  ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）
７０３  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
７０４  磁気ディスクドライブ
７０５  磁気ディスク
７０６  光ディスクドライブ
７０７  光ディスク
７０８  ディスプレイ
７０９  Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）
７１０  キーボード
７１１  マウス
７１２  スキャナ
７１３  プリンタ
７２１  取得部
７２２  描画部
７２３  抽出部
７２４  書込部
７２５  比較部
７２６  描画制御部
【図１】
2009288990.tif 000003
【図２】
2009288990.tif 000004
【図３】
2009288990.tif 000005
【図４】
2009288990.tif 000006
【図５】
2009288990.tif 000007
【図６】
2009288990.tif 000008
【図７−１】
2009288990.tif 000009
【図７−２】
2009288990.tif 000010
【図８−１】
2009288990.tif 000011
【図８−２】
2009288990.tif 000012
【図９−１】
2009288990.tif 000013
【図９−２】
2009288990.tif 000014
【図１０−１】
2009288990.tif 000015
【図１０−２】
2009288990.tif 000016
【図１１】
2009288990.tif 000017
【図１２】
2009288990.tif 000018
【図１３】
2009288990.tif 000019
【図１４】
2009288990.tif 000020
【図１５】
2009288990.tif 000021
【図１６】
2009288990.tif 000022
【図１７−１】
2009288990.tif 000023
【図１７−２】
2009288990.tif 000024
【図１８−１】
2009288990.tif 000025
【図１８−２】
2009288990.tif 000026
【図１９−１】
2009288990.tif 000027
【図１９−２】
2009288990.tif 000028
【図２０】
2009288990.tif 000029
【図２１】
2009288990.tif 000030