(57)【要約】【課題】無駄サイクルの発生を抑えて、高速な描画処理を実現するための描画コマンド生成処理と提供すること。【解決手段】描画コマンド生成装置１００は、  図形の特徴をあらわす属性情報と、当該属性情報を反映した図形を描画するための描画コマンドとが対応付けて書き込み可能なテンプレートが属性の種類に応じて用意されたテンプレート群１１１に対して、それぞれ任意の属性情報と当該属性情報に対応した描画コマンドを書き込む。そして、比較器１１２によって描画対象図形系１の入力データ１０１の属性情報とテンプレート群１１１の各テンプレートに記録された属性情報とをそれぞれ比較して、一致した属性情報を出力する。コマンド構築器１１２では、比較器１１２によって出力された属性情報が記録されたテンプレートから描画コマンドを読み出して、描画対象図形を描画させるための描画コマンドを構築し、出力データ１０２として出力する。【選択図】図１
2009245156.tif 000002
【特許請求の範囲】
【請求項１】
図形の特徴をあらわす属性情報と、当該属性情報を反映した図形を描画するための描画コマンドとが対応付けて記録されたテンプレートが属性の種類に応じて用意されたテンプレート群と、
描画対象図形の属性情報が入力された場合に、当該描画対象図形の属性情報と、前記テンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較して、一致する属性情報を出力する比較器と、
前記比較器によって出力された属性情報が記録されたテンプレートから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築するコマンド構築器と、
を備えることを特徴とする描画コマンド生成装置。
【請求項２】
前記描画対象図形の属性情報が入力された場合に、当該属性情報を前記テンプレート群に含まれるテンプレート数に合わせて分配して並列に出力させる分配器を備え、
前記比較器は、前記テンプレート群の数と対応した比較器群であり、各比較器は、前記分配器から出力された前記描画対象図形の属性情報と、前記テンプレート群のいずれかのテンプレートに記録された属性情報とを比較することを特徴とする請求項１に記載の描画コマンド生成装置。
【請求項３】
前記比較器によって当該描画対象図形の属性情報と一致する属性情報が出現するまで、前記テンプレート群の中のテンプレートに記録された属性情報を順番に前記比較器に入力する入力カウンタを備えることを特徴とする請求項１に記載の描画コマンド生成装置。
【請求項４】
前記テンプレート群（以下、「前段のテンプレート群」という）の各テンプレートに記録された属性情報と異なる属性情報が記録された後段のテンプレート群と、
前記描画対象図形の複数の属性情報が複数入力された場合に、前記比較器（以下、「前段の比較器」という）によって前記前段のテンプレート群の中のテンプレートに、前記描画対象図形の複数の属性情報の中の属性情報と一致する属性情報が記録されていると判断されると、前記前段の比較器によって一致すると判断された属性情報以外の他の属性情報と、前記後段のテンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較する後段の比較器と、を備え、
前記コマンド構築器は、前記前段の比較器によって前記描画対象図形の属性情報と一致する属性情報が記録されていると判断されたテンプレートと、前記後段の比較器によって前記描画対象図形の属性情報と一致する属性情報が記録されていると判断されたテンプレートとから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築することを特徴とする請求項１〜３のいずれか一つに記載の描画コマンド生成装置。
【請求項５】
前記テンプレートは、前記属性情報と、当該属性情報に対応付けて記録された描画コマンドとは描画対象図形に応じて書き換え可能であることを特徴とする請求項１〜４のいずれか一つに記載の描画コマンド生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、リアルタイムに描画処理をおこなう描画コマンド生成装置、描画処理装置、描画コマンド生成方法および描画処理方法に関する。
【背景技術】
【０００２】
従来より、ゲームコンソールにおける画像描画処理には、リアルタイム性が求められるため、リアルタイムグラフィックシステムが採用されている。また、近年は、カーナビゲーションシステム、デジタルダッシュボードをはじめとする車載表示装置、さらには、産業用表示装置など、リアルタイム性に加えて安全性や信頼性に対する要求が厳しい用途にもリアルタイムグラフィックシステムが採用されることが多い。
【０００３】
たとえば、カーナビゲーションシステムにおける描画処理の場合、ゲームコンソールにおける描画処理とは本質的に異なる性質が顕著にあらわれる。具体的に説明すると、カーナビゲーションシステムにおける描画処理では、まず、ＨＤＤに格納された地図データベースからデータを読み出し、読み出したデータから描画コマンドを発行する。発行された描画コマンドはグラフィックスＬＳＩに送信される。このとき、地図データという性質上、コンテンツの特性にうまく適応させたデータチューニングや事前最適化をおこなう余地はほとんど無い。したがって、大量の地図データをそのまま順番に処理して描画しなければならない。
【０００４】
上述のような条件下において、描画コマンドを１命令ずつＣＰＵからグラフィックスＬＳＩに発行していては、グラフィックスＬＳＩのアイドル時間が大量に発生して、リアルタイムに描画処理を実現するのは極めて困難である。そこで、ＣＰＵから１命令ずつ描画コマンドを発行する代わりに、連続する多数の描画コマンドをコマンドリストとして一度に組み上げ、バッチ処理的に一気にグラフィックスＬＳＩに発行する方式が利用されている。このようなコマンドリスト化処理は、地図描画範囲の基点、すなわち自車位置が動的に変化するため、該当する区画の地図を描画する直前あるいは少し前に動的におこなわれる（たとえば、下記特許文献１参照。）。
【０００５】
【特許文献１】特開２００１−２５５１５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、コマンドリスト生成処理により、グラフィックスＬＳＩにおける処理時間は短縮されたが、近年のグラフィックスＬＳＩの性能向上に伴い、相対的にＣＰＵ上でコマンドリストを組み上げる時間が描画処理全体を通してみた場合のボトルネックとなってきた。
【０００７】
たとえば、ユーザが所望する処理を１行のプログラミング言語によって記述したとしても、このプログラミング言語をコンパイルしてアセンブリ言語に変換すると、ＣＰＵに要求される処理内容が数行にわたるコードになってしまう。このように、一つの描画コマンドを生成するだけであっても、ＣＰＵによってソフトウェア的に生成させると、多くのクロックサイクル数がかかってしまう。したがって、動的にコマンドリストを組み上げる際に、コマンドとコマンドの間に通称“バブル”と呼ばれる無駄サイクルが挿入されてしまい、バッチ化の効果が薄れてしまうという問題があった。
【０００８】
この発明は、上述した従来技術による問題点を解消するため、無駄サイクルの発生を抑えて、高速な描画処理を実現することのできる描画コマンド生成装置、描画処理装置、描画コマンド生成方法および描画処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、この描画コマンド生成装置および描画コマンド生成方法は、図形の特徴をあらわす属性情報と、当該属性情報を反映した図形を描画するための描画コマンドとが対応付けて記録されたテンプレートが属性の種類に応じて用意されたテンプレート群に描画対象図形の属性情報が入力された場合に、当該描画対象図形の属性情報と、前記テンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較して、一致する属性情報を出力する処理と、前記比較器によって出力された属性情報が記録されたテンプレートから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築する処理とを備えることを要件とする。
【００１０】
この描画コマンド生成装置および描画コマンド生成方法によれば、あらかじめ属性情報と対応する描画コマンドとが記録されたテンプレート群を用意してあり、入力された描画対象図形の属性情報との単純な比較処理によってハードウェア的に描画コマンドが生成される。したがって、ＣＰＵによってソフトウェア的に描画コマンドを生成させる場合のようなバブルの発生を最小限に抑えてコマンドリストを生成することができる。
【００１１】
また、この描画処理装置および描画処理方法は、上記の描画コマンド生成装置および描画コマンド生成方法によって生成された描画コマンドを用いて図形を描画することを要件とする。
【００１２】
この描画処理装置および描画処理方法によれば、上記の描画コマンド生成装置および描画コマンド生成方法によって潤滑に生成された描画コマンドが生成されるため、生成された描画コマンドを利用して描画処理をおこなうことによって高速なリアルタイムグラフィックシステムが実現される。
【発明の効果】
【００１３】
この描画コマンド生成装置、描画処理装置、描画コマンド生成方法および描画処理方法によれば、無駄サイクルの発生を抑えて、高速な描画処理を実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この描画コマンド生成装置、描画処理装置、描画コマンド生成方法および描画処理方法の好適な実施の形態を詳細に説明する。
【００１５】
（描画コマンド生成処理の概要）
まず、本実施の形態にかかる描画処理の概要について説明する。図１は、本実施の形態にかかる描画処理の概要を示す説明図である。本実施の形態では、グラフィックスＬＳＩなど従来の描画処理装置１２０にあらたに描画コマンド生成装置１１０を追加する。そしてこの描画コマンド生成装置１１０によって描画コマンドを生成する機能を独立して実行させることによって、ＣＰＵにておこなわれていたコマンドリスト化処理を、グラフィックスＬＳＩ側にて実行させることができる。
【００１６】
なお、このとき単純に組み込み向けＣＰＵコアを描画処理装置１２０などのグラフィックスＬＳＩ上に混載させても、コマンドリスト生成をソフトウェア的に処理するだけでは、ボトルネックが外部ＣＰＵからグラフィックスＬＳＩ上ＣＰＵコアに移るだけであり課題の解決にはつながらない。したがって、描画コマンド生成装置１１０は、コマンドリスト生成をハードウェア的に実現するものである。
【００１７】
従来より、描画処理装置１２０への入力データとして、頂点座標や色情報といった図形を描画させるため特徴が記述された属性情報が入力される。このような入力データの書式は、描画処理装置を搭載する製品（たとえば、カーナビゲーションシステム）ごとに定型化されているのが一般的である。したがって、本実施の形態では、描画対象図形をあらわす入力データの書式をテンプレート化して描画コマンド生成装置１１０に保持する。そして、入力された描画対象図形の描画用データと保持されたテンプレートとの比較機構を設けて描画コマンドを生成する。
【００１８】
上述の処理を具体的に説明すると、描画コマンド生成装置１１０は、テンプレート群１１１と、比較器１１２と、コマンド構築器１１３とを含んでいる。テンプレート群１１１は、複数のテンプレート１１１−１〜１１１−Ｎを有している。個々のテンプレートには、図形の属性情報と、この属性情報の図形を描画するための描画コマンドとが対になって記録されている。
【００１９】
したがって、描画コマンド生成装置１１０が、図形１を描画するための属性情報を含んだ入力データ１０１を受け付けると、まず、テンプレート群１１１の個々のテンプレート１１１−１〜１１１−Ｎに記録された属性情報が読み出される。読み出された属性情報は、入力データ１０１とともに比較器１１２に入力される。
【００２０】
そして、比較器１１２では、入力データ１０１に含まれる図形１の属性情報と、テンプレート群１１１の各テンプレートに記録された属性情報とをそれぞれ比較して、一致する属性情報をコマンド構築器１１３に出力する。
【００２１】
コマンド構築器１１３では、比較器１１２によって出力された属性情報が記録されたテンプレート（１１１−１〜１１１−Ｎのいずれか）から記録されている描画コマンドを読み出して、図形１を描画させるための描画コマンドとして出力データ１０２を出力する。
【００２２】
なお、描画コマンド生成装置１１０には、コマンドリスト化する前の描画対象となる図形の描画用データが直接投入される。したがって、上述したテンプレート群１１１は、書き換え可能なものとする。これにより、異なる書式の描画用データが入力された場合であっても、柔軟に対応することができる。
【００２３】
ここで利用するテンプレート群１１１には、描画対象となる図形の描画用データが取りうる属性バリエーションと、コマンドリストが取りうる描画コマンドバリエーションと、その両者間の対応関係情報とが格納されている。属性とは、描画対象となる図形の特徴をあらわす情報であり、バリエーションの具体例としては、図形色、頂点数、図形種別、頂点座標がある。
【００２４】
描画コマンドのバリエーションは、上述した属性のバリエーションごとに存在する。すなわち、図形色に対応した描画コマンド、また、図形種別に対応した描画コマンドなどそれぞれ用意され、お互いに対応付けられた状態で記録されている。
【００２５】
したがって、描画コマンド生成モジュールに描画対象となる図形の描画用データが入力されると、描画用データに記述されている属性と、テンプレートに記録されている各属性とが比較される。このとき、入力された１つの描画用データに対して属性ごとの複数のテンプレートを同時に比較（１対多）してもよいし、テンプレートを順番に比較（１対１）してもよい。
【００２６】
具体的に説明すると、１対多の場合、図形１の属性情報が入力されると、この属性情報をテンプレート群１１１のテンプレート数Ｎ個に合わせて分配して並列に出力させる分配器（不図示）を追加してもよい。さらに、比較器１１２は、テンプレート群１１１の数と対応した比較器群とする。このような構成にすることによって各比較器１１２は、分配器から出力された図形１の属性情報と、テンプレート群１１１のいずれかのテンプレートに記録された属性情報とを同時に比較することができる。このように、１対多で並列に比較すれば、コマンド生成時のバブル発生を最小限に抑えることができる。
【００２７】
また、１対１の場合、図形１の属性情報が入力されると、比較器１１２によって図形１の属性情報と一致する属性情報が出現するまで、テンプレート群１１１の中のテンプレートに記録された属性情報を順番に比較器１１２に入力する入力カウンタ（不図示）を追加してもよい。このように、入力カウンタを追加することによって、１対１の比較であっても、一致する属性情報が出現した時点で比較を終了するため、バブルの発生も抑えることができる。
【００２８】
なお、描画対象図形の入力データに含まれる各属性バリエーションのうちの任意の属性が、階層的にさらに複数の選択肢をとりうる場合がある。たとえば、最上位階層の属性バリエーションとして、図形種別、図形色、各頂点座標があったとする。そのうち図形種別が変数として振る舞い、後段となる第２階層の選択肢としてその変数が、三角形、多角形、直線といったバリエーションをもつことがある。
【００２９】
このとき、前段である最上位階層の属性が、何個の第２階層の選択肢を持つかは任意なので、階層を展開して平坦化するのは得策ではない。そこで、テンプレート群も前段、後段と階層化できるようにしておく。そして実際のコマンド選択肢（たとえば三角形、多角形、直線を特定する描画コマンド）を最も深い階層のテンプレートに記録する。その前段である１階層上のテンプレートには、コマンドを選択肢から選ぶためのコード情報やインデックス情報を記録すればよい。２階層で構成される属性であれば、前段である上位層テンプレートに記録する描画コマンドは、描画対象図形（たとえば図形１）の入力データ中の属性情報（たとえば、図形種別選択変数）に一致する。
【００３０】
なお、上述のような階層構造は、３階層以上のテンプレート構造にも拡張可能である。多層に拡張する場合であっても、常に最上位階層テンプレートが、描画対象図形の入力データ中の属性情報に一致した書式となり、そこに出現するインデックスの変数を階層的に参照すれば、最終的な描画コマンドとして構築することができる。
【００３１】
このように、一つのテンプレートを基点とした階層テンプレートツリーが、描画対象図形の入力データの一つの属性情報をあらわすことになる。そして図１の入力データ１０１のように、通常、描画対象図形の入力データには、複数の属性情報が含まれている。したがって、複数の属性情報を持つ描画対象図形データ全体に対応するために、このような階層テンプレートツリーを複数用意し、それぞれの属性情報に割り当てる。
【００３２】
また、上述したように、描画対象図形の入力データの書式は、製品型ごと、アプリケーションごとに定型化されているので、描画対象図形データ中の各属性のデータ長などの付帯情報は、事前に確定している。したがって、テンプレート群には、上述のような付帯情報を記録する機構を設けておくことが好ましい。
【００３３】
たとえば、描画対象図形の入力データが、図形種別属性が１ワード、図形色がＲＧＢ各１ワードずつの計３ワードが含まれた書式であった場合、図形種別属性を保持する階層テンプレートツリーには、図形種別属性のデータ長が１ワードであることを示す付帯情報を記録し、図形色を保持する階層テンプレートツリーには、図形色属性のデータ長が３ワードであることを示す付帯情報を記録する。
【００３４】
さらに、読み込んだ描画対象図形の入力データのワード数を記録する描画属性ワード数カウンタを設けてもよい。この描画属性ワード数カウンタのカウント数と、属性データ長の記録を参照することによって、描画対象図形の入力データ中の一つの属性情報の読込みが完了したか否かを判断することができる。
【００３５】
上述の判断処理によって、一つの属性の読込みが完了したら、この描画属性ワード数カウンタのカウント数をリセットし、入力データに含まれている他の属性情報の読込みに移行する。このような機構によって、描画対象図形の入力データに含まれる属性情報の中の先頭に記述された属性情報から後続に記述された属性情報への切り替えを自動的におこなうことができる。そして、比較対象となる階層テンプレートツリーの参照先を切り替えるためのトリガイベントを自動的に得ることができる。
【００３６】
また、ある一つの描画対象図形の入力データに含まれた属性情報の中から先行して記述された描画属性に関するデータワード（単数複数を問わない）の読込みが完了すると、後続して記述されている属性情報に関するデータワード（単数複数を問わない）の読込みに移行すると同時に、比較参照する階層テンプレートツリーも切り替える。
【００３７】
具体的には、ある一つの描画対象図形の入力データに含まれた属性情報の中の、第１番目の属性情報のブロック（ここで、ブロックとは、同じカテゴリの属性情報をあらわすデータ列を意味する）と比較参照すべきテンプレートを、第１番目の階層テンプレートツリーに記録する。そして、第２番目の属性情報のブロックと比較参照すべきテンプレートは、第２番目の階層テンプレートツリーに記録する。以降の階層については、入力データの記述に基づいて、属性情報のブロックの出現順に、対応するインデックス番号を持つ階層テンプレートツリーに記録すればよい。
【００３８】
このように、描画対象図形の入力データに記述されている属性情報のブロックの出現順と階層テンプレートツリーのインデックス番号とが対応していることにより、描画属性ワード数カウンタによって属性情報のワード数カウンタを監視するだけで、階層テンプレートツリーの適切な切り替えを自動的におこなうことができる。
【００３９】
また、描画対象図形の入力データの書式は、製品型ごと、アプリケーションごとに定型化されているので、一つの描画対象図形の入力データに記述されていると想定される描画属性のブロック数は、事前に確定している。したがって、描画コマンド生成装置１１０に、さらに、描画属性ブロック数カウンタを設け、実行するアプリケーションの描画対象図形データブロックに特有の描画属性ブロック数を、描画属性ブロック数カウンタ上限値として記録してもよい。
【００４０】
この描画属性ブロック数カウンタは、上述の描画属性ワード数カウンタと連携させて利用する。具体的に説明すると、ある描画対象図形の入力データに対する描画コマンド生成処理の開始時に、描画属性ブロック数カウンタと描画属性ワード数カウンタを共にリセットする。そして、以後、入力データに記述された属性情報のブロックの読み込みが終わり、描画属性ワード数カウンタがリセットされると、このリセットイベントをトリガとして、描画属性ブロック数カウンタをインクリメントする。描画属性ブロック数カウンタのカウント数が上限値に達すると、その描画属性ブロックがその図形の最後であることが分かるので、処理が完了したら描画属性ブロック数カウンタと描画属性ワード数カウンタを共にリセットして、次の図形の処理に移行することができる。
【００４１】
以上説明したように、本実施の形態では、描画対象図形をあらわす入力データに含まれた属性情報を描画コマンドが記録されたテンプレート群と比較することによって、無駄な処理を発生させることなく、効率的に描画コマンドを生成することができる。また、テンプレートは書き換え可能であるため、多様な入力データに対応した描画コマンドを実現することができる。
【００４２】
また、上述したように、テンプレートを階層構造にすることによって、複雑な属性情報を含んだ入力データに対してもバブルの発生を抑えた効率的な描画コマンド生成を提供することができる。さらに、各種カウンタを備えることによって、描画コマンド生成装置１１０が、複数ブロックの属性情報が含まれた入力データを受け付けた場合や、複数の入力データを受け付けた場合であっても、適切かつ高速な描画コマンド生成を自動的に実行することができる。
【００４３】
以下では、上述した描画コマンド生成処理を実現する際の具体的な構成および処理内容について説明する。
【００４４】
（描画処理システムのハードウェア構成）
まず、本実施の形態にかかる描画処理システムのハードウェア構成について説明する。図２は、描画処理システムのハードウェア構成を示すブロック図である。図２のように、本実施の形態にかかる描画処理システム２００は、ＣＰＵコア２１０と、グラフィックスＬＳＩ２２０と、グラフィックスメモリ２３０とを含んでいる。
【００４５】
ＣＰＵコア２１０は、図形データが含まれた描画対象データ（ここでは一例として地図データとして以下説明する）をユーザや上位システムからの描画指示に応じてグラフィックスＬＳＩに提供する機能部であり、ＣＰＵ２１１と、メインメモリ２１２と、ＨＤＤ２１３とを含んでいる。
【００４６】
まず、ＣＰＵ２１１は、描画処理システムに含まれる各ハードウェアに関する制御を司る。そして、メインメモリ２１２は、ＣＰＵ２１１のワークエリアとして利用される。また、ＨＤＤ２１３には、地図データが記録されている。したがって、ユーザや上位システムからの描画指示が入力されるとＣＰＵ２１１は、ＨＤＤ２１３に記録されている地図データを読み出す。そして、ＣＰＵ２１１は、読み出した地図データを、そのままグラフィックスＬＳＩに出力する。従来の描画処理装置の場合、ＨＤＤから読み出された地図データは、そのままＣＰＵコア２１０によって描画コマンドに変換されていた。
【００４７】
グラフィックスＬＳＩ２２０は、ＣＰＵコア２１０から入力された地図データを用いて地図画像を描画する機能部であり、描画コマンド生成モジュール２２１と、ホストインターフェース２２２と、描画モジュール２２３と、表示モジュール２２４と、メモリコントローラ２２５とを含んでいる。なお、グラフィックスＬＳＩ２２０では、メイン機能である描画処理に先立って、ＣＰＵ２１１で実行されるアプリケーションプログラムから、描画コマンド生成モジュール２２１内のコマンドテンプレートへの書込み処理がおこなわれる。
【００４８】
描画処理をおこなう場合、グラフィックスＬＳＩ２２０では、まず、ＣＰＵコア２１０からホストインターフェース２２２を経由して地図データを受信する。受信した地図データは、描画コマンド生成モジュール２２１に入力され、描画コマンドが生成される。なお、生成された描画コマンドは、描画モジュール２２３に出力して即座に描画してもよいが、動作モードや、描画コマンド変換処理の詰まり具合に応じて、一旦グラフィックスメモリ２３０に記録して描画処理を待機させてもよい。また、表示モジュール２２４は、フレームバッファ上の描画済み画像データを読み出し、外部のディスプレイ２４０に対して表示用のデータを出力する。
【００４９】
グラフィックスメモリ２３０は、グラフィックスＬＳＩ２２０によって生成された描画コマンドを記録する機能部であり、描画コマンドバッファ２３１と、フレームバッファ２３２とを含んでいる。グラフィックスＬＳＩ２２０によって生成された描画コマンドは、描画コマンド生成モジュール２２１から描画モジュール２２３に出力された後、最終的に画素データとしてメモリコントローラ２２５を経由してグラフィックスメモリ２３０のフレームバッファ２３２に記録される。
【００５０】
（入出力データ）
つぎに、描画処理システム２００の入出力データについて具体的に説明する。描画処理システム２００へのデータ入力は、各カーナビゲーションシステム固有の地図データフォーマットとして書式化されているので、グラフィックスＬＳＩの仕様に依存しない書式になっている。したがって、描画処理システム２００の描画コマンド生成モジュール２２１では、グラフィックスＬＳＩ２２０の仕様に依存しない書式の入力データを、グラフィックスＬＳＩ２２０の仕様に合わせた書式に変換した出力データとして生成する。変換後の出力データは、描画モジュール２２３などの描画実行機構に対して出力される。なお、以下図３、４にて説明する入出力データは、一例として１ワードは３２ビットとする。
【００５１】
まず、入力データから説明する。図３は、描画処理システムへの入力データの一例を示すデータ図である。図３のデータ列３００は、図形一個分に関する情報をあらわしている。具体的に説明すると、データ列３００の先頭からの３ワード：図形色（０１〜０３）は、色情報をあらわしている。データ列３００の場合、０１〜０３の３ワードは、赤、緑、青の成分ごとに、０から１までの範囲に正規化された浮動小数点値で表現している。このとき、透明度の逆数であるアルファ成分は含まれない。なお、本実施の形態では、図形ごとの入力データの先頭からの３ワードは、常時色情報によって構成されているものとする。
【００５２】
さらに、データ列３００では、描画対象となる図形をあらわすデータとして、頂点数（０４）の１ワードによって、図形の頂点数をあらわしている。なお、頂点数の値自体は後述する出力データ列には明示的にあらわれない。しかしながら、頂点数をカウントして図形データと図形データの境界を認識するために利用される。
【００５３】
また、データ列３００では、図形の頂点数に続く１ワード（０５）によって、図形の種別をあらわすコードを入力する。図３の場合は、直線や三角形ではなく多角形であることをあらわしている。
【００５４】
一般的に入力データのコード体系は描画処理システム２００に採用されたシステムごとに固有なものである。したがって、入力データを構成する各コードがそれぞれ何を意味するのかを判別するために、入出力変換ルールとして定義する必要がある。本実施の形態では、描画コマンド生成モジュール２２１の内部に入力データのコードをインデックスとした間接参照機能部を備え、このシステムに対応したコードへの変換を実現している。
【００５５】
また、データ列３００では、図形の種別コードに続く６ワード（０６〜１１）によって、図形の頂点座標（ｘ，ｙ）を指定している。この頂点座標は、ｘとｙとをそれぞれ１６ビットの整数によって表現し、３２ビットのワードにｙｘの順でパックしている。
【００５６】
描画処理システム２００の描画コマンド生成モジュール２２１では、図３のような入力データを描画モジュール２２３による描画処理用のコマンド群に変換したデータを出力する。図４は、描画処理システムからの出力データの一例を示すデータ図である。図４のデータ列４００は、図３のデータ列３００が入力された場合の出力データをあらわしている。
【００５７】
データ列４００のように、入力データ列３００（図３参照）に記述されていた図形色データ（図３の０１〜０２）は、ＳｅｔＣｏｌｏｒコマンドに続く１ワード（０２）のパックドＲＧＢＡ形式に変換される。このとき、色成分はそれぞれ０から２５５までの８ビット自然数に変換され、ＲＧＢＡの順で結合される。なお、ＲＧＢＡのうち、Ａはアルファ成分であり、入力には含まれないため完全に不透明（２５５）とみなして追加される。
【００５８】
また、データ列４００では、入力データ列３００の０５〜１１の記述を変換した図形の形状と頂点座標に関するコマンド（０３〜２１）が記述されている。具体的には、入力データに記述されていた、ｙｘパックドによる頂点座標において、ｘとｙに分解して浮動少数点に変換し、頂点パラメータの始まりをあらわすＶｅｒｔｅｘＨｅａｄｅｒコマンドとセットにして出力している。
【００５９】
以上説明したように、描画コマンド生成モジュール２２１では、入力データがあらわす図形を描画させるための描画コマンドを出力データとして出力する。したがって、以下、描画コマンドを生成する描画コマンド生成モジュールの２２１の詳細な構成と描画コマンドの生成手順について説明する。
【００６０】
（描画コマンド生成モジュールの構成）
つぎに、描画コマンド生成モジュール２２１の詳細な構成について説明する。図５は、描画コマンド生成モジュールの詳細な構成を示すブロック図である。図５のように、描画コマンド生成モジュール２２１は、描画属性ワード数カウンタ５０１と、描画属性ブロック数カウンタ５０２と、書き換え可能コマンドテンプレート群５０３と、インデックス群５０４と、データ対テンプレート比較・解析器５０５と、一致フラグ論理和５０６と、描画コマンド構築器５０７と、データ型変換器５０８と、複数の合成器（ＭＵＸ１［１］〜［ｋ］、ＭＵＸ２〜５）・分配器（ＤＥＭＵＸ１、ＤＥＶ１［１］〜［ｎ］）とを含んでいる。
【００６１】
なお、図５の描画コマンド生成モジュール２２１には、描画対象図形の入力データを受け付ける入力ポートＰ１と、描画コマンド出力用のポートＰ２との２つのポートを明示しているが、実際には、他のデータ用の入出力ポートも備えている。それら他のポートについては、ポートを利用する処理を説明する際に図示して説明する。また、図５の結線は、実線が実コマンドデータの流れをあらわし、破線が制御データの流れをあらしている。
【００６２】
なお、描画コマンド生成モジュール２２１では、２階層の階層テンプレートツリーに対応した例を示しているが、これは一例であり、３階層以上に対応した構成にしてもよい。また、描画コマンド生成モジュール２２１では、第１階層を、複数の書き換え可能コマンドテンプレートによるテンプレート群５０３によって実現している。
【００６３】
また、第２階層は、インデックス比較器群と、書き換え可能コマンドインデックスメモリ群と、書き換え可能コマンド格納メモリ群を含むインデックス群５０４によって実現している。テンプレート群５０３の中の書き換え可能コマンドテンプレートの詳細な構成については後述する。
【００６４】
また、テンプレート群５０３の中の各書き換え可能コマンドテンプレートに含まれるメモリには、属性情報と属性情報に対応した描画コマンドが書き込まれている。この書き込み処理は、個々のテンプレートの内部のメモリに直接描画コマンドを書き込む手法と、他のメモリに間接参照するための指示フラグを書き込んでおく手法がある。
【００６５】
ここで、図３の入力データ列３００の例を当てはめると、書き換え可能コマンドインデックスメモリ〔１〕には三角形コードを、書き換え可能コマンドインデックスメモリ〔２〕には多角形コードを、書き換え可能コマンドインデックスメモリ〔３〕には直線コードを、書き込んでおく。
【００６６】
これに対応して、書き換え可能コマンド格納メモリ〔１〕には三角形描画コマンドＤｒａｗＴｒｉａｎｇｌｅを、書き換え可能コマンド格納メモリ〔２〕には多角形描画コマンドＤｒａｗＰｏｌｙｇｏｎを、書き換え可能コマンド格納メモリ〔３〕には直線描画コマンドＤｒａｗＬｉｎｅを、それぞれ書き込んでおく。
【００６７】
第１階層であるテンプレート群５０３と第２階層であるインデックス群５０４との間は、接続を制御するための分配器（ＤＥＶ１［１］〜［ｎ］）と、合成器（ＭＵＸ１［１］〜［ｋ］）とが設けられている。
【００６８】
また、描画コマンド生成モジュール２２１には、描画属性ワード数カウンタ５０１と描画属性ブロック数カウンタ５０２とが、少なくとも一つずつ用意されている。この描画属性ワード数カウンタ５０１と描画属性ブロック数カウンタ５０２とは、階層的に連携して動作する。
【００６９】
具体的には、ある一つの描画対象図形の入力データ中の一つの描画属性の読み込みが完了するたびに、描画属性ワード数カウンタ５０１がリセットされ、そのリセットに連鎖的に反応して描画属性ブロック数カウンタ５０２がインクリメントされる。描画属性ワード数カウンタ５０１がリセットされるトリガとなるワード数は、対応する書き換え可能コマンドテンプレートの詳細構造中にあらかじめ書き込まれている。また、描画属性ブロック数カウンタ５０２は、自己循環的にリセットされる。そのトリガとなる描画属性ブロック数は、描画属性ブロック数カウンタの計数上限値として、描画属性ブロック数カウンタにあらかじめ書き込まれている。
【００７０】
描画属性ブロック数カウンタと書き換え可能コマンドテンプレートとの間には、複数の書き換え可能コマンドテンプレートから一つを選択するための、第１の分配機（ＤＥＭＵＸ１）が配置されている。第１のデマルチプレクサは入力データをとらず描画属性ブロック数カウンタのみによって制御され、描画属性ブロック数カウンタのカウント値と同じ番号の書き換え可能コマンドテンプレートを選択するようになっている。
【００７１】
描画属性ワード数カウンタ５０１とテンプレート群５０３の中の書き換え可能コマンドテンプレートとの間には、現在有効な書き換え可能コマンドテンプレートからの、データ照会終了イベントを受信するための合成器（ＭＵＸ２）が配置されている。この合成器（ＭＵＸ２）は、描画属性ブロック数カウンタ５０２によって制御される。描画属性ブロック数カウンタ５０２のカウント値と同じ番号の書き換え可能コマンドテンプレートからのイベントを、選択的に描画属性ワード数カウンタ５０１に通過させる。このイベントをトリガとして、描画属性ワード数カウンタ５０１がリセットされる。
【００７２】
また、描画コマンド生成モジュール２２１のデータ対テンプレート比較・解析器５０５と、テンプレート群５０３との間には、第３の合成器（ＭＵＸ３）が配置されている。そして、データ対テンプレート比較・解析器５０５は、第３の合成器を介して描画属性ブロック数カウンタ５０２によって制御される。また、インデックス群５０４の中の書き換え可能コマンド格納メモリ群と描画コマンド構築器５０７との間には、第４の合成器（ＭＵＸ４）が配置されている。合成器（ＭＵＸ４）は、このインデックス群５０４の中のインデックス比較器群からの一致フラグによって制御される。そして、合成器（ＭＵＸ４）の出力は、さらに第５の合成器（ＭＵＸ５）によって、データ対テンプレート比較・解析器５０５との間で選択される。
【００７３】
データ対テンプレート比較・解析器５０５は、描画対象図形の入力データを受け付けると、テンプレート群５０３の各コマンドテンプレートに保持された情報とを、ワードごとに比較・解析する。解析結果により、入力データのワードが描画コマンドと直接対応するデータであれば、適切な描画コマンドをコマンドテンプレートから第３の合成器（ＭＵＸ３）を経由して描画コマンド構築器５０７に送る。
【００７４】
なお、描画コマンド構築器５０７に送られたデータが、描画モジュール２２３によって利用可能な描画コマンドそのものでなく色値や頂点座標のような数値データであれば、必要に応じてデータ型変換器５０８によってデータ型の変換を施す。また、入力データに含まれる属性情報のワードが描画コマンドと直接対応するデータでなく間接参照が必要なコード化された情報であれば、コマンドテンプレートは分配器（ＤＥＶ１［１］〜［ｎ］）に参照問い合わせを発生させる。
【００７５】
分配器（ＤＥＶ１［１］〜［ｎ］）は、参照問い合わせを合成器（ＭＵＸ１［１］〜［ｋ］）にブロードキャストする。合成器（ＭＵＸ１［１］〜［ｋ］）は、描画属性ブロック数カウンタのカウント値を元に現在有効なコマンドテンプレートからの参照問い合わせを特定して、インデックス群５０４のインデックス比較器に転送する。インデックス比較器では、コード化情報としての参照問い合わせとコマンドインデックスメモリに記録されたコードとを照合する。そして、インデックス比較器の照合により一致した場合にはインデックスにフラグを立てる。各コマンドインデックスメモリからのフラグは統合され、第４の合成器（ＭＵＸ４）を制御して、一致フラグの立っているインデックスに対応したコマンド格納メモリから描画コマンドを読み出す。
【００７６】
＜テンプレート書き込み処理＞
上述したように、描画コマンド生成モジュール２２１のテンプレート群５０３およびインデックス群５０４には、実際の描画コマンド生成処理に先立って、属性情報や対応する描画コマンドが書き込まれ記録された状態になっている。図５では、すでに書き込み済みの状態で各機能を説明した。ここでは、コマンドテンプレートに対する事前の書き込み処理の手順について説明する。
【００７７】
図６、７は、描画コマンド生成モジュールのテンプレート書き込み手順を示すブロック図である。まず、描画処理システム２００の稼動に先立ってテンプレートを書き込む段階では、図６のように、通常稼動時とは逆のデータフローを許容するような構成をとる。
【００７８】
図５にて説明したように、描画属性ブロック数カウンタ５０２は、通常稼動時にはカウントアップとリセット動作が有効である。一方、図６のように、テンプレート書き込み時には、外部ＣＰＵ２１１（図２参照）からの入力によりカウント出力値を任意の値に固定できるような機構となっている。このＣＰＵ２１１からの入力により、書き込む対象となるコマンドテンプレートを任意に選択して活性化できるようになる。なお、図６に示したように描画コマンド生成モジュール２２１には、書き込み処理に関する入出力用のポート３〜６が備えられている。
【００７９】
また、合成器（ＭＵＸ３）は、通常稼動時はコマンドテンプレート配列からの各出力から一つを選択する。一方、図７のように、テンプレート書き込み時には、外部ＣＰＵ２１１から入力されたテンプレートデータを、一つの選択されたコマンドテンプレート配列に書き込めるように、双方向のデータフローを許容するような機構となっている。コマンドテンプレート配列の一つを選択するのは、テンプレート書き込み時においても描画属性ブロック数カウンタ５０２からのカウント出力を利用する。
【００８０】
また、間接参照用のコマンドインデックスメモリと、それと対を成すコマンド格納メモリには、テンプレート書き込み時にのみ稼動する専用の分配器（ＤＥＭＵＸ２）によって書き込みを制御する。具体的は、分配器（ＤＥＭＵＸ２）は、外部ＣＰＵ２２１から入力されたインデックス選択信号（１、２、・・・、ｋを表現可能な数値データ）によって書き込み先を切り替える。
【００８１】
また、各コマンドインデックスメモリと、対を成すコマンド格納メモリは、一続きの長いメモリ領域とみなされる。したがって、テンプレート書き込み時には、外部ＣＰＵ２１１から入力された、各コマンドインデックスとコマンド本体が繋がった入力データを、インデックス選択信号を増加させて書き込み先を切り替えながら順次書き込んでいく。
【００８２】
なお、図６および図７では、コマンドテンプレート配列に書き込むために合成器（ＭＵＸ３）を双方向に拡張した構成にて説明したが、代わりにコマンドインデックスメモリとコマンド格納メモリへの書き込み説明と同様に、書き込み専用デマルチプレクサを追加しても良い。
【００８３】
また、コマンドインデックスメモリとコマンド格納メモリへの書き込み手段として書き込み専用デマルチプレクサを追加したが、コマンドテンプレート配列への書き込み説明と同様に、合成器（ＭＵＸ４）を双方向に拡張して、コマンドインデックスメモリとコマンド格納メモリを連続メモリ領域とみなして同時に書き込んでも良い。このような場合、合成器（ＭＵＸ４）には、外部ＣＰＵ２１１からインデックス選択信号を入力して書き込み先を切り替えられるように制御ポートを追加し、外部ＣＰＵ２１１からコマンドインデックスとコマンド本体が繋がった入力データを受信する経路を接続する。
【００８４】
＜テンプレートに関する機能＞
つぎに、テンプレート群５０３に関する機能について説明する。図８は、コマンドテンプレートおよびデータ対テンプレート比較・解析器の詳細な構成を示すブロック図である。なお、図８では、４個のコマンドテンプレートと４個のループカウンタ８０４の上限値セットの例を挙げているが個数は限定されない。また、図８のように、各コマンドテンプレートのＡからＩまでのフィールドは、連続したメモリ空間として実装できる。たとえば、Ａは５ビット、ＢとＣは各１ビット、Ｄは２ビット、Ｅは３２ビット、Ｆは６ビット、Ｇは１ビット、Ｈは８ビット、Ｉは８ビットと割り当てれば、長さ６４ビットで１ワードを構成する一まとまりのデータとして扱える。
【００８５】
詳細に説明すると、図８に示すように、テンプレート群５０３の各コマンドテンプレートは、ＡからＩまでの要素を保持更新可能なレジスタを持っている。一つのコマンドテンプレートは、一つの描画属性要素の単位に対応している。例えば、図形色、頂点数、図形種別、頂点座標は、それぞれが独立した描画属性であるとみなす。Ａ〜Ｉまでの意味は下記のようになっている。
【００８６】
Ａ：入力ワード数
Ｂ：間接参照フラグ
Ｃ：繰り返し変数フラグ
Ｄ：繰り返し変数識別子
Ｅ：コマンド
Ｆ：出力コマンドワード数
Ｇ：繰り返し対象データフラグ
Ｈ：出力データワード
Ｉ：データ変換識別子
【００８７】
また、図８の例では、コマンドテンプレート［１］は、入力データに含まれる属性情報のうちの図形色をコマンドに変換する。したがって、Ａの入力ワード数は、赤、緑、青それぞれの計「３」ワードである。コードによる間接参照は不要であるため、Ｂの間接参照フラグは「ＦＡＬＳＥ」と記録されている。また、後述する繰返し変数ではないため、Ｃの繰返し変数フラグも「ＦＡＬＳＥ」である。Ｄの繰返し変数識別子は、繰返し変数が複数あった場合に中から一つを識別するための目印であるため、図形色には無関係である。したがって、ここでは、対象外であることを「負数（−１）」で表現している。
【００８８】
Ｅには出力すべきコマンドを記録しておく。ここでは「ＳｅｔＣｏｌｏｒ」コマンドである。Ｆは出力コマンドワード数である。「ＳｅｔＣｏｌｏｒ」コマンドを１ワード出力するので、Ｆには「１」を記録しておく。後述する繰返し対象データではないので、Ｇの繰返し対象データフラグは「ＦＡＬＳＥ」である。Ｈは出力データワード数である。「ＳｅｔＣｏｌｏｒ」コマンドに続くパックドＲＧＢＡデータを１ワード出力するので、Ｈには「１」を記録しておく。Ｉはデータ変換識別子であり、データ変換が必要な場合に、データ型変換器中の変換ルールを選択するためのコードを記録しておく（ここでは、「Ｃｏｎｖｅｒｔｅｒ１」）。
【００８９】
以上説明したＡ〜Ｉの設定を総合するとコマンドテンプレート［１］では、図形色の例では、ＲＧＢ各色独立の浮動少数点値を、各色８ビット整数をまとめたパックドＲＧＢＡ形式に変換する。また、Ａの入力ワード数により図形色に関与する入力ワード数は３と判明するので、リードカウンタ８０１の上限値を３にセットする。Ｆの出力コマンドワード数が１なので、リーダ８０２経由で３ワード分入力データを読み込む前に、Ｅに記録されているＳｅｔＣｏｌｏｒコマンドをまず出力する。続いて、３ワード分の入力データをデータ型変換器５０８に送り、変換後の１ワードのデータを出力する。３ワード分の入力データの処理が終わると、図３のワード数カウンタがリセットされてブロック数カウンタがインクリメントされ、次のコマンドテンプレートに備えることとなる。
【００９０】
また、コマンドテンプレート［２］では、入力データに含まれる属性情報のうちの図形の頂点数を扱う。Ａの入力ワード数は「１」ワードである。コードによる間接参照は不要であるため、Ｂの間接参照フラグは「ＦＡＬＳＥ」である。この頂点数と同じ回数だけ、後から入力される頂点座標を処理するので、このデータを繰返し変数と呼び、Ｃの繰返し変数フラグを「ＴＲＵＥ」にしている。Ｄの繰返し変数識別子は、繰返し変数が今回は１種類しかないため、最初のインデックスとして「１」を与えている。
【００９１】
また、コマンドテンプレート［２］では、出力すべきコマンドは無いので、Ｅには対象外を示す「（−１）」を記録しておく。このデータはカウンタをコントロールするだけで、描画コマンドとしての実態を持たないので、ＦとＨは共に「０」である。繰返し対象データそのものではなく、繰返し対象データの繰返し回数を指示する値なので、Ｇの繰返し対象データフラグは「ＦＡＬＳＥ」である。出力データが無いので、Ｉには対象外を示す「（−１）」を記録しておく。
【００９２】
したがって、入力データの１ワード分入力データを読み込み、Ｃのフラグをトリガとした経路制御と、Ｄのインデックスによる配列選択により、ループカウンタ上限値レジスタ８０３の１番目の要素に、頂点数がセットされる。続いて図５の描画属性ワード数カウンタ５０２がリセットされてブロック数カウンタがインクリメントされ、次のコマンドテンプレートに備えることとなる。
【００９３】
コマンドテンプレート［３］は、入力データに含まれる属性情報のうちの図形種別をコマンドに変換する。種別とは、たとえば、直線、三角形、多角形などのカテゴリから一つを選択することを意味する。したがって、種別ごとに、描画コマンドが異なる。入力データ上で様々な図形種別を指定でき、図形毎に変化しうるので、このワードは変数として入力される。さらに、入力データ上の図形種別識別コードはグラフィックスＬＳＩ２２０の仕様に依存しない書式なので、コードからグラフィックスＬＳＩ２２０の図形種別コマンドを導かなければならない。
【００９４】
上述の問題に対応するため、描画コマンド生成モジュール２２１では、間接参照の手法を利用する。したがって、コマンドテンプレート［３］は、Ａの入力ワード数は「１」ワードである。そして、コードによる間接参照をおこなうため、Ｂの間接参照フラグは「ＴＲＵＥ」である。また、Ｃの繰返し変数フラグは「ＦＡＬＳＥ」、Ｄの繰返し変数識別子は対象外「（−１）」、出力すべきコマンドは直接Ｅに記録されていないので対象外「（−１）」となる。さらに、Ｆは間接参照の結果１ワードの図形種別コマンドが導かれるので「１」、Ｇの繰返し対象データフラグは「ＦＡＬＳＥ」である。Ｈは付随データ無しのため「０」、そしてＩは対象外「（−１）」となる。
【００９５】
したがって、１ワード分入力データを読み込み、Ｂのフラグをトリガとした経路制御によって、入力データは、そのままインデックス群５０４のインデックス比較器に送られる。また、間接参照による図形種別コマンドは、図４にてデータ列４００に示したような構成となる。続いて、図３のワード数カウンタがリセットされて描画属性ブロック数カウンタ５０２がインクリメントされ、次のコマンドテンプレートに備えることとなる。
【００９６】
コマンドテンプレート［４］は、入力データに含まれる属性情報のうちの頂点座標の書式を変換して、頂点数分だけデータを出力する。頂点数は、コマンドテンプレート［２］を利用して抽出され、ループカウンタ上限値レジスタ８０３の１番目の要素に記録された値である。
【００９７】
コマンドテンプレート［４］では、Ａの入力ワード数は図形毎に変化するので規定できないため、対象外「（−１）」とする。その代わりに頂点数を基準にして処理の終了を判定する。Ｂ、Ｃのフラグは共に「ＦＡＬＳＥ」となる。Ｄの繰返し変数識別子は、対象であるから、ループカウンタ上限値レジスタ８０３のインデックス番号である「１」をセットする。出力すべきコマンドは、この例では頂点ごとにＶｅｒｔｅｘＨｅａｄｅｒコマンドを付与することを想定しているのでＥに設定する。頂点ごとにＶｅｒｔｅｘＨｅａｄｅｒのような頂点識別用コマンドを必要としないコマンド体系の場合は、Ｅは「−１」となる。
【００９８】
Ｆは、ＶｅｒｔｅｘＨｅａｄｅｒコマンド１ワードの分で「１」となり、Ｇの繰返し対象データフラグは「ＴＲＵＥ」であるため、ループカウンタ８０４を起動する。Ｈはｘｙ座標を１ワードずつに分解するため「２」となり、そのためのデータ型変換ルールへの参照コードをＩにセットする（ここでは、「Ｃｏｎｖｅｒｔｅｒ２」）。
【００９９】
したがって、Ｅの「ＶｅｒｔｅｘＨｅａｄｅｒ」コマンドを出力した後、１ワード分入力データを読み込み、データ型変換により２ワードの浮動少数値にして出力する。その後は、ＶｅｒｔｅｘＨｅａｄｅｒコマンド出力から２ワードの浮動少数値出力までの工程を、コマンドテンプレート［２］の処理でループカウンタ上限値レジスタ８０３に設定された回数に基づいて繰り返す。続いて図３のワード数カウンタがリセットされてブロック数カウンタがインクリメントされ、次のコマンドテンプレートに備えることとなる。
【０１００】
なお、図８の描画コマンド構築器５０７は、コマンドテンプレートのＥフィールドが「−１」以外の場合は、セレクタＳＥＬ１を経由して、Ｈフィールドから描画コマンドが出力される。また、コマンドテンプレートのＥフィールドが「−１」の場合、セレクタＳＥＬ１を経由して、数値データが出力される。この数値データは、データ型変換されるかそのまま出力される。その選択はコマンドテンプレートのＩフィールドが「−１」か、どうかに応じて、セレクタＳＥＬ２とデマルチプレクサＤＭを制御することによっておこなわれる。このときの出力データ長は、コマンドテンプレートのＨフィールドに応じて、出力制御器が適宜統制する。
【０１０１】
＜描画コマンド生成手順＞
つぎに、描画コマンドの生成手順について説明する。図９は、描画コマンド生成の手順を示すフローチャートである。図９のフローチャートでは、描画対象となる図形の描画用データの入力を描画コマンド列に変換して出力するための手順をあらわしている。図９のフローチャートにおいて、まず、ブロック数カウンタとワード数カウンタを共にリセットし（ステップＳ９０１）、ブロック数のカウンタの計数値に応じたコマンドテンプレートを選択する（ステップＳ９０２）。
【０１０２】
つぎに、ステップＳ９０２によって選択されたテンプレートのテンプレート要素と入力データとを照合する（ステップＳ９０３）。ステップＳ９０２にて説明したように、テンプレートの選択は、ブロック数カウンタの値に依存する。したがって、コマンドテンプレートの並び順が入力データの属性と一致させる必要がある。そこで、入力データに含まれる図形色、頂点数、図形種別、頂点座標などの各属性に対応したテンプレートを、入力データの書式を参照して記述順に並べておく。
【０１０３】
ステップＳ９０３においてテンプレート要素と入力データとが照合されると、照合結果に応じて出力コマンド列を生成する（ステップＳ９０４）。ここで生成された出力コマンド列が描画コマンドを構築するためのデータ列となる。なお、上述したステップＳ９０３およびステップＳ９０４の処理内容については詳しく後述する。
【０１０４】
出力コマンド列を生成すると、ブロック数カウンタの値をインクリメントし、ワード数カウンタの値をリセットする（ステップＳ９０５）。このステップＳ９０５によってブロック数カウンタがインクリメントされるため、次のテンプレートが選ばれる。そして、全属性の設定が終了したか否かを判断する（ステップＳ９０６）。ここで、全属性の設定が終了していなければ（ステップＳ９０６：Ｎｏ）、ステップＳ９０２の処理に戻り、つぎの属性のコマンドテンプレートを選択する。
【０１０５】
ステップＳ９０６において、全属性の設定が終了すると（ステップＳ９０６：Ｙｅｓ）、最後に、地図データの全図形を処理したか否かを判断し（ステップＳ９０７）、全図形の処理が終了していなければ（ステップＳ９０７：Ｎｏ)、ステップＳ９０１の処理に戻り、次の図形に関しての処理をおこなう。ステップＳ９０７において、全図形の処理が終了したと判断された場合（ステップＳ９０７：Ｙｅｓ）、そのまま一連の処理を終了する。
【０１０６】
つぎに、ステップＳ９０３およびステップＳ９０４の処理内容について詳しく説明する。図１０−１は、ステップＳ９０３の参照処理の詳細な手順を示すフローチャートである。図１０−１のフローチャートでは、ステップＳ９０２の処理が終了すると、選択したテンプレートに含まれているテンプレート要素をそれぞれ抽出する（ステップＳ１００１)。そして、抽出したテンプレート要素を参照してリードカウンタ８０１(図８参照)の上限値を設定する（ステップＳ１００２）。
【０１０７】
そして、さらに抽出したテンプレート要素から間接参照フラグを参照して間接参照か否かを判断する（ステップＳ１００３）。この判断に応じて、間接参照であれば（ステップＳ１００３：Ｙｅｓ）、図１０−２のステップＳ１００４の処理に移行し、間接参照でなければ（ステップＳ１００３：Ｎｏ）、図１０−２のステップＳ１００８の処理に移行する。
【０１０８】
図１０−２は、ステップＳ９０４の生成処理の詳細な手順を示すフローチャートである。図１０−２のフローチャートでは、ステップＳ１００３の判断結果において、間接参照フラグが「ＴＲＵＥ」となっており間接参照であれば（ステップＳ１００３：Ｙｅｓ）、つぎに、間接参照処理に移行する。
【０１０９】
まず、入力データのワードを読み込み（ステップＳ１００４）、読み込んだワードコマンドインデックス比較器配列にブロードキャストし、コマンドインデックスを検索する（ステップＳ１００５）。そして検索によって一致したインデックスのコマンドを取得する（ステップＳ１００６）。そして取得したコマンドを出力して（ステップＳ１００７）、ステップＳ９０５の処理に移行する。
【０１１０】
なお、図１１は、間接参照による描画コマンド生成例を示すブロック図である。ステップＳ１００３によって間接参照と判断された場合には、図１１のように、間接参照用の経路が活性化される。具体的に説明すると、図１１において、実コマンドデータをあらわす実線と、制御データをあらわす破線が太くなっている経路が活性化されていることになる。
【０１１１】
フローチャートの説明に戻り、間接参照フラグが「ＦＡＬＳＥ」となり、間接参照ではない場合には（ステップＳ１００３：Ｎｏ）、つぎに、繰返し対象データフラグをチェックして繰返し変数か否かを判断する（ステップＳ１００８）。ここで、繰返し対象データフラグが「ＴＲＵＥ」となっており、繰返し変数であると判断された場合には（ステップＳ１００８：Ｙｅｓ）、入力データからループカウンタ上限値配列要素を選択する（ステップＳ１００９）。そして、対応するワードを読み込み（ステップＳ１０１０）、読み込んだ値に応じてループカウンタの上限値を設定し（ステップＳ１０１１）、ステップＳ１０１７の処理に移行する。
【０１１２】
一方、ステップＳ１００８において、間接参照フラグと繰返し変数フラグが共に「ＦＡＬＳＥ」となっていた場合には（ステップＳ１００８：Ｎｏ）、さらに、繰返し対象か否かを判断する（ステップＳ１０１２)。こここで、繰返し対象であると判断された場合には（ステップＳ１０１２：Ｙｅｓ)、テンプレートの状態に応じてコマンドを出力する（ステップＳ１０１３)。テンプレートの状態とは、たとえば、「ＶｅｒｔｅｘＨｅａｄｅｒ」など出力する必要のあるコマンドであれば出力させることを意味する。
【０１１３】
そして、１頂点分のワードを読み込み（ステップＳ１０１４)、データ型を変換し（ステップＳ１０１５)、変換したデータを出力する（ステップＳ１０１６)。その後、繰返し処理が終了したか否かを判断し（ステップＳ１０１７)、繰返し処理が終了するまでステップＳ１０１３からの処理を繰り返す（ステップＳ１０１７：Ｎｏのループ)。そして、繰返し処理が終了すると（ステップＳ１０１７：Ｙｅｓ)、ステップＳ９０５の処理に移行する。
【０１１４】
また、ステップＳ１０１２において、繰返し対象でないと判断された場合には（ステップＳ１０１２：Ｎｏ)、読み込んだワードに対応するコマンドを出力し（ステップＳ１０１８)、さらに、数値データ有りか否かを判断する（ステップＳ１０１９)。ここで、数値データがなければ（ステップＳ１０１９：Ｎｏ)、そのままステップＳ９０５の処理に移行する。
【０１１５】
一方、ステップＳ１０１９において、数値データ有りと判断された場合(ステップＳ１０１９：Ｙｅｓ)、ワードを読み込み（ステップＳ１０２０)、データ型の変換をおこなう（ステップＳ１０２１)。そして、変換後のデータを出力して（ステップＳ１０２２)、ステップＳ９０５の処理に移行する。
【０１１６】
ここで、図１２は、直接コマンドによる描画コマンド生成例を示すブロック図である。上述のように、間接参照フラグが「ＦＡＬＳＥ」となっていた場合には、直接コマンドを読み出して出力するため、図１２のように、直接コマンド出力用の経路が活性化される。具体的に説明すると、図１２において、実コマンドデータをあらわす実線と、制御データをあらわす破線が太くなっている経路が活性化されていことになる。
【０１１７】
さらに、図１３は、カウンタリセット処理を示すブロック図である。図９のフローチャートのステップＳ９０５にて説明したように、入力データに含まれた属性情報の中の一つの属性についての描画コマンドを生成する処理が終了すると、各カウンタがリセットされる。したがって、図１３のように、各カウンタのカウンタ値をリセットするためのリセット用の経路が活性化される。具体的に説明すると、図１３において、実コマンドデータをあらわす実線と、制御データをあらわす破線が太くなっている経路が活性化されていることになる。
【０１１８】
（ナビゲーションシステムへの適用）
ここでは、上述した描画コマンド生成モジュール２２１を一般的なナビゲーションシステムへ適用させた場合の構成例を挙げる。図１４は、ナビゲーションシステムへの適用例を示すブロック図である。図１４のように、カーナビゲーション装置１４００には、図２にて説明した本実施の形態にかかる描画処理システム２００を構成する各ハードウェア（２１０、２２０および２３０）が搭載されている。そして、ＩＯコントローラ１４０１によって、カーナビゲーション装置１４００の独自構成である、ＧＰＳユニット１４０２と、ジャイロセンサ１４０３と、光学ディスクドライブユニット１４０４と、描画処理システム２００に相当する各ハードウェアとを接続している。したがって、カーナビゲーション装置１４００描画処理システム２００を構成する各ハードウェア（２１０、２２０および２３０）によってリアルタイム性の高い図画像の描画処理を実現することができる。
【０１１９】
以上説明したように、本実施の形態の描画処理システム２００では、描画対象図形の入力データに含まれた属性情報を描画コマンドが記録されたテンプレート群と比較することによって、無駄な処理を発生させることなく、効率的に描画コマンドを生成することができる。また、テンプレートは書き換え可能であるため、多様な入力データに対応した描画コマンドを実現することができる。
【０１２０】
さらに、各種カウンタを備えることによって、描画コマンド生成モジュール２２１が、複数ブロックの属性情報が含まれた入力データを受け付けた場合や、複数の入力データを受け付けた場合であっても、適切かつ高速な描画コマンド生成を自動的に実行することができる。したがって、描画コマンド生成モジュール２２１を搭載したグラフィックスＬＳＩ２２０を適用することによって、多様なグラフィックスシステムにおいても無駄なサイクルの発生を抑えて、高速な描画処理を実現することができる。
【０１２１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２２】
（付記１）図形の特徴をあらわす属性情報と、当該属性情報を反映した図形を描画するための描画コマンドとが対応付けて記録されたテンプレートが属性の種類に応じて用意されたテンプレート群と、
描画対象図形の属性情報が入力された場合に、当該描画対象図形の属性情報と、前記テンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較して、一致する属性情報を出力する比較器と、
前記比較器によって出力された属性情報が記録されたテンプレートから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築するコマンド構築器と、
を備えることを特徴とする描画コマンド生成装置。
【０１２３】
（付記２）前記描画対象図形の属性情報が入力された場合に、当該属性情報を前記テンプレート群に含まれるテンプレート数に合わせて分配して並列に出力させる分配器を備え、
前記比較器は、前記テンプレート群の数と対応した比較器群であり、各比較器は、前記分配器から出力された前記描画対象図形の属性情報と、前記テンプレート群のいずれかのテンプレートに記録された属性情報とを比較することを特徴とする付記１に記載の描画コマンド生成装置。
【０１２４】
（付記３）前記比較器によって当該描画対象図形の属性情報と一致する属性情報が出現するまで、前記テンプレート群の中のテンプレートに記録された属性情報を順番に前記比較器に入力する入力カウンタを備えることを特徴とする付記１に記載の描画コマンド生成装置。
【０１２５】
（付記４）前記テンプレート群（以下、「前段のテンプレート群」という）の各テンプレートに記録された属性情報と異なる属性情報が記録された後段のテンプレート群と、
前記描画対象図形の複数の属性情報が複数入力された場合に、前記比較器（以下、「前段の比較器」という）によって前記前段のテンプレート群の中のテンプレートに、前記描画対象図形の複数の属性情報の中の属性情報と一致する属性情報が記録されていると判断されると、前記前段の比較器によって一致すると判断された属性情報以外の他の属性情報と、前記後段のテンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較する後段の比較器と、を備え、
前記コマンド構築器は、前記前段の比較器によって前記描画対象図形の属性情報と一致する属性情報が記録されていると判断されたテンプレートと、前記後段の比較器によって前記描画対象図形の属性情報と一致する属性情報が記録されていると判断されたテンプレートとから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築することを特徴とする付記１〜３のいずれか一つに記載の描画コマンド生成装置。
【０１２６】
（付記５）前記テンプレートは、前記属性情報と、当該属性情報に対応付けて記録された描画コマンドとは描画対象図形に応じて書き換え可能であることを特徴とする付記１〜４のいずれか一つに記載の描画コマンド生成装置。
【０１２７】
（付記６）前記コマンド構築器によって構築された前記描画対象図形を描画させるための描画コマンドを他の形式のデータ型の描画コマンドに変換するデータ型変換器を備えることを特徴とする付記１〜５のいずれか一つに記載の描画コマンド生成装置。
【０１２８】
（付記７）付記１〜６のいずれか一つに記載の描画コマンド生成装置によって生成された描画コマンドを用いて図形を描画する描画処理装置。
【０１２９】
（付記８）図形の特徴をあらわす属性情報と、当該属性情報を反映した図形を描画するための描画コマンドとが対応付けて書き込み可能なテンプレートが属性の種類に応じて用意されたテンプレート群に対して、それぞれ任意の属性情報と当該属性情報に対応した描画コマンドを書き込む書込工程と、
前記書込工程によって任意の属性情報と、当該属性情報に対応した描画コマンドが書き込まれたテンプレート群に、描画対象図形の属性情報が入力された場合に、当該描画対象図形の属性情報と、前記テンプレート群の各テンプレートに記録された属性情報とをそれぞれ比較して、一致した属性情報を出力する比較工程と、
前記比較器によって出力された属性情報が記録されたテンプレートから描画コマンドを読み出して、前記描画対象図形を描画させるための描画コマンドとして構築するコマンド構築工程と、
を含むことを特徴とする描画コマンド生成方法。
【０１３０】
（付記９）前記テンプレート群に対して、それぞれ任意の属性情報と当該属性情報に対応した描画コマンドをあらたに書き込む更新工程とを含むことを特徴とする付記８に記載の描画コマンド生成方法。
【０１３１】
（付記１０）前記コマンド構築工程によって構築された前記描画対象図形を描画させるための描画コマンドを他の形式のデータ型の描画コマンドに変換するデータ型変換工程を含むことを特徴とする付記８または９に記載の描画コマンド生成方法。
【０１３２】
（付記１１）付記８〜１０のいずれか一つに記載の描画コマンド生成方法によって生成された描画コマンドを用いて図形を描画する描画処理方法。
【図面の簡単な説明】
【０１３３】
【図１】本実施の形態にかかる描画処理の概要を示す説明図である。
【図２】描画処理システムのハードウェア構成を示すブロック図である。
【図３】描画処理システムへの入力データの一例を示すデータ図である。
【図４】描画処理システムからの出力データの一例を示すデータ図である。
【図５】描画コマンド生成モジュールの詳細な構成を示すブロック図である。
【図６】描画コマンド生成モジュールのテンプレート書き込み手順（その１）を示すブロック図である。
【図７】描画コマンド生成モジュールのテンプレート書き込み手順（その２）を示すブロック図である。
【図８】コマンドテンプレートおよびデータ対テンプレート比較・解析器の詳細な構成を示すブロック図である。
【図９】描画コマンド生成の手順を示すフローチャートである。
【図１０−１】ステップＳ９０３の照合処理の詳細な手順を示すフローチャートである。
【図１０−２】ステップＳ９０４の生成処理の詳細な手順を示すフローチャートである。
【図１１】間接参照による描画コマンド生成例を示すブロック図である。
【図１２】直接コマンドによる描画コマンド生成例を示すブロック図である。
【図１３】カウンタリセット処理を示すブロック図である。
【図１４】ナビゲーションシステムへの適用例を示すブロック図である。
【符号の説明】
【０１３４】
１０１  入力データ
１０２  出力データ
１１０  描画コマンド生成装置
１１１  テンプレート群
１１２  比較器
１１３  コマンド構築器
１２０  描画処理装置
２００  描画処理システム
２１０  ＣＰＵコア
２１１  ＣＰＵ
２１２  メインメモリ
２１３  ＨＤＤ
２２０  グラフィックスＬＳＩ
２２１  描画コマンド生成モジュール
２２２  ホストインターフェース
２２３  描画モジュール
２２４  表示モジュール
２２５  メモリコントローラ
２３０  グラフィックメモリ
２３１  描画コマンドバッファ
２３２  フレームバッファ
【図１】
2009245156.tif 000003
【図２】
2009245156.tif 000004
【図３】
2009245156.tif 000005
【図４】
2009245156.tif 000006
【図５】
2009245156.tif 000007
【図６】
2009245156.tif 000008
【図７】
2009245156.tif 000009
【図８】
2009245156.tif 000010
【図９】
2009245156.tif 000011
【図１０−１】
2009245156.tif 000012
【図１０−２】
2009245156.tif 000013
【図１１】
2009245156.tif 000014
【図１２】
2009245156.tif 000015
【図１３】
2009245156.tif 000016
【図１４】
2009245156.tif 000017