JP2009070183A - 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体 - Google Patents

図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体 Download PDF

Info

Publication number
JP2009070183A
JP2009070183A JP2007238479A JP2007238479A JP2009070183A JP 2009070183 A JP2009070183 A JP 2009070183A JP 2007238479 A JP2007238479 A JP 2007238479A JP 2007238479 A JP2007238479 A JP 2007238479A JP 2009070183 A JP2009070183 A JP 2009070183A
Authority
JP
Japan
Prior art keywords
vertex
coordinates
coordinate
vertex coordinates
graphic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007238479A
Other languages
English (en)
Other versions
JP5034806B2 (ja
Inventor
Hideaki Yamauchi
英彰 山内
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007238479A priority Critical patent/JP5034806B2/ja
Priority to US12/209,635 priority patent/US8605112B2/en
Publication of JP2009070183A publication Critical patent/JP2009070183A/ja
Application granted granted Critical
Publication of JP5034806B2 publication Critical patent/JP5034806B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/206Drawing of charts or graphs

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

【課題】VRAMへのランダムアクセスを低減させることを課題とする。
【解決手段】図形描画装置300は、一連の頂点座標が入力されると、生成部310により、当該頂点座標と当該頂点座標における仮想頂点座標を生成し、設定部320により部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定するとともに、末尾の頂点座標まで設定された後に、部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定し、描画部330により、部分図形の作成対象となる2つの頂点座標とその仮想頂点座標とに囲まれた部分図形をメモリ上に描画するとともに、当該部分図形にすでに作成済みの部分図形の一部または全部が重複する場合には重複する部分を前記メモリ上から消去することにより、一連の2次元の頂点座標を頂点とする図形を出力する。
【選択図】図3

Description

この発明は、コンピュータグラフィックスなどにおいて、メモリアドレスが連続する方向を示すX軸とX軸に交差する方向を示すY軸からなる2次元座標系に対応するメモリを用いて図形を描画する図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体に関する。
従来、たとえば、コンピュータグラフィックスなどにおいて、描画される図形の形状を記憶するステンシルバッファがある。このようなステンシルバッファ領域上に、所望の図形を描画する技術には、たとえば、頂点座標ストリームから入力された一連の頂点座標に対して、先頭の頂点座標として入力された頂点座標を共有する三角形を、頂点座標が入力される都度に、排他的論理和演算を用いて順次描画することによって、最終的に描画の対象となる図形(以下、「対象図形」という)を構成する技術がある。
また、頂点座標ストリームから頂点座標が入力される都度に、連続する2つの頂点座標によって構成される対象図形の輪郭線の辺を、一辺ずつ順次描き込んでいき、描き込まれた一辺上からステンシルバッファ領域上の一端側までの短冊状の図形を排他的論理和演算を用いて順次描画することによって、対象図形を構築する技術が公知である(たとえば、下記特許文献1、2を参照。)。
特開2001−209812号公報 特開平10−188010号公報
しかしながら、上記の従来技術において、対象図形を構成するすべての三角形は、上述したように先頭の頂点座標を共有するために、ある三角形においては先頭の頂点座標と他の頂点座標とが遠くに離れて配置され、描画の際に多数の走査線が関与してしまうという問題があった。
多数の走査線が関与した場合には、各走査線上の画素に対応するメモリアドレスが大きく異なるため、VRAM(Video RAM)からバーストアクセスを用いてステンシルバッファへの効率的なデータ転送がおこなうことができず、描画速度の低下を招くという問題があった。また、たとえば、多数の走査線が関与する三角形が多く描画される場合には、何度も走査線を往復して描画することになるため、その都度にVRAMへのランダムアクセスが発生し、描画速度の低下を招くという問題があった。
また、上記の特許文献1または2に開示された技術では、メモリアドレスが連続する方向に描画していくため、上記の問題の発生は抑えられるものの、関与する走査線においては当該走査線の一端側まで処理をおこなうため、描画処理が必要以上に広範囲に及び、描画速度が低下するという問題があった。さらに、この技術を用いた場合には、公知の技術のために詳細な説明は省略するが、別途にスキャンラインアルゴリズムと呼ばれる専用の機構を実装する必要があり、製品のコスト高につながるという問題があった。
この発明は、上述した従来技術の問題点を解決するため、VRAMおよびステンシルバッファ間の効率的なデータ転送を可能とするとともに、VRAMへのランダムアクセスを低減させ、さらに描画処理の対象となる領域を極力小さくすることにより、描画速度の向上を図ることができる図形描画装置、図形描画方法、図形描画プログラムおよび該プログラムを記録した記録媒体を提供することを目的とする。
上述した課題を解決し、目的を達成するため、この発明にかかる図形描画装置は、メモリアドレスが連続する方向を示すX軸と前記X軸に交差する方向を示すY軸からなる2次元座標系に対応するメモリを用いて図形を描画する図形描画装置において、一連の2次元座標が入力されると、当該頂点座標と、当該頂点座標のX座標値を先頭の頂点座標のX座標値に変換した仮想頂点座標とを、頂点座標ごとにメモリ上に生成し、部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定するとともに、末尾の頂点座標まで設定された後に、部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定し、設定された2つの頂点座標とその仮想頂点座標とに囲まれた部分図形をメモリ上に描画することを特徴とする。
また、描画された部分図形にすでに作成済みの部分図形の一部または全部が重複する場合には重複する部分をメモリ上から消去することにより、一連の2次元の頂点座標を頂点とする図形を出力することとしてもよい。
この発明によれば、連続した2つの頂点および当該頂点座標に対して生成された仮想頂点座標を有する部分図形によって対象図形を構成するため、描画の際に関与する走査線を連続する2つの頂点座標間にある走査線だけに抑えることができる。また、メモリアドレスが連続する方向に対して平行な辺を有する部分図形により対象図形を構成するため、それぞれの部分図形においてメモリアドレスが連続する方向への画素の比率が高まり、描画速度を向上させることができる。なお、部分図形とは、対象図形を構成する図形であって三角形または四角形である。
また、上記の発明において、頂点座標が入力される都度、連続する2つの頂点座標を結んだ線分がメモリ上にあらかじめ設定されたクリッピング領域の境界線と交差するか否かを判定し、連続する2つの頂点座標を結んだ線分と境界線とが交差する場合に、連続する2つの頂点座標のうちの少なくともいずれか一方の頂点座標に基づいて、クリッピング領域の境界線上に実効頂点座標と、当該実効頂点座標における仮想頂点座標を生成し、生成された実効頂点座標を、当該実効頂点座標の元となった頂点座標の代わりとしてもよい。
この発明によれば、入力された頂点座標がクリッピング領域に含まれない場合においても上記の発明の効果を得ることができる。
また、上記の発明において、連続する2つの頂点座標を結んだ線分と境界線とが交差すると判定された場合に、当該連続する2つの頂点座標を結んだ線分と、クリッピング領域の境界線との交点座標を実効頂点座標として生成することとしてもよい。
この発明によれば、実効頂点座標を境界線上に生成することにより、クリッピング領域内に含まれる対象図形をより正確に描画することができるとともに上記の発明の効果を得ることができる。
また、上記の発明において、先頭の頂点座標を含む連続した2つの頂点座標を結んだ線分と境界線とが交差すると判定された場合に、交点座標を先頭の頂点座標に代わる頂点座標とし、入力された頂点座標または生成された交点座標のX座標値を実効始点座標のX座標値に変換することによって仮想頂点座標を生成することとしてもよい。
この発明によれば、先頭の頂点座標がクリッピング領域内に含まれない場合においても実効始点座標を生成することにより、上記の発明の効果を得ることができる。
また、上記の発明において、クリッピング領域内の任意の座標を実効始点座標とすることとしてもよい。
この発明によれば、クリッピング領域内における最適な座標を実効始点座標とすることで、より少ない処理で上記の発明の効果を得ることができる。
この発明の図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体によれば、VRAMおよびステンシルバッファ間の効率的なデータ転送を可能とし、VRAMへのランダムアクセスを低減させ、描画速度を向上できるという効果を奏する。
以下に添付図面を参照して、この発明にかかる図形描画装置の好適な実施の形態を詳細に説明する。以下に示す実施の形態1〜3では、図形描画装置は、入力された頂点座標に対し、頂点座標ストリーム中に存在しない頂点座標である仮想頂点座標を便宜的に生成し、仮想頂点座標を頂点として含んだ部分図形を形成し、当該部分図形を頂点座標が入力される都度に順次描画することによって対象図形を構成する。これにより、各部分図形において、メモリアドレスが連続する画素が多く含まれるため、効率的な描画が可能となる。
なお、以下に示す実施の形態1〜3では、頂点Vnの頂点座標は(Vnx,Vny)であらわすものとする。同様に交点座標のCnにおいても(Cnx,Cny)であらわすものとする。
(実施の形態1)
(実施の形態1にかかる図形描画装置による対象図形の描画)
まず、この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れについて説明する。図1−1〜1−8は、この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)〜(その8)である。図1−1〜1−8においては、頂点座標ストリームから一連の頂点座標として、頂点V0〜V6の頂点座標が順次入力された場合の描画の流れを示したものである。
図1において、メモリアドレスが連続する方向を示すX軸とX軸に交差(たとえば、直交)する方向を示すY軸からなる2次元座標系に対応するステンシルバッファ領域100に対する対象図形の描画に際して、まず、図形描画装置には、頂点座標ストリームから頂点座標入力インターフェースを介して、先頭の頂点座標として(V0x,V0y)が入力され、続いて中間頂点座標として(V1x,V1y)が入力される。
このとき、図形描画装置は、先頭の頂点座標(V0x,V0y)を始点座標(V0x,V0y)、中間頂点座標(V1x,V1y)を中間頂点座標(V1x,V1y)として設定する。つぎに、図形描画装置は、始点座標(V0x,V0y)および中間頂点座標(V1x,V1y)に基づいて仮想頂点V1’の仮想頂点座標(V0x,V1y)を生成する。すなわち、仮想頂点V1’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V1x,V1y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V1’を生成したのち、V0、V1、V1’を頂点に有する部分図形をステンシルバッファ領域100上に描画する(図1−1)。
つぎに、同様にして、図形描画装置に中間頂点座標(V2x,V2y)が入力されると、図形描画装置は、始点座標(V0x,V0y)および中間頂点座標(V2x,V2y)に基づいて仮想頂点V2’の仮想頂点座標(V0x,V2y)を生成する。すなわち、仮想頂点V2’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V2x,V2y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V2’を生成したのち、V1、V1’、V2’、V2を頂点に有する部分図形をステンシルバッファ領域100上に描画する(図1−2)。
つぎに、同様にして、図形描画装置に中間頂点座標(V3x,V3y)が入力されると、図形描画装置は、始点座標(V0x,V0y)および中間頂点座標(V3x,V3y)に基づいて仮想頂点V3’の仮想頂点座標(V0x,V3y)を生成する。すなわち、仮想頂点V3’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V3x,V3y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V3’を生成したのち、V2、V2’、V3’、V3を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域1Aにおいては、偶数個の図形が重複するため、図形が消去される(図1−3)。
つぎに、同様にして、図形描画装置に中間頂点座標(V4x,V4y)が入力されると、図形描画装置は、始点座標(V0x,V0y)および中間頂点座標(V4x,V4y)に基づいて仮想頂点V4’の仮想頂点座標(V0x,V4y)を生成する。すなわち、仮想頂点V4’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V4x,V4y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V4’を生成したのち、V3、V3’、V4’、V4を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域1Bにおいては、偶数個の図形が重複するため、図形が消去される(図1−4)。
つぎに、同様にして、図形描画装置に中間頂点座標(V5x,V5y)が入力されると、図形描画装置は、始点座標(V0x,V0y)および中間頂点座標(V5x,V5y)に基づいて仮想頂点V5’の仮想頂点座標(V0x,V5y)を生成する。すなわち、仮想頂点V5’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V5x,V5y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V5’を生成したのち、V4、V4’、V5’、V5を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域1Cにおいては、偶数個の図形が重複するため、図形が消去される(図1−5)。
つぎに、同様にして、図形描画装置に一連の頂点座標の末尾の頂点座標(V6x,V6y)が入力されると、図形描画装置は、(V6x,V6y)を末尾の頂点座標と判別したのち、始点座標(V0x,V0y)および中間頂点座標(V6x,V6y)に基づいて仮想頂点V6’の仮想頂点座標(V0x,V6y)を生成する。すなわち、仮想頂点V6’は、始点座標(V0x,V0y)とX座標を同じくし、中間頂点座標(V6x,V6y)とY座標を同じくする座標上に生成される。図形描画装置は、仮想頂点V6’を生成したのち、V5、V5’、V6’、V6を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域1Dにおいては、偶数個の図形が重複するため、図形が消去される(図1−6)。
つぎに、図形描画装置は、末尾の頂点座標であると判別された(V6x,V6y)までの入力が終了した場合、終点座標として設定された(V0x,V0y)を再び入力する。図形描画装置は、終点座標(V0x,V0y)が入力されると、終点座標(V0x,V0y)および末尾の頂点座標(V6x,V6y)およびその仮想頂点座標(V0x,V6y)に基づいて、V6、V6’、V0を頂点に有する最後の部分図形(詳細は後述する)を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域1Eにおいては、偶数個の図形が重複するため、図形が消去される(図1−7)。
以上に説明したように、実施の形態1の図形描画装置において、入力された頂点座標から、仮想頂点V1’〜V6’を生成し、頂点V0〜V6および仮想頂点V1’〜V6’に基づいて部分図形をステンシルバッファ領域100上に頂点座標が入力される都度に順次描画していくことにより、頂点V0〜V6を頂点として有する対象図形がステンシルバッファ領域100上に描画されることとなる(図1−8)。
(コンピュータ装置のハードウェア構成)
つぎに、この発明の実施の形態1にかかるコンピュータ装置のハードウェア構成について説明する。図2は、この発明の実施の形態1にかかるコンピュータ装置のハードウェア構成を示す説明図である。
図2において、コンピュータ装置200は、コンピュータ本体210と、入力装置220と、出力装置230と、から構成されており、不図示のルータやモデムを介してLAN,WANやインターネットなどのネットワーク240に接続可能である。
コンピュータ装置200は、CPU,メモリ,インターフェースを有する。CPUは、コンピュータ装置200の全体の制御を司る。メモリは、ROM,RAM,HD,光ディスク211,フラッシュメモリから構成される。メモリは、CPUのワークエリアとして使用される。
また、メモリには、各種プログラムが格納されており、CPUからの命令に応じてロードされる。HDおよび光ディスク211は、ディスクドライブによりデータのリード/ライトが制御される。また、光ディスク211およびフラッシュメモリは、コンピュータ本体210に対して着脱自在である。インターフェースは、入力装置220からの入力、出力装置230からの出力、ネットワーク240に対する送受信の制御をおこなう。
また、入力装置220としては、キーボード221、マウス222、スキャナ223などがある。キーボード221は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス222は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ223は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体210内のメモリに格納される。なお、スキャナ223にOCR機能を持たせてもよい。
また、出力装置230としては、ディスプレイ231、プリンタ232、スピーカ233などがある。ディスプレイ231は、カーソル、アイコン、あるいはツールボックスなどをはじめ、文書、画像、機能情報などのデータを表示する。また、プリンタ232は、画像データや文書データを印刷する。また、スピーカ233は、効果音や読み上げ音などの音声を出力する。
上述した図形描画装置およびステンシルバッファは、たとえば、コンピュータ本体210内部に設けられたグラフィックスLSIおよびメモリによって実現され、コンピュータ本体210にインストールされたアプリケーションによって生成された一連の頂点座標に基づいて、ディスプレイ231に表示される画像などの形状を記憶する。
(実施の形態1の図形描画装置の機能的構成)
つぎに、この発明にかかる実施の形態1について説明する。まず、この発明の実施の形態1にかかる図形描画装置の機能的構成について説明する。図3は、この発明の実施の形態1にかかる図形描画装置の機能的構成を示すブロック図である。図3に示すように、実施の形態1の図形描画装置300は、頂点種別判定部301と、先頭座標バッファ302と、先頭座標再利用部303と、頂点座標バッファ304と、生成部310と、設定部320と、描画部330とを備える。
図形描画装置300は、たとえば、アプリケーションによって生成された複数の2次元の頂点座標からなる一連の頂点座標が頂点座標ストリーム340として、頂点座標入力インターフェース350を介して図形描画装置300に順次入力されると、当該一連の頂点座標に基づいた対象図形をステンシルバッファ360のステンシルバッファ領域上に描画する機能を有する。具体的には、たとえば、図1−1〜1−8に示したように、頂点座標ストリーム340から頂点座標として、V0〜V6の頂点座標が順次入力された場合には、当該V0〜V6を頂点に有する図形をステンシルバッファ360のステンシルバッファ領域100上に描画する。
頂点種別判定部301は、入力された頂点座標から当該頂点座標における頂点の種別を判別する機能を有する。頂点の種別としては、具体的に、たとえば、先頭の頂点座標、中間頂点座標、末尾の頂点座標がある。先頭の頂点座標は、入力された一連の頂点座標のうちの先頭となる頂点座標である。先頭の頂点座標は、たとえば、図1−1〜1−8中、V0であらわされた頂点の頂点座標である。
末尾の頂点座標は、入力された一連の頂点座標のうちの末尾となる頂点座標である。末尾の頂点座標は、たとえば、図1−7および図1−8中、V6であらわされた頂点の頂点座標である。
中間頂点座標とは、入力された一連の頂点座標のうちの先頭の頂点座標および末尾の頂点座標以外の頂点座標である。中間頂点座標は、たとえば、図1−1〜1−8中、V1〜V5であらわされた頂点の頂点座標である。すなわち、頂点種別判定部301は、入力された頂点座標ごとに、当該頂点座標が、先頭の頂点座標、中間頂点座標、末尾の頂点座標のうちのいずれに該当するかを判別する。
頂点種別判定部301は、具体的には、たとえば、一連の頂点座標が各種のコマンドに挟まれて入力される場合には、開始コマンド(たとえば、beginなどのコマンド)や終了コマンド(たとえば、endなどのコマンド)をトリガとすることによって判別することができる。また、一連の頂点座標が配列として入力される場合には、配列インデックスの開始値と終了値とカウンタとを組み合わせることによって判別することとしてもよい。また、頂点種別判定部301は、頂点の種別として、後述する実効始点座標も判別できることとしてもよい。
頂点種別判定部301は、入力された頂点座標における頂点の種別を判別したのち、当該頂点座標を判別された結果に基づいて、先頭座標バッファ302および設定部320へ出力する。すなわち、先頭の頂点座標であると判別された頂点座標(たとえば、V0の頂点座標)は、先頭座標バッファ302へ出力されるとともに設定部320へ出力され、中間頂点座標(たとえば、V1〜V5の頂点座標)は、設定部320へ出力される。
先頭座標バッファ302は、頂点種別判定部301によって先頭の頂点座標であると判別された頂点座標を記憶する機能を有する。先頭座標バッファ302に記憶された先頭の頂点座標は、対象図形の描画処理が完了するまで保持される。先頭座標バッファ302は、該当する頂点座標を記憶したのち、当該頂点座標を先頭座標再利用部303へ出力する。また、先頭座標バッファ302は、先頭の頂点座標を記憶するとともに、後述する実効始点座標(たとえば、図5−1〜5−9中のC0、図8−1〜8−6中のV-1の座標)も記憶することとしてもよい。
先頭座標再利用部303は、頂点種別判定部301によって先頭の頂点座標と判別された頂点座標に対し、当該先頭の頂点座標を再利用する頂点座標として生成する機能を有する。先頭座標再利用部303に入力された先頭の頂点座標は、後述する終点座標生成部323へ出力される。
頂点座標バッファ304は、入力された一連の頂点座標を、頂点座標ごとに記憶する機能を有する。頂点座標バッファ304に記憶される頂点座標は、頂点座標が入力されるごとに書き換えられる。具体的には、入力された頂点座標に対し、一つ前に入力された頂点座標(以下、「前回頂点座標」という)が記憶される。具体的には、たとえば、頂点座標としてV2の頂点座標が新たに入力されてきた場合には、頂点座標バッファ304にはV2の前回頂点であるV1の頂点座標が記憶されている。
生成部310は、一連の頂点座標が入力されると、当該頂点座標と、当該頂点座標のX座標値を先頭の頂点座標のX座標値に変換した仮想頂点座標とを、頂点座標ごとにメモリ上に生成する機能を有する。生成部310は、具体的には、たとえば、頂点座標ストリーム340から入力された一連の頂点座標に基づいて、一連の頂点座標から頂点座標ごとに、頂点座標とその仮想頂点座標を生成する。
生成部310は、具体的には、仮想頂点座標生成部311によって構成される。仮想頂点座標生成部311は、後述する設定部320に設けられたX座標バッファ324に記憶された先頭の頂点座標のX座標(たとえば、V0X)、およびY座標バッファ325に記憶された中間頂点座標のY座標(たとえば、V1y)に基づいて、仮想頂点座標を生成し、生成した仮想頂点座標を設定部320へ出力する機能を有する。具体的には、たとえば、入力された頂点座標に対し、当該頂点座標における仮想頂点座標を、入力された頂点座標のX座標を先頭の頂点座標のX座標に変換することによって生成する。
より具体的には、たとえば、生成部310は、図1−1〜1−8で示したように、一連の頂点座標としてV0〜V6の頂点座標が入力されてきた場合に、V0〜V6の頂点座標および仮想頂点V1’〜V6’の仮想頂点座標をステンシルバッファ360のステンシルバッファ領域100上に生成する。
設定部320は、部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定するとともに、末尾の頂点座標まで設定された後に、部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定する機能を有する。設定部320は、具体的には、たとえば、描画される部分図形の頂点となる2つの頂点座標とその仮想頂点座標とを関連づけて設定し、描画部330へ出力する。
設定部320は、具体的には、生成部310によって生成された頂点座標とその仮想頂点座標とを受け付けた場合に、当該頂点座標を始点座標・中間頂点座標・終点座標のいずれかとして設定するとともに、当該頂点座標と連続する頂点座標とそれらの仮想頂点座標とを関連づけて設定し、関連づけたのちに描画部330へ出力する。
また、設定部320は、入力された一連の頂点座標に応じた部分図形がすべて描画されたのちに、先頭の頂点座標と末尾の頂点座標とを関連づけて設定することにより、最後の部分図形の頂点座標を設定する。最後の部分図形とは、終点座標(すなわち、始点座標)と、末尾の頂点座標と、当該末尾の頂点座標の仮想頂点座標とを頂点に有する部分図形である。
より具体的には、たとえば、設定部320は、図1−1〜1−8で示したように、部分図形の作成対象となる2つの頂点座標としてV0から順次、V0とV1、V1とV2、V2とV3、といったように関連づけて設定し、末尾の頂点座標であるV6まで設定されたのちには、V6とV0とを関連づけて設定する。
設定部320は、具体的には、始点座標生成部321と、中間頂点座標生成部322と、終点座標生成部323と、X座標バッファ324と、Y座標バッファ325と、頂点FIFO(First In,First Out)326とによって構成される。
始点座標生成部321は、入力された頂点座標から始点座標を生成する機能を有する。始点座標とは、具体的に、対象図形の描画の際に基準となる頂点の頂点座標である。始点座標生成部321は、具体的には、たとえば、入力された頂点座標の先頭の頂点座標に対し、当該頂点座標を始点座標と設定することによって、始点座標を生成する。始点座標生成部321は、始点座標を生成したのち、当該始点座標を頂点FIFO326へ出力する。
中間頂点座標生成部322は、中間頂点座標を生成する機能を有する。中間頂点座標とは、具体的に、対象図形の頂点座標のうち、始点座標以外の他の頂点座標である。中間頂点座標生成部322は、具体的には、たとえば、入力された頂点座標のうちの先頭の頂点座標以外の頂点座標に対し、中間頂点座標と設定することによって、中間頂点座標を生成する。中間頂点座標生成部322は、中間頂点座標を生成したのち、当該中間頂点座標を頂点FIFO326へ出力する。
終点座標生成部323は、入力された頂点座標から終点座標を生成する機能を有する。終点座標とは、具体的に、対象図形の描画処理において、最後に入力される頂点座標であり、始点座標と同一となる座標である。終点座標生成部323は、具体的には、たとえば、先頭座標再利用部303から入力された頂点座標に対し、終点座標と設定することによって、終点座標を生成する。終点座標生成部323は、終点座標を生成したのち、当該終点座標を頂点FIFO326へ出力する。
X座標バッファ324は、始点座標のX座標を記憶する機能を有する。具体的には、メモリアドレスが連続する方向を示すX軸に対する始点座標のX座標を記憶する。Y座標バッファ325は、中間頂点座標のY座標を記録する機能を有する。具体的には、X軸に直交する方向を示すY軸に対する中間頂点座標のY座標を記憶する。
頂点FIFO326は、各座標生成部311、321〜323から入力された各頂点座標を格納するとともに、格納された当該頂点座標を所定のタイミングで描画部330へ出力する機能を有する。頂点FIFO326に格納された頂点座標は、具体的には、たとえば、描画の開始指示があった場合に、格納された順に描画部330へ出力される。より具体的には、たとえば、描画される部分図形の頂点となる頂点座標とその仮想頂点座標を入力または生成された順に格納し、描画される部分図形の作成対象となる頂点座標とその仮想頂点座標とがすべて揃った場合に、当該頂点座標とその仮想頂点座標とを関連づけて、描画部330へ出力する。
より具体的には、たとえば、頂点FIFO326は、図1−2に示した部分図形を描画する場合には、頂点座標としてV1とV2の頂点座標、および仮想頂点座標としてV1’とV2’の仮想頂点座標がすべて揃ったタイミングで、これらの頂点座標および仮想頂点座標を描画部330へ出力する。
描画部330は、描画処理と消去処理とにより図形を出力する機能を有する。描画処理は、設定部320よって設定された2つの頂点座標とその仮想頂点座標とに囲まれた部分図形をメモリ上に描画する処理である。消去処理は、描画処理によって描画された部分図形にすでに作成済みの部分図形の一部または全部が重複する場合に重複する部分をメモリ上から消去する処理である。
たとえば、描画処理および消去処理は排他的論理和演算に基づいておこなわれ、描画処理によって描画された部分図形において、奇数回の重複する領域は描画されるとともに、偶数回の領域は消去処理によって消去される。
より具体的には、たとえば、描画部330は、図1−3で示したように、設定部320によって関連づけられて入力された連続する2つの頂点座標(たとえば、V2とV3の頂点座標)とその仮想頂点座標(たとえば、V2’とV3’の仮想頂点座標)とを頂点に有する部分図形を描画するとともに、重複する部分(たとえば、1A)をステンシルバッファ360のステンシルバッファ領域100上から消去する。
描画部330は、具体的には、図形描画部331と、画素論理演算部332とによって構成される。図形描画部331は、頂点FIFO326に格納された頂点座標およびその仮想頂点座標から、当該頂点座標とその仮想頂点座標とによって囲まれた部分図形を描画する機能を有する。具体的には、たとえば、設定部320によって関連づけられた頂点座標とその仮想頂点座標とから、当該頂点座標とその仮想頂点座標とを頂点に有する閉多角形をステンシルバッファ360のステンシルバッファ領域100上に描画する。
画素論理演算部332は、図形描画部331によって描画された部分図形に対し、排他的論理和演算をおこなう機能を有する。画素論理演算部332は、演算された結果を図形描画部331へ出力することにより、図形描画部331は、演算された結果に基づいた描画をおこなう。具体的には、図形描画部331によって描画された複数の部分図形において、奇数回部分図形が重複した領域では当該重複した領域に対応した図形が描画され、偶数回部分図形が重複した領域では当該重複した領域に対応した図形が消去される。
(実施の形態1の図形描画装置の処理手順)
つぎに、この発明の実施の形態1にかかる図形描画装置300の処理手順について説明する。図4は、この発明の実施の形態1にかかる図形描画装置の処理手順を示すフローチャートである。図4に示すフローチャートは、たとえば、アプリケーションから対象図形の描画の指示を受け付けた場合に開始される。
図形描画装置300は、まず、頂点座標が入力されるまで待機する(ステップS401:Noのループ)。具体的には、たとえば、アプリケーションによって生成された頂点座標ストリーム340から頂点座標入力インターフェース350を介して、図形描画装置300に頂点座標が入力されるまで待機する。
ステップS401において、頂点座標が入力された場合(ステップS401:Yes)、当該頂点座標を記憶する(ステップS402)。具体的には、図形描画装置300は、入力された頂点座標を頂点座標バッファ304に記憶する。
つぎに、入力された頂点座標が一連の頂点座標のうちの先頭の頂点座標であるか否かを判定する(ステップS403)。具体的には、図形描画装置300は、入力された頂点座標から頂点種別判定部301によって当該頂点座標の種別を判別することにより判定する。ステップS403において、入力された頂点座標が先頭の頂点座標であった場合(ステップS403:Yes)にはステップS404へ進み、先頭の頂点座標でなかった場合(ステップS403:No)にはステップS408へ進む。
ステップS403において、入力された頂点座標が先頭の頂点座標であると判定された場合(ステップS403:Yes)には、当該先頭の頂点座標を記憶する(ステップS404)。具体的には、図形描画装置300は、頂点種別判定部301によって先頭の頂点座標として判別された頂点座標を先頭座標バッファ302に記憶する。
ステップS404において、先頭の頂点座標を記憶したのち、記憶された先頭座標から始点座標を生成する(ステップS405)。具体的には、図形描画装置300は、先頭座標バッファ302に記憶された先頭の頂点座標から、始点座標生成部321によって始点座標を生成する。より具体的には、たとえば、先頭の頂点座標が(V0x,V0y)であった場合には、(V0x,V0y)を始点座標として、始点座標(V0x,V0y)を生成する。
ステップS405において、始点座標を生成したのち、生成した始点座標のX座標を記憶する(ステップS406)。具体的には、図形描画装置300は、始点座標生成部321によって生成された始点座標のX座標をX座標バッファ324に記憶する。より具体的には、たとえば、始点座標が(V0x,V0y)である場合には、始点座標(V0x,V0y)のX座標V0xがX座標バッファ324に記憶されることとなる。
ステップS406において、始点座標のX座標を記憶したのち、始点座標を頂点FIFOに格納する(ステップS407)。具体的には、図形描画装置300は、始点座標のX座標をX座標バッファ324に記憶したのち、始点座標を頂点FIFO326へ出力し、当該始点座標を頂点FIFO326に格納する。より具体的には、たとえば、始点座標が(V0x,V0y)である場合には、当該始点座標(V0x,V0y)が頂点FIFO326に格納されることとなる。
ステップS403において、入力された頂点座標が先頭の頂点座標でないと判定された場合(ステップS403:No)には、当該頂点座標から中間頂点座標を生成する(ステップS408)。具体的には、図形描画装置300は、先頭の頂点座標でないと判定された頂点座標から中間頂点座標生成部322によって中間頂点座標を生成する。より具体的には、たとえば、先頭の頂点座標でないと判定された頂点座標が(V1x,V1y)である場合には、先頭の頂点座標でないと判定された頂点座標(V1x,V1y)から中間頂点座標(V1x,V1y)を生成する。
ステップS408において、中間頂点座標を生成したのち、生成した中間頂点座標のY座標を記憶する(ステップS409)。具体的には、図形描画装置300は、中間頂点座標生成部322によって生成された中間頂点座標のY座標をY座標バッファ325に記憶する。より具体的には、たとえば、中間頂点座標が(V1x,V1y)である場合には、中間頂点座標(V1x,V1y)のY座標V1yがY座標バッファ325に記憶されることとなる。
ステップS409において、中間頂点座標のY座標を記憶したのち、中間頂点座標を頂点FIFOに格納する(ステップS410)。具体的には、図形描画装置300は、中間頂点座標のY座標をY座標バッファ325に記憶したのち、中間頂点座標を頂点FIFO326へ出力し、当該中間頂点座標を頂点FIFO326に格納する。より具体的には、たとえば、中間頂点座標が(V1x,V1y)である場合には、当該中間頂点座標(V1x,V1y)が頂点FIFO326に格納されることとなる。
ステップS407およびステップS410において、始点座標および中間頂点座標が頂点FIFOに格納されたのち、始点座標のX座標と中間頂点座標のY座標とから仮想頂点座標を生成する(ステップS411)。具体的には、図形描画装置300は、X座標バッファ324に記憶された始点座標のX座標と、Y座標バッファ325に記憶された中間頂点座標のY座標とから、仮想頂点座標生成部311によって仮想頂点座標を生成する。より具体的には、たとえば、X座標バッファ324に記憶されたX座標がV0xであり、Y座標バッファ325に記憶されたY座標がV1yである場合には、仮想頂点V1’の仮想頂点座標(V0x,V1y)が生成されることとなる。
ステップS411において、仮想頂点座標を生成したのち、生成された仮想頂点座標を頂点FIFOに格納する(ステップS412)。具体的には、図形描画装置300は、X座標バッファ324に記憶されたX座標と、Y座標バッファ325に記憶されたY座標とから仮想頂点座標生成部311によって仮想頂点座標を生成し、当該仮想頂点座標を頂点FIFO326へ出力することにより、当該仮想頂点座標を頂点FIFO326に格納する。より具体的には、たとえば、仮想頂点座標が(V0x,V1y)である場合には、当該仮想頂点座標(V0x,V1y)が頂点FIFO326に格納されることとなる。
ステップS412において、頂点FIFOに格納されている頂点座標から部分図形を描画する(ステップS413)。具体的には、図形描画装置300は、頂点FIFO326に格納された部分図形の作成対象となる連続する2つの頂点座標と、その仮想頂点座標を描画部330へ出力することによって、描画部330により、ステンシルバッファ360のステンシルバッファ領域上に部分図形を描画する。より具体的には、たとえば、頂点FIFO326に格納されている頂点座標が、(V0x,V0y)、(V1x,V1y)、(V0x,V1y)である場合には、V0、V1、V1’を頂点に有する部分図形がステンシルバッファ領域100上に描画されることとなる。
ステップS413において、部分図形を描画したのち、すべての頂点座標が入力されたか否かを判定する(ステップS414)。具体的には、図形描画装置300は、頂点種別判定部301によって末尾の頂点座標と判別された頂点座標が入力された場合に、すべての頂点座標が入力されたと判定する。
ステップS414において、すべての頂点座標が入力されたと判定された場合(ステップS414:Yes)には、最後の部分図形を描画する(ステップS415)。最後の部分図形を描画したのち、一連の処理を終了する。具体的には、最後の部分図形は、終点座標生成部323によって生成された終点座標と、末尾の頂点座標と、当該頂点座標の仮想頂点座標とに基づいて描画される。すべての頂点座標が入力されていないと判定された場合(ステップS414:No)には、ステップS401に戻り、同様の処理を繰り返す。
以上、説明したように、実施の形態1の図形描画装置300によれば、対象図形の描画に際して、頂点座標ストリーム340には存在しない仮想頂点V1’〜V6’の仮想頂点座標を便宜的に生成し、連続した2つの頂点座標および当該頂点座標に対して生成された仮想頂点座標を有する部分図形によって対象図形を構成するため、描画の際に関与する走査線を連続する2つの頂点座標間にある走査線だけに抑えることができ、メモリアドレスが連続する画素の比率を高めVRAMへのランダムアクセスを減らし、描画速度を向上させることができる。
(実施の形態2)
つぎに、この発明にかかる実施の形態2について説明する。実施の形態2においては、対象図形中にクリッピングが発生した場合における描画について説明する。なお、上述した実施の形態1と同一の構成については同一符号とし、説明を省略する。
クリッピングとは、公知の技術であるため詳細な説明は省略するが、特定された範囲の領域内(たとえば、特定された矩形の内部の領域)のみを描画の対象とする技術である。たとえば、入力された頂点座標が特定された範囲、すなわち、クリッピング領域に含まれない場合は、クリッピング領域の境界線を越えて、ラインをクリッピング領域外に引いたりすることはなく、クリッピング領域に含まれる箇所のみが描画される。
(実効頂点座標について)
実施の形態2において、図形描画装置は、たとえば、入力された一連の頂点座標のうち、クリッピング領域外となる頂点座標に対し、実効頂点座標を生成し、生成された実効頂点座標に基づいて描画をおこなう。
具体的には、入力された一連の頂点座標のうち、先頭の頂点座標がクリッピング領域外であった場合には、実施の形態1における始点座標の代わりとして実効始点座標を生成し、他の頂点座標がクリッピング領域外であった場合には、実施の形態1の中間頂点座標の代わりとして実効中間頂点座標を生成する。
実効始点座標は、たとえば、ステンシルバッファ領域上に設定されたクリッピング領域に初めて含まれる頂点座標と、当該頂点座標の直前の頂点座標とに基づいて算出されるクリッピング領域の境界線上の座標である。より具体的には、たとえば、クリッピング領域に初めて含まれる頂点座標と、当該頂点座標における前回頂点座標とを結んだ線分と、クリッピング領域の境界線との交点座標である。
実効中間頂点座標は、たとえば、ステンシルバッファ領域上に設定されたクリッピング領域と、連続する2つの頂点座標とに基づいて算出されるクリッピング領域の境界線上の座標である。より具体的には、クリッピング領域の境界線と、連続する2つの頂点座標を結んだ線分との交点座標である。
終点座標は、実効始点座標と同一の座標として設定される。すなわち、ステンシルバッファ上に設定されたクリッピング領域に初めて含まれる頂点座標と、当該頂点座標の直前の頂点座標とに基づいて算出されるクリッピング領域の境界線上の座標である。より具体的には、たとえば、ステンシルバッファ上に設定されたクリッピング領域に初めて含まれる頂点座標と、当該頂点座標の直前の頂点座標とを結んだ線分と、クリッピング領域の境界線との交点座標である。
なお、先頭の頂点座標がクリッピング領域に含まれず、実効始点座標が生成された場合において、図形描画装置は、入力された一連の頂点座標のうち、末尾の頂点座標が入力されたと判別された場合に、つぎの頂点座標として先頭の頂点座標を入力し、最後に入力される頂点座標として終点座標が入力される。すなわち、実施の形態2においては、最後の部分図形は、先頭の頂点座標、当該先頭の頂点座標に対する仮想頂点座標、終点座標を頂点に有する部分図形となる。
(実施の形態2の図形描画装置における描画)
つぎに、この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れについて説明する。図5−1〜5−9は、この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)〜(その9)である。図5に示すように、実施の形態2おいては、ステンシルバッファ領域100上にあらかじめクリッピング領域500が設定されている。
まず、図形描画装置には、頂点座標ストリームから頂点座標入力インターフェースを介して、V0〜V2の頂点座標が順次入力されるが、いずれもクリッピング領域500外の座標であり、V3の頂点座標(V3x,V3y)によって、初めて頂点座標がクリッピング領域500内に含まれる座標となる。このとき、図形描画装置は、V2とV3とを結んだ線分と、クリッピング領域500の境界線500aとの交点C0の交点座標(C0x,C0y)を算出し、実効始点座標(C0x,C0y)として設定し、(C0x,C0y)のX座標をX座標バッファ324に記憶する。
つぎに、図形描画装置は、実効始点座標(C0x,C0y)および中間頂点座標(V3x,V3y)に基づいて仮想頂点V3’の仮想頂点座標(C0x,V3y)を生成する。すなわち、仮想頂点座標(C0x,V3y)は、実効始点座標(C0x,C0y)とX座標を同じくし、中間頂点座標(V3x,V3y)とY座標を同じくする座標である。図形描画装置は、仮想頂点座標(C0x,V3y)を生成したのち、C0、V3’、V3を頂点に有する部分図形をステンシルバッファ領域100上に描画する(図5−1)。
つぎに、同様にして、図形描画装置に中間頂点座標(V4x,V4y)が入力される。ここで、(V4x,V4y)はクリッピング領域500外の座標であるため、図形描画装置は、V3とV4とを結んだ線分と、境界線500aとの交点C1の交点座標(C1x,C1y)を算出し、交点座標(C1x,C1y)を実効中間頂点座標(C1x,C1y)として生成する。実効中間頂点座標(C1x,C1y)を生成したのち、(C1x,C1y)のY座標をY座標バッファ325に記憶する。つぎに、図形描画装置は、実効始点座標(C0x,C0y)および実効中間頂点座標(C1x,C1y)に基づいて仮想頂点C1’の仮想頂点座標(C0x,C1y)を生成する。
すなわち、仮想頂点座標(C0x,C1y)は、実効始点座標(C0x,C0y)とX座標を同じくし、実効中間頂点座標(C1x,C1y)とY座標を同じくする座標である。図形描画装置は、仮想頂点C1’の仮想頂点座標(C0x,C1y)を生成したのち、V3、V3’、C1’、C1を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域5Aにおいては、偶数個の図形が重複するため、図形が消去される(図5−2)。
つぎに、同様にして、図形描画装置に中間頂点座標(V5x,V5y)が入力される。ここで、(V5x,V5y)はクリッピング領域500外の座標であるため、図形描画装置は、V4とV5とを結んだ線分と、境界線500aとの交点C2の交点座標(C2x,C2y)および交点C3の交点座標(C3x,C3y)をそれぞれ算出する。(C2x,C2y)および(C3x,C3y)を算出したのち、交点座標(C2x,C2y)および(C3x,C3y)を実効中間頂点座標(C2x,C2y)および(C3x,C3y)として生成し、実効中間頂点座標(C2x,C2y)および(C3x,C3y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および実効中間頂点座標(C2x,C2y)および実効中間頂点座標(C3x,C3y)に基づいて、仮想頂点のC2’、C3’の仮想頂点座標(C0x,C2y)、(C0x,C3y)をそれぞれ生成する。
すなわち、仮想頂点座標(C0x,C2y)は実効始点座標(C0x,C0y)とX座標を同じくし実効中間頂点座標(C2x,C2y)とY座標を同じくする座標であり、仮想頂点座標(C0x,C3y)は実効始点座標(C0x,C0y)とX座標を同じくし実効中間頂点座標(C3x,C3y)とY座標を同じくする座標である。図形描画装置は、仮想頂点座標(C0x,C2y)および(C0x,C3y)を生成したのち、C2、C2’、C3’、C3を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域5Bにおいては、偶数個の図形が重複するため、図形が消去される(図5−3)。
つぎに、同様にして、図形描画装置に中間頂点座標(V6x,V6y)が入力される。ここで、(V6x,V6y)はクリッピング領域500内の座標であるため、頂点座標がクリッピング領域500外からクリッピング領域500内に流入する。図形描画装置は、V5とV6とを結んだ線分と、境界線500aとの交点C4の交点座標(C4x,C4y)を算出する。(C4x,C4y)を算出したのち、実効中間頂点座標(C4x,C4y)を生成し、(C4x,C4y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および実効中間頂点座標(C4x,C4y)に基づいて、仮想頂点C4’の仮想頂点座標(C0x,C4y)を生成する。
すなわち、仮想頂点座標(C0x,C4y)は、実効始点座標(C0x,C0y)とX座標を同じくし、実効中間頂点座標(C4x,C4y)とY座標を同じくする座標である。図形描画装置は、仮想頂点座標(C0x,C4y)を生成したのち、C3、C3’、C4’、C4を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図5−4)。
つぎに、実効始点座標(C0x,C0y)および中間頂点座標(V6x,V6y)に基づいて、仮想頂点V6’の仮想頂点座標(C0x,V6y)を生成する。すなわち、仮想頂点座標(C0x,V6y)は、実効始点座標(C0x,C0y)とX座標を同じくし、中間頂点座標(V6x,V6y)とY座標を同じくする座標である。図形描画装置は、仮想頂点座標(C0x,V6y)を生成したのち、C4、C4’、V6’、V6を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図5−5)。
つぎに、図形描画装置は、末尾の頂点座標であると判別された(V6x,V6y)までの入力が終了した場合、再び、(V0x,V0y)を入力する。ここで、(V0x,V0y)はクリッピング領域500外の座標であるため、図形描画装置は、V6とV0とを結んだ線分と、境界線500aとの交点C5の交点座標(C5x,C5y)を算出する。(C5x,C5y)を算出したのち、実効中間頂点座標(C5x,C5y)を生成し、(C5x,C5y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および中間頂点座標(C5x,C5y)に基づいて、仮想頂点C5’の仮想頂点座標(C0x,C5y)を生成する。
また、V6とV0とを結んだ線分は、C0(図5−6では、C0はC2’と重複しているため図示していない)からY軸方向に伸ばした直線と交差するため、図形描画装置は、V6とV0とを結んだ線分と、C0からY軸方向に伸ばした直線との交点R0の交点座標も算出する。図形描画装置は、仮想頂点C5’を生成、交点R0の交点座標を算出したのち、V6、V6’、R0を頂点に有する部分図形と、C5、C5’、R0を頂点に有する部分図形とを排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域5Cにおいては、偶数個の図形が重複するため、図形が消去される(図5−6)。
つぎに、図形描画装置は、V0から、X軸方向に境界線500aと交差するまで伸ばした線分と、境界線500aとの交点C6の交点座標(C6x,C6y)を算出する。(C6x,C6y)を算出したのち、実効中間頂点座標(C6x,C6y)を生成し、(C6x,C6y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および中間頂点座標(C6x,C6y)に基づいて、仮想頂点C6’の仮想頂点座標(C0x,C6y)を生成する。図形描画装置は、仮想頂点座標(C0x,C6y)を生成したのち、C5、C5’、C6’、C6を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図5−7)。
つぎに、図形描画装置は、V1から、X軸方向に境界線500aと交差するまで伸ばした線分と、境界線500aとの交点C7の交点座標(C7x,C7y)を算出する。(C7x,C7y)を算出したのち、実効中間頂点座標(C7x,C7y)を生成し、(C7x,C7y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および中間頂点座標(C7x,C7y)に基づいて、仮想頂点C7’の仮想頂点座標(C0x,C7y)を生成する。図形描画装置は、仮想頂点座標(C0x,C7y)を生成したのち、C6、C6’、C7’、C7を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図5−8)。
つぎに、図形描画装置は、公知の技術のため詳細な説明は省略するが、V2における幾何学的な処理に基づいて、C8の座標(C8x,C8y)を算出する。(C8x,C8y)を算出したのち、実効中間頂点座標(C8x,C8y)を生成し、(C8x,C8y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(C0x,C0y)および中間頂点座標(C8x,C8y)に基づいて、仮想頂点C8’の仮想頂点座標(C0x,C8y)を生成する。図形描画装置は、仮想頂点座標(C0x,C8y)を生成したのち、C7、C7’、C8’、C8を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図5−9)。
以上に説明したように、実施の形態2の図形描画装置において、入力された頂点座標から、実効頂点座標を生成するとともに、当該実効頂点座標に対する仮想頂点座標を生成することによって、V0〜V6を頂点として有する対象図形のうちのクリッピング領域500内に含まれた領域が描画されることとなる。
(実施の形態2の図形描画装置の機能的構成)
つぎに、この発明の実施の形態2にかかる図形描画装置の機能的構成について説明する。図6は、この発明の実施の形態2にかかる図形描画装置の機能的構成を示すブロック図である。図6に示すように、実施の形態2の図形描画装置600は、実施の形態1の図形描画装置300にクリッピング処理部610が組み合わされて構成される。すなわち、実施の形態2の図形描画装置600は、頂点種別判定部301と、先頭座標バッファ302と、先頭座標再利用部303と、頂点座標バッファ304と、生成部310と、設定部320と、描画部330と、クリッピング処理部610とを備える。
クリッピング処理部610は、クリップ判定部611と、判定結果バッファ612と、交点座標算出部613とによって構成される。クリップ判定部611は、入力された頂点座標に対し、当該頂点座標がクリッピング領域に含まれるか否かを判定する機能を有する。クリップ判定部611によって判定された判定結果は、判定結果バッファ612へ出力され、判定された頂点座標は、交点座標算出部613へ出力される。すなわち、頂点座標ストリーム340から頂点座標入力インターフェース350を介して入力された頂点座標は、まず、頂点種別判定部301によって頂点の種別が判別されたのち、つぎに、クリップ判定部611によって、クリッピング領域に含まれるかを判定される。
判定結果バッファ612は、クリップ判定部611によって判定された判定結果を記憶する機能を有する。判定結果バッファ612に記憶される判定結果は、図形描画装置600による部分図形の描画処理が1サイクルするごとに書き換えられる。
公知の技術のために、詳細な説明は省略するが、クリップ判定部611によって判定された判定結果および判定結果バッファ612に記憶された前回頂点座標の判定結果によって、交点座標があるか否かを判定する。交点座標が存在する場合、判定結果は、連続する2つの頂点座標に対し、それぞれ判定結果が異なる場合、連続する2つの頂点座標に対して、判定結果が双方ともクリッピング領域外と判定された場合の3つの場合がある。
交点座標算出部613は、交点座標を算出する機能を有する。交点座標とは、たとえば、クリッピング領域の境界線と、連続する2つの頂点座標を結んだ線分との交点の座標である。また、交点座標は、頂点座標からX軸方向またはY軸方向へ伸ばした直線と、クリッピング領域の境界線との交点の座標であってもよい。
(実施の形態2の図形描画装置の処理手順)
つぎに、この発明の実施の形態2にかかる図形描画装置600の処理手順について説明する。図7は、この発明の実施の形態2にかかる図形描画装置の処理手順を示すフローチャートである。図7に示すフローチャートは、たとえば、アプリケーションから対象図形の描画の指示を受け付けた場合に開始される。
図形描画装置600は、まず、頂点座標が入力されるまで待機する(ステップS701:Noのループ)。具体的には、たとえば、アプリケーションによって生成された頂点座標ストリーム340から頂点座標入力インターフェース350を介して、図形描画装置600に頂点座標が入力されるまで待機する。
ステップS701において、頂点座標が入力された場合(ステップS701:Yes)には、当該頂点座標を記憶する(ステップS702)。具体的には、図形描画装置600は、入力された頂点座標を頂点座標バッファ304に記憶する。
つぎに、入力された頂点座標が一連の頂点座標のうちの先頭の頂点座標であるか否かを判定する(ステップS703)。具体的には、図形描画装置600は、入力された頂点座標から頂点種別判定部301によって当該頂点座標の種別を判別することによって判定する。ステップS703において、入力された頂点座標が先頭の頂点座標であった場合(ステップS703:Yes)にはステップS704へ進み、先頭の頂点座標でなかった場合(ステップS703:No)にはステップS711へ進む。
ステップS703において、入力された頂点座標が先頭の頂点座標であると判定された場合(ステップS703:Yes)には、当該先頭の頂点座標を記憶する(ステップS704)。具体的には、図形描画装置600は、頂点種別判定部301によって先頭の頂点座標として判別された頂点座標を先頭座標バッファ302に記憶する。より具体的には、先頭の頂点座標が(V0x,V0y)であった場合には、先頭の頂点座標(V0x,V0y)を先頭座標バッファ302に記憶する。
ステップS704において、先頭の頂点座標を記憶したのち、当該先頭の頂点座標がクリッピング領域に含まれるか否かを判定する(ステップS705)。具体的には、図形描画装置600は、入力された頂点座標から頂点種別判定部301によって先頭の頂点座標であると判別された頂点座標に対して、クリップ判定部611によって当該先頭の頂点座標がクリッピング領域内に含まれる座標であるか否かを判定する。ステップS705において、先頭の頂点座標がクリッピング領域に含まれると判定された場合(ステップS705:No)にはステップS706へ進み、含まれないと判定された場合(ステップS705:Yes)にはステップS701へ戻る。
ステップS705において、先頭の頂点座標がクリッピング領域に含まれると判定された場合(ステップS705:No)には、前回頂点座標がクリッピング領域に含まれるか否かを判定する(ステップS706)。具体的には、図形描画装置600は、判定結果バッファ612に記憶された前回頂点座標の判定結果に基づいて判定する。ステップS706において、前回頂点座標がクリッピング領域に含まれると判定された場合(ステップS706:No)にはステップS708へ進み、含まれないと判定された場合(ステップS706:Yes)にはステップS707へと進む。なお、入力された頂点座標が先頭の頂点座標の場合には、前回頂点座標が存在しないため、前回頂点座標がクリッピング領域に含まれると解釈して、ステップS708へと進む。
ステップS706において、前回入力された頂点座標がクリッピング領域内に含まれないと判定された場合(ステップS706:Yes)には、交点座標を算出する(ステップS707)。具体的には、図形描画装置600は、入力された頂点座標と前回頂点座標との少なくともいずれか一方に基づいて交点座標算出部613によって交点座標を算出する。より具体的には、たとえば、図形描画装置600は、入力された頂点座標と前回頂点座標とを結んだ線分と、境界線500aとの交点座標を算出する。
ステップS706およびステップS707において、入力された先頭の頂点座標または算出された交点座標から、実効始点座標を生成する(ステップS708)。具体的には、図形描画装置600は、入力された先頭の頂点座標または算出された交点座標から、入力された先頭の頂点座標または算出された交点座標を始点座標生成部321へ入力することにより、実効始点座標を生成する。より具体的には、先頭の頂点座標がクリッピング領域に含まれると判定された場合には、当該先頭の頂点座標を実効始点座標として生成し、先頭の頂点座標がクリッピング領域内に含まれないと判定された場合には、ステップS707において算出された交点座標を実効始点座標として生成する。
ステップS708において、実効始点座標が生成されたのち、生成した実効始点座標のX座標を記憶する(ステップS709)。具体的には、図形描画装置600は、始点座標生成部321によって生成された実効始点座標のX座標をX座標バッファ324に記憶する。より具体的には、たとえば、実効始点座標が(C0x,C0y)である場合には、実効始点座標(C0x,C0y)のX座標C0xがX座標バッファ324に記憶されることとなる。なお、この際に、生成された実効始点座標(C0x,C0y)自体も先頭座標バッファ302に記憶する。
ステップS709において、実効始点座標のX座標を記憶したのち、実効始点座標を頂点FIFOに格納する(ステップS710)。具体的には、図形描画装置600は、実効始点座標のX座標をX座標バッファ324に記憶したのち、実効始点座標を頂点FIFO326へ出力し、当該実効始点座標を頂点FIFO326に格納する。より具体的には、たとえば、実効始点座標(C0x,C0y)である場合には、当該実効始点座標(C0x,C0y)が頂点FIFO326に格納されることとなる。
ステップS703において、先頭の頂点座標でないと判定された場合(ステップS703:No)には、すでに実効始点座標があるか否かを判定する(ステップS711)。具体的には、図形描画装置600は、先頭座標バッファ302にすでに実効始点座標に該当する頂点座標が記憶されているか否かによって判定する。ステップS711において、すでに実効始点座標があると判定された場合(ステップS711:Yes)にはステップS712へと進み、実効始点座標がないと判定された場合には(ステップS711:No)ステップS705へと進む。
ステップS711において、すでに実効始点座標があると判定された場合(ステップS711:Yes)には、入力された頂点座標がクリッピング領域内に含まれるか否かを判定する(ステップS712)。具体的には、図形描画装置600は、入力された頂点座標に対して、クリップ判定部611によって判定する。ステップS712において、入力された頂点座標がクリッピング領域に含まれると判定された場合(ステップS712:No)にはステップS715へ進み、含まれないと判定された場合(ステップS712:Yes)にはステップS713へと進む。
ステップS712において、頂点座標がクリッピング領域内に含まれない(ステップS712:Yes)と判定された場合には、交点座標があるか否かを判定する(ステップS713)。具体的には、図形描画装置600は、入力された頂点座標に対するクリップ判定部611によって判定された判定結果および判定結果バッファ612に記憶された前回頂点座標の判定結果に基づいて、判定する。交点座標があると判定された場合(ステップS713:Yes)にはステップS714へ進み、交点座標がないと判定された場合(ステップS713:No)にはステップS701へ戻る。
ステップS713において、交点座標があると判定された場合(ステップS713:Yes)には、交点座標を算出する(ステップS714)。具体的には、図形描画装置600は、入力された頂点座標と前回頂点座標のうちの少なくともいずれか一方の頂点座標と、境界線500aとに基づいて交点座標を算出する。より具体的には、入力された頂点座標と前回頂点座標とを結んだ線分と境界線500aとの交点座標とを算出する。
ステップS714において、交点座標を算出したのち、交点座標を実効中間頂点として生成する(ステップS715)。具体的には、図形描画装置600は、交点座標算出部613によって算出された交点座標を中間頂点座標生成部322へ出力し、算出された交点座標から中間頂点座標生成部322によって実効中間頂点座標を生成する。
ステップS712およびステップS714において、入力された頂点座標または算出された交点座標から、実効中間頂点座標を生成する(ステップS715)。具体的には、図形描画装置600は、入力された頂点座標または算出された交点座標を中間頂点座標生成部322へ入力することにより、実効中間頂点座標を生成する。より具体的には、入力された頂点座標がクリッピング領域に含まれると判定された場合には、当該頂点座標を実効中間頂点座標として生成し、入力された頂点座標がクリッピング領域内に含まれないと判定された場合には、ステップS714において算出された交点座標を実効中間頂点座標として生成する。
ステップS715において、実効中間頂点座標が生成されたのち、生成した実効中間頂点座標のY座標を記憶する(ステップS716)。具体的には、図形描画装置600は、中間頂点座標生成部322によって生成された実効中間頂点座標のY座標をY座標バッファ325に記憶する。より具体的には、たとえば、実効中間頂点座標が(C1x,C1y)である場合には、実効中間頂点座標(C1x,C1y)のY座標C1yがY座標バッファ325に記憶されることとなる。
ステップS716において、実効中間頂点座標のY座標を記憶したのち、実効中間頂点座標を頂点FIFOに格納する(ステップS717)。具体的には、図形描画装置600は、実効中間頂点座標のY座標をY座標バッファ325に記憶したのち、実効中間頂点座標を頂点FIFO326へ出力し、当該実効中間頂点座標を頂点FIFO326に格納する。より具体的には、たとえば、実効中間頂点座標(C1x,C1y)である場合には、当該実効中間頂点座標(C1x,C1y)が頂点FIFO326に格納されることとなる。
ステップS710およびステップS717において、実効始点座標および実効中間頂点座標が頂点FIFOに格納されたのち、実効始点座標のX座標と実効中間頂点座標のY座標とから仮想頂点座標を生成する(ステップS718)。具体的には、図形描画装置600は、X座標バッファ324に記憶された実効始点座標のX座標と、Y座標バッファ325に記憶された実効中間頂点座標のY座標とから、仮想頂点座標生成部311によって仮想頂点座標を生成する。より具体的には、たとえば、X座標バッファ324に記憶されたX座標がC0xであり、Y座標バッファ325に記憶されたY座標がC1yである場合には、仮想頂点C1’の仮想頂点座標(C0x,C1y)が生成されることとなる。
ステップS718において、仮想頂点座標を生成したのち、生成された仮想頂点座標を頂点FIFOに格納する(ステップS719)。具体的には、図形描画装置600は、X座標バッファ324に記憶されたX座標と、Y座標バッファ325に記憶されたY座標とから仮想頂点座標生成部311によって仮想頂点座標を生成し、当該仮想頂点座標を頂点FIFO326へ出力することにより、当該仮想頂点座標を頂点FIFO326に格納する。より具体的には、たとえば、仮想頂点座標が(C0x,C1y)である場合には、当該仮想頂点座標(C0x,C1y)が頂点FIFO326に格納されることとなる。
ステップS719において、頂点FIFOに格納されている頂点座標から部分図形を描画する(ステップS720)。具体的には、図形描画装置600は、頂点FIFO326に格納された部分図形の作成対象となる連続する2つの頂点座標と、その仮想頂点座標を描画部330へ出力することによって、描画部330により、ステンシルバッファ360のステンシルバッファ領域上に部分図形を描画する。より具体的には、たとえば、頂点FIFO326に格納されている頂点が、C0、C1、C1’である場合には、C0、C1、C1’を頂点に有する部分図形がステンシルバッファ領域100上に描画されることとなる。
ステップS720において、部分図形を描画したのち、すべての頂点座標が入力されたか否かを判定する(ステップS721)。具体的には、図形描画装置600は、頂点種別判定部301によって末尾の頂点座標と判別された頂点座標が入力された場合に、すべての頂点座標が入力されたと判定する。
ステップS721において、すべての頂点座標が入力されたと判定された場合(ステップS721:Yes)には、最後の部分図形を描画する(ステップS722)。最後の部分図形を描画したのち、一連の処理を終了する。具体的には、最後の部分図形は、終点座標生成部323によって生成された終点座標(すなわち、実効始点座標)と、クリッピング領域内に初めて含まれる頂点座標の前回頂点座標と、当該前回頂点座標の仮想頂点座標とに基づいて描画される。すべての頂点座標が入力されていないと判定された場合(ステップS721:No)には、ステップS701に戻り、同様の処理を繰り返す。
以上に説明したように、実施の形態2の図形描画装置600によれば、対象図形がクリッピング領域外の頂点座標を有する場合においても、各種実効頂点座標を算出し、実効頂点座標を用いることにより、実施の形態1と同様の部分図形を描画することができるため、実施の形態1と同様の効果を得ることができる。
(実施の形態3)
つぎに、本発明の実施の形態3について説明する。実施の形態2において、実効始点座標は、クリッピング領域内に初めて含まれる頂点座標と、当該頂点座標における前回頂点座標とに基づいて算出された交点座標を実効始点座標とした。実施の形態3においては、実効始点座標がクリッピング領域に含まれる任意の座標である場合の一例について説明する。なお、上述した実施の形態1および実施の形態2と同一の構成については同一符号とし、説明を省略する。
まず、この発明の実施の形態3にかかる図形描画装置600による対象図形の描画の流れについて説明する。図8−1〜8−6は、この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)〜(その6)である。まず、図形描画装置600には、頂点座標ストリームから頂点座標入力インターフェースを介して、頂点座標としてV0〜V2の頂点座標が入力されるが、いずれもクリッピング領域500外である。たとえば、このとき、図形描画装置600は、V0の前に実効始点座標として(V-1x,V-1y)を追加する。(V-1x,V-1y)は、クリッピング領域500に含まれる任意の座標であり、実施の形態3においては、一例として、境界線500a上であり、(V0x,V0y)と同じY座標を有する座標とする。
(V-1x,V-1y)が追加されると、(V-1x,V-1y)を実効始点座標として、実施の形態2と同様の手順で処理をおこなう。すなわち、(V3x,V3y)によって、初めて頂点がクリッピング領域500内となる。このとき、図形描画装置600は、V2とV3とを結んだ線分と、境界線500aとの交点C0の交点座標(C0x,C0y)を算出する。(C0x,C0y)を算出したのち、実効中間頂点座標(C0x,C0y)を生成し、(C0x,C0y)のY座標をY座標バッファ325に記憶する。そして、(V-1x,V-1y)および(C0x,C0y)に基づいて、仮想頂点C0’の仮想頂点座標(V-1x,C0y)を生成する。
すなわち、仮想頂点座標(V-1x,C0y)は、実効始点座標(V-1x,V-1y)とX座標を同じくし、実効中間頂点座標(C0x,C0y)とY座標を同じくする座標である。図形描画装置600は、仮想頂点座標(V-1x,C0y)を生成したのち、V3、V3’、C0’、C0を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図8−1)。
つぎに、同様にして、図形描画装置600に中間頂点座標(V4x,V4y)が入力される。ここで、(V4x,V4y)はクリッピング領域500外の座標であるため、図形描画装置300は、V3とV4とを結んだ線分と、境界線500aとの交点C1の交点座標(C1x,C1y)を算出する。(C1x,C1y)を算出したのち、実効中間頂点座標(C1x,C1y)を生成し、(C1x,C1y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(V-1x,V-1y)および実効中間頂点座標(C1x,C1y)に基づいて、仮想頂点C1’の仮想頂点座標(V-1x,C1y)を生成する。
すなわち、仮想頂点座標(V-1x,C1y)は、実効始点座標(V-1x,V-1y)とX座標を同じくし、実効中間頂点座標(C1x,C1y)とY座標を同じくする座標である。図形描画装置600は、仮想頂点座標(V-1x,C1y)を生成したのち、V3、V3’、C1’、C1を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域8Aにおいては、偶数個の図形が重複するため、図形が消去される(図8−2)。
つぎに、同様にして、図形描画装置600に中間頂点座標(V5x,V5y)が入力される。ここで、(V5x,V5y)はクリッピング領域500外の座標であるため、図形描画装置600は、V4とV5とを結んだ線分と、境界線500aとの交点C2およびC3の交点座標(C2x,C2y)、(C3x,C3y)をそれぞれ算出する。(C2x,C2y)および(C3x,C3y)を算出したのち、実効中間頂点座標(C2x,C2y)および(C3x,C3y)を生成し、(C2x,C2y)および(C3x,C3y)のY座標をY座標バッファ325に記憶する。そして、(V-1x,V-1y)および(C2x,C2y)および(C3x,C3y)に基づいて、仮想頂点C2’およびC3’の仮想頂点座標(V-1x,C2y)および(V-1x,C3y)をそれぞれ生成する。
すなわち、仮想頂点座標(V-1x,C2y)は実効始点座標(V-1x,V-1y)とX座標を同じくし実効中間頂点座標(C2x,C2y)とY座標を同じくする座標であり、仮想頂点座標(V-1x,C3y)は実効始点座標(V-1x,V-1y)とX座標を同じくし実効中間頂点座標(C3x,C3y)とY座標を同じくする座標である。図形描画装置600は、仮想頂点座標(V-1x,C2y)および(V-1x,C3y)を生成したのち、C2、C2’、C3’、C3を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域8Bにおいては、偶数個の図形が重複するため、図形が消去される(図8−3)。
つぎに、同様にして、図形描画装置600に中間頂点座標(V6x,V6y)が入力される。ここで、(V6x,V6y)はクリッピング領域500内の座標であるため、頂点座標がクリッピング領域500外からクリッピング領域500内に流入する。図形描画装置600は、V5とV6とを結んだ線分と、境界線500aとの交点C4の交点座標(C4x,C4y)を算出する。(C4x,C4y)を算出したのち、実効中間頂点座標(C4x,C4y)を生成し、(C4x,C4y)のY座標をY座標バッファ325に記憶する。そして、実効始点座標(V-1x,V-1y)および実効中間頂点座標(C4x,C4y)に基づいて、仮想頂点C4’の仮想頂点座標(V-1x,C4y)を生成する。
すなわち、仮想頂点座標(V-1x,C4y)は、実効始点座標(V-1x,V-1y)とX座標を同じくし、実効中間頂点座標(C4x,C4y)とY座標を同じくする座標である。図形描画装置600は、仮想頂点座標(V-1x,C4y)を生成したのち、C3、C3’、C4’ 、C4を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図8−4)。
つぎに、実効始点座標(V-1x,V-1y)および中間頂点座標(V6x,V6y)に基づいて、仮想頂点V6’の仮想頂点座標(V-1x,V6y)を生成する。すなわち、仮想頂点座標(V-1x,V6y)は、実効始点座標(V-1x,V-1y)とX座標を同じくし、中間頂点座標(V6x,V6y)とY座標を同じくする座標である。図形描画装置600は、仮想頂点座標(V-1x,V6y)を生成したのち、C4、C4’、V6’、V6を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する(図8−5)。
つぎに、図形描画装置600は、最後の頂点座標であるV6の処理が終わった場合、終点座標として、再び、V0を入力する。図形描画装置600は、V0が入力されると、終点座標(V0x,V0y)と中間頂点座標(V6x,V6y)とを結んだ線分と境界線500aとの交点C5の交点座標(C5x,C5y)を算出する。(C5x,C5y)が算出されると、図形描画装置600は、実効中間頂点座標(C5x,C5y)を生成し、C5、V6’、V6を頂点に有する部分図形を排他的論理和演算に基づいてステンシルバッファ領域100上に描画する。なお、領域8Cにおいては、偶数個の図形が重複するため、図形が消去される(図8−6)。
以上に説明したようにして、入力された頂点座標から、当該頂点座標を頂点として有する対象図形のうちのクリッピング領域500内に含まれた領域がステンシルバッファ領域100上に描画される。
実施の形態3においては、まず、最初の処理として、クリッピング領域500内の任意の座標が取得され、取得された任意の座標を先頭の頂点座標として、図形描画装置600に入力される点だけが実施の形態2と異なる点である。すなわち、クリッピング領域500内の任意の座標が取得され、取得された任意の座標を先頭の頂点座標として、図形描画装置600に入力され、以下は、実施の形態2と同一の処理となるために、処理手順の説明は省略する。
取得される任意の座標は、アプリケーションにより決定され、決定された座標を取得することとしてもよいし、図形描画装置600自身により描画がもっとも手順が少なくなると推定した座標を取得することとしてもよい。
以上に説明したように、実施の形態3の図形描画装置600によれば、実施の形態2と同様に、入力された頂点座標から、実効頂点座標を生成するとともに、当該実効頂点座標に対する仮想頂点V1’〜V6’を生成することによって、V0〜V6を頂点として有する対象図形のうちのクリッピング領域500内に含まれた領域が描画されることとなる。
また、実施の形態3の図形描画装置600によれば、実効始点座標としてクリッピング領域500内の最適な座標を設定することにより、対象図形を構築する部分図形の個数を減らすことができ、実施の形態2に比べ、より高速に対象図形を描画することができる。
この発明によれば、連続した2つの頂点および当該頂点座標に対して生成された仮想頂点座標を有する部分図形によって対象図形を構築するため、描画の際に関与する走査線を連続する2つの頂点座標間にある走査線だけに抑えることができるため、VRAMへのランダムアクセスを減らし、描画速度を向上させることができる。
なお、本実施の形態で説明した図形描画方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な媒体であってもよい。
以上のように、この発明にかかる図形描画装置、図形描画方法、図形描画プログラムおよび該プログラムを記録した記録媒体は、コンピュータグラフィックスなどにおいて図形を描画することに有用である。
この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その2)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その3)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その4)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その5)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その6)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その7)である。 この発明の実施の形態1にかかる図形描画装置による対象図形の描画の流れを示す説明図(その8)である。 この発明の実施の形態1にかかるコンピュータ装置のハードウェア構成を示す説明図である。 この発明の実施の形態1にかかる図形描画装置の機能的構成を示すブロック図である。 この発明の実施の形態1にかかる図形描画装置の処理手順を示すフローチャートである。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その2)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その3)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その4)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その5)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その6)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その7)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その8)である。 この発明の実施の形態2にかかる図形描画装置による対象図形の描画の流れを示す説明図(その9)である。 この発明のこの発明の実施の形態2にかかる図形描画装置の機能的構成を示すブロック図である。 この発明の実施の形態2にかかる図形描画装置の処理手順を示すフローチャートである。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その1)である。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その2)である。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その3)である。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その4)である。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その5)である。 この発明の実施の形態3にかかる図形描画装置による対象図形の描画の流れを示す説明図(その6)である。
符号の説明
200 コンピュータ装置
300 図形描画装置
301 頂点種別判定部
302 先頭座標バッファ
303 先頭座標再利用部
304 頂点座標バッファ
310 生成部
311 仮想頂点座標生成部
320 設定部
321 始点座標生成部
322 中間頂点座標生成部
323 終点座標生成部
324 X座標バッファ
325 Y座標バッファ
326 頂点FIFO
330 描画部
331 図形描画部
332 画素論理演算部
340 頂点座標ストリーム
350 頂点座標入力インターフェース
360 ステンシルバッファ
600 図形描画装置
610 クリッピング処理部
611 クリップ判定部
612 判定結果バッファ
613 交点座標算出部

Claims (9)

  1. メモリアドレスが連続する方向を示すX軸と前記X軸に交差する方向を示すY軸からなる2次元座標系に対応するメモリを用いて図形を描画する図形描画装置において、
    一連の2次元の頂点座標が入力されると、当該頂点座標と、当該頂点座標のX座標値を先頭の頂点座標のX座標値に変換した仮想頂点座標とを、前記頂点座標ごとに前記メモリ上に生成する生成手段と、
    部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定するとともに、末尾の頂点座標まで設定された後に、前記部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定する設定手段と、
    前記設定手段によって設定された2つの頂点座標とその仮想頂点座標とに囲まれた部分図形を前記メモリ上に描画する描画処理を行う描画手段と、
    を備えることを特徴とする図形描画装置。
  2. 前記描画手段は、前記描画処理によって描画された部分図形にすでに作成済みの部分図形の一部または全部が重複する場合には重複する部分を前記メモリ上から消去する消去処理により、前記一連の2次元の頂点座標を頂点とする図形を出力することを特徴とする請求項1に記載の図形描画装置。
  3. 前記頂点座標が入力される都度、前記連続する2つの頂点座標を結んだ線分が前記メモリ上にあらかじめ設定されたクリッピング領域の境界線と交差するか否かを判定する判定手段を備え、
    前記生成手段は、前記判定手段によって前記連続する2つの頂点座標を結んだ線分と前記境界線とが交差すると判定された場合に、前記連続する2つの頂点座標のうちの少なくともいずれか一方の頂点座標に基づいて、前記クリッピング領域の境界線上に新たな頂点座標(以下、「実効頂点座標」という)と当該実効頂点座標における仮想頂点座標を生成し、
    前記設定手段は、前記生成手段によって生成された実効頂点座標を、当該実効頂点座標の元となった頂点座標の代わりとして部分図形の作成対象となる2つの頂点座標のうち一方の頂点座標に設定し、
    前記描画手段は、前記設定手段によって設定された部分図形の作成対象となる前記実効頂点座標を含む2つの頂点座標とその仮想頂点座標とに囲まれた部分図形を描画することを特徴とする請求項1または2に記載の図形描画装置。
  4. 前記生成手段は、前記判定手段によって前記連続する2つの頂点座標を結んだ線分と前記境界線とが交差すると判定された場合に、当該連続する2つの頂点座標を結んだ線分と、前記クリッピング領域の境界線との交点座標を前記実効頂点座標として生成することを特徴とする請求項3に記載の図形描画装置。
  5. 前記生成手段は、前記判定手段によって前記先頭の頂点座標を含む連続した2つの頂点座標を結んだ線分と前記境界線とが交差すると判定された場合に、前記交点座標を前記先頭の頂点座標に代わる頂点座標とし、入力された頂点座標または生成された前記交点座標のX座標値を前記実効始点座標のX座標値に変換することによって前記仮想頂点座標を生成することを特徴とする請求項4に記載の図形描画装置。
  6. 前記生成手段は、前記判定手段によって前記先頭の頂点座標を含む連続した2つの頂点座標を結んだ線分と前記境界線とが交差すると判定された場合に、前記クリッピング領域内の任意の座標を前記先頭の頂点座標の代わりとし、入力された頂点座標または生成された前記交点座標のX座標値を前記先頭の頂点座標の代わりとされた座標のX座標値に変換することによって前記仮想頂点座標を生成することを特徴とする請求項4に記載の図形描画装置。
  7. メモリアドレスが連続する方向を示すX軸と前記X軸に交差する方向を示すY軸からなる2次元座標系に対応するメモリを用いて図形を描画する図形描画方法において、
    一連の2次元座標が入力されると、当該頂点座標と、当該頂点座標のX座標値を先頭の頂点座標のX座標値に変換した仮想頂点座標とを、前記頂点座標ごとに前記メモリ上に生成し、
    部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定するとともに、末尾の頂点座標まで設定された後に、前記部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定し、
    前記設定手段によって設定された2つの頂点座標とその仮想頂点座標とに囲まれた部分図形を前記メモリ上に描画する描画処理を行うことを特徴とする図形描画方法。
  8. メモリアドレスが連続する方向を示すX軸と前記X軸に交差する方向を示すY軸からなる2次元座標系に対応するメモリを用いてコンピュータに図形を描画させる図形描画プログラムにおいて、
    一連の2次元の頂点座標が入力されると、前記一連の2次元の頂点座標のうち、先頭の頂点座標から順次に頂点座標と、当該頂点座標のX座標値を先頭の頂点座標のX座標値に変換した仮想頂点座標と、を1組ずつ前記メモリ上に生成させる生成工程と、
    部分図形の作成対象となる2つの頂点座標を、先頭から順次連続する2つの頂点座標に設定させるとともに、末尾の頂点座標まで設定された後に、前記部分図形の作成対象となる2つの頂点座標を、先頭および末尾の頂点座標に設定させる設定工程と、
    前記設定工程によって設定された2つの頂点座標とその仮想頂点座標とに囲まれた部分図形を前記メモリ上に描画する描画処理を行う描画工程と、
    を含むことを特徴とする図形描画プログラム。
  9. 請求項8に記載の図形描画プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
JP2007238479A 2007-09-13 2007-09-13 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体 Expired - Fee Related JP5034806B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007238479A JP5034806B2 (ja) 2007-09-13 2007-09-13 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体
US12/209,635 US8605112B2 (en) 2007-09-13 2008-09-12 Graphics drawing apparatus, method, and program and recording medium on which the program is recorded

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007238479A JP5034806B2 (ja) 2007-09-13 2007-09-13 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2009070183A true JP2009070183A (ja) 2009-04-02
JP5034806B2 JP5034806B2 (ja) 2012-09-26

Family

ID=40453970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007238479A Expired - Fee Related JP5034806B2 (ja) 2007-09-13 2007-09-13 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体

Country Status (2)

Country Link
US (1) US8605112B2 (ja)
JP (1) JP5034806B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472285A (zh) * 2019-07-15 2019-11-19 中国第一汽车股份有限公司 一种汽车四连杆铰链瞬心曲线的绘制方法及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6708117B2 (ja) * 2016-12-26 2020-06-10 カシオ計算機株式会社 図形描画装置、図形描画方法、サーバ装置、プログラム、及びプログラムを送信する方法
JP6942964B2 (ja) * 2017-01-17 2021-09-29 カシオ計算機株式会社 図形描画方法、図形描画装置、及びプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0350686A (ja) * 1989-07-18 1991-03-05 Nec Corp 図形処理方式
JP2001209812A (ja) * 1999-11-18 2001-08-03 Yamaha Corp 2次元パターン生成方法及び装置
JP2002245468A (ja) * 2001-02-14 2002-08-30 Koden Electronics Co Ltd 図形の塗りつぶし方法
JP2006048172A (ja) * 2004-07-30 2006-02-16 Kyocera Mita Corp クリップ処理システム及びクリップ処理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW304254B (ja) * 1994-07-08 1997-05-01 Hitachi Ltd
JPH10188010A (ja) 1996-12-24 1998-07-21 Yamaha Corp 図形の塗り潰し方法及び装置
US6320580B1 (en) * 1997-11-07 2001-11-20 Sega Enterprises, Ltd. Image processing apparatus
JP2002133438A (ja) * 2000-10-19 2002-05-10 Mitsubishi Electric Corp 3次元グラフィックス描画装置、3次元グラフィックス描画方法および3次元ポリゴンデータを記録したコンピュータで読取可能な記録媒体
GB2378337B (en) * 2001-06-11 2005-04-13 Canon Kk 3D Computer modelling apparatus
US6816169B2 (en) * 2002-10-09 2004-11-09 Evans & Sutherland Computer Corporation System and method for run-time integration of an inset geometry into a background geometry
TWI319166B (en) * 2006-03-06 2010-01-01 Via Tech Inc Method and related apparatus for graphic processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0350686A (ja) * 1989-07-18 1991-03-05 Nec Corp 図形処理方式
JP2001209812A (ja) * 1999-11-18 2001-08-03 Yamaha Corp 2次元パターン生成方法及び装置
JP2002245468A (ja) * 2001-02-14 2002-08-30 Koden Electronics Co Ltd 図形の塗りつぶし方法
JP2006048172A (ja) * 2004-07-30 2006-02-16 Kyocera Mita Corp クリップ処理システム及びクリップ処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472285A (zh) * 2019-07-15 2019-11-19 中国第一汽车股份有限公司 一种汽车四连杆铰链瞬心曲线的绘制方法及装置

Also Published As

Publication number Publication date
US8605112B2 (en) 2013-12-10
JP5034806B2 (ja) 2012-09-26
US20090073180A1 (en) 2009-03-19

Similar Documents

Publication Publication Date Title
JP4621618B2 (ja) 図形描画装置、図形描画方法、およびプログラム
JP4030519B2 (ja) 画像処理装置および画像処理システム
EP2887305B1 (en) Resizing an image
US8212815B2 (en) Drawing apparatus, drawing program, and drawing method
JP5034806B2 (ja) 図形描画装置、図形描画方法、図形描画プログラム、および該プログラムを記録した記録媒体
JP4827659B2 (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JP2010039680A (ja) 画像処理装置、画像処理プログラムおよび画像処理方法
JP2001184373A (ja) 図面生成方法およびシステムおよび3次元モデルデータから2次元図面を生成する図面生成プログラムを記録したコンピュータ読み取り可能な記録媒体
JP5151946B2 (ja) 描画装置
JP2007334739A (ja) 画像生成装置
JP2003006552A (ja) シミュレーションシステム、シミュレーション方法及びシミュレーションプログラム
JP4042377B2 (ja) 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
JP3791203B2 (ja) 画像処理装置
JP3697753B2 (ja) 図形編集装置および図形編集方法
JPH10143676A (ja) 画像処理装置、画像処理方法、および記録媒体
JP3185975B2 (ja) 似顔絵作成方法とその装置
JPH09319888A (ja) 似顔絵作成装置
JP4764730B2 (ja) 画像形成装置及び画像形成方法
JP2006048172A (ja) クリップ処理システム及びクリップ処理方法
JPH0926776A (ja) 部首抽出方法およびヒンティング情報生成装置
JP2001134261A (ja) 図形グループ対応魚眼拡大表示方法および装置ならびに該方法のプログラムを記録した記録媒体
JP2006201837A (ja) 画像処理装置、同装置に用いるプログラム及び画像処理方法
JPH06131435A (ja) 図形編集装置
JPH0245889A (ja) 領域塗り潰し方法
JP2016185247A (ja) 画像処理装置および画像処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

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: 20120605

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120618

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5034806

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees