(57)【要約】【課題】テクスチャアトラスを低負荷で高速に作成したい。【解決手段】テクスチャキャッシュ３１は、複数のテクスチャを統合して一時格納するためのメモリである。テクスチャ格納部１５は、メインメモリ２０から複数のテクスチャを順次読み出してテクスチャキャッシュ３１に格納する。テクスチャ分割部１６は、テクスチャキャッシュ３１内の格納状態に応じて、テクスチャ格納部１５によって格納されるべきテクスチャを分割できる。【選択図】図４
2013206094.tif 000002
【特許請求の範囲】
【請求項１】
複数のテクスチャを統合して一時格納するためのテクスチャキャッシュメモリに、メインメモリから複数のテクスチャを順次読み出して格納するテクスチャ格納部と、
前記テクスチャキャッシュメモリ内の格納状態に応じて、前記テクスチャ格納部によって格納されるべきテクスチャを分割するテクスチャ分割部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記テクスチャキャッシュメモリ内のテクスチャ格納状態を示す格納管理情報を保持する格納管理情報保持部と、
前記格納管理情報保持部に保持される格納管理情報を参照して、前記テクスチャ格納部によって格納されるべきテクスチャの格納位置を決定する格納位置決定部と、をさらに備え、
前記テクスチャキャッシュメモリは、前記テクスチャを格納する二次元領域を有し、
前記格納位置決定部は、前記二次元領域の水平方向および垂直方向の一方を主走査方向および他方を副走査方向とし、順次走査方式にしたがい前記テクスチャの格納位置を決定し、
前記格納位置決定部は、対象テクスチャの格納位置を決定する際、前記対象テクスチャと主走査方向に隣接する隣接テクスチャとの接触状態を判定し、前記対象テクスチャの前記隣接テクスチャ側の辺に、前記隣接テクスチャと非接触の部分がある場合、前記対象テクスチャの格納候補位置を副走査方向に一単位移動させた状態で順次走査方式にしたがい前記対象テクスチャの次の格納候補位置を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記格納位置決定部は、順次走査方式にしたがい前記対象テクスチャの格納位置を決定する際、前記対象テクスチャの一部が主走査方向に前記二次元領域をはみ出す場合、前記対象テクスチャの格納候補位置を副走査方向に一単位移動させ、副走査方向にはみ出す場合、前記対象テクスチャを前記テクスチャ分割部に分割させることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記二次元領域は前記主走査方向を長手方向とするスライス状に、複数のブロックに分割されており、
前記格納位置決定部は、順次走査方式にしたがい前記対象テクスチャの格納候補位置を副走査方向に移動させる際、前記ブロック単位で移動させることを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記テクスチャキャッシュメモリに格納されたテクスチャの格納位置を示すテクスチャ管理情報を保持するテクスチャ管理情報保持部と、
前記テクスチャ管理情報保持部に保持されるテクスチャ管理情報を参照して、前記テクスチャキャッシュメモリに格納されたテクスチャを描画するテクスチャ描画部と、
をさらに備えることを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記テクスチャが分割されて前記テクスチャキャッシュメモリに格納される場合、前記テクスチャ管理情報保持部には、分割されたテクスチャの配置座標、および分割前のテクスチャの識別情報が登録されることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
請求項１から６のいずれかに記載の情報処理装置と、
前記情報処理装置により生成された画像を表示するユーザインタフェースと、
を備えることを特徴とするカーナビゲーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テクスチャアトラスを用いて描画する情報処理装置、カーナビゲーション装置に関する。
【背景技術】
【０００２】
従来のテクスチャマッピング技術としてハードウェア処理するものが知られている（例えば、特許文献１参照）。一般的に、ハードウェア処理はソフトウェア処理より消費電力が高く、コスト高となる。
【０００３】
グラフィクスハードウェアのＡＰＩ（Application Programming Interface）の代表的なものにＯｐｅｎＧＬ（登録商標）、ＯｐｅｎＧＬ−ＥＳ（登録商標）、ＤｉｒｅｃｔＸ（登録商標）がある。これらで使用される描画高速化手法にテクスチャアトラスがある。テクスチャアトラスとは複数のテクスチャをまとめて一つのテクスチャとするものである。テクスチャアトラスの作成はＣＰＵおよびＧＰＵの負荷を大きくするため、事前に作成されたテクスチャアトラスを使用するか、任意のシーンＡからシーンＢへ遷移する間に作成するのが一般的である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−０９１８０１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
カーナビゲーションシステムのような低スペックな組み込みシステムの場合、テクスチャを必要なタイミングでリアルタイムに効率よく読み込む必要がある。
【０００６】
本発明はこうした状況に鑑みなされたものであり、その目的は、テクスチャアトラスを低負荷で高速に作成する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様の情報処理装置は、複数のテクスチャを統合して一時格納するためのテクスチャキャッシュメモリに、メインメモリから複数のテクスチャを順次読み出して格納するテクスチャ格納部と、前記テクスチャキャッシュメモリ内の格納状態に応じて、前記テクスチャ格納部によって格納されるべきテクスチャを分割するテクスチャ分割部と、を備える。
【０００８】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、テクスチャアトラスを低負荷で高速に作成できる。
【図面の簡単な説明】
【００１０】
【図１】図１（ａ）−（ｂ）は、ＡＰＩを用いた複数テクスチャの描画について説明するための図である。
【図２】図２（ａ）−（ｂ）は、テクスチャアトラスの作成方法を示す図である。
【図３】本発明の実施の形態に係るカーナビゲーション装置のハードウェア機能ブロック図である。
【図４】本発明の実施の形態に係る情報処理装置のソフトウェア機能ブロック図である。
【図５】図５（ａ）−（ｃ）は、本実施の形態に係るテクスチャ格納アルゴリズムを説明するための具体例１を示す図である。
【図６】図６（ａ）−（ｄ）は、本実施の形態に係るテクスチャ格納アルゴリズムを説明するための具体例２を示す図である。
【図７】ブロック分割されたテクスチャアトラス領域を説明するための図である。
【図８】テクスチャ格納処理の全体動作を示すフローチャートである。
【図９】格納位置決定処理を示すフローチャートである。
【図１０】狭義のテクスチャ格納処理を示すフローチャートである。
【図１１】格納管理情報更新処理を示すフローチャートである。
【図１２】テクスチャの描画処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
まず本発明の実施の形態を詳細に説明する前にテクスチャアトラスについて説明する。図１（ａ）−（ｂ）は、ＡＰＩを用いた複数テクスチャの描画について説明するための図である。図１（ａ）はテクスチャアトラスを用いない場合を示し、図１（ｂ）はテクスチャアトラスを用いる場合を示す。ＡＰＩの呼び出しにはオーバーヘッドがかかるため、その呼び出し回数が少ないほうが処理速度が速くなる。
【００１２】
図１（ａ）は９つのテクスチャをそれぞれ別のファイルで管理している場合を示している。その内の４つのテクスチャを描画する場合、アプリケーションは、描画すべきテクスチャを有効にするためのバインド命令と、テクスチャを描画するための描画命令をそれぞれ４回コールする必要があるため、合計８回のコールが必要となる。
【００１３】
図１（ｂ）は９つのテクスチャを１つのテクスチャにまとめて、テクスチャアトラスとして１つのファイルで管理している場合を示している。図１（ａ）と同様に４つのテクスチャを描画する場合、アプリケーションは、描画すべきテクスチャアトラスを有効にするためのバインド命令と、テクスチャアトラス内のテクスチャを描画するための描画命令をそれぞれ１回コールすれば足りるため、合計２回のコールで足りる。
【００１４】
このようにテクスチャアトラスを用いることにより、ＡＰＩの呼び出し回数が減り処理速度が速くなる。このテクスチャアトラスは、ＣＰＵおよびＧＰＵの負荷が非常に高いためアプリケーションのシーンとシーンの間に準備するのが一般的である。即ち同一シーンの描画中は、キャッシュメモリへのテクスチャ読み込み、テクスチャアトラスの生成は行わない。
【００１５】
なおゲームのように次のシーンで使用されるテクスチャが予め分かっている場合は、現シーンの描画中に次のシーンのテクスチャをキャッシュメモリにプリフェッチし、テクスチャアトラスを生成することができる。しかしながら、カーナビゲーションシステムのように次のシーンで使用されるテクスチャの予測が困難な場合は、テクスチャのプリフェッチは困難である。
【００１６】
またカーナビゲーション装置が設置される車両内は屋内と比較し温度環境が厳しくなる傾向がある。例えば屋内に設置されるＴＶなどは−１０℃〜４０℃程度の温度環境を想定して製造されることが一般的であるが、ダッシュボードに設置されるカーナビゲーション装置は−３０℃〜８０℃程度の温度環境を想定して製造されることが一般的である。例えば真夏の炎天下には、ダッシュボードの温度が８０℃に到達することもしばしば起きる。したがってカーナビゲーション装置には、発熱が大きくなる高スペックのＣＰＵおよびＧＰＵの搭載に制限がある。
【００１７】
またカーナビゲーション装置に限らず、コスト削減の観点から低スペックなＣＰＵ、ＧＰＵおよびメモリを搭載している組み込みシステムも多い。このような低スペックなハードウェア資源でプリフェッチせずにテクスチャを高速に描画するには効率的にテクスチャアトラスを作成することが求められる。
【００１８】
図２（ａ）−（ｂ）は、テクスチャアトラスの作成方法を示す図である。図２（ａ）は一般的な手法により作成されたテクスチャアトラスを示す。図２（ｂ）は本発明の実施の形態に係る手法により作成されたテクスチャアトラスを示す。本発明の実施の形態に係る手法ではテクスチャの分割を許容する。図２（ａ）と図２（ｂ）を比較すると分かるように後者のほうが、同じサイズのテクスチャアトラスに多くのテクスチャを格納でき、無駄な空き領域が少ないことが分かる。
【００１９】
図３は、本発明の実施の形態に係るカーナビゲーション装置１０００のハードウェア機能ブロック図である。カーナビゲーション装置１０００は、情報処理装置１００、外部記憶装置２００およびユーザインタフェース３００を備える。
【００２０】
情報処理装置１００は、ＣＰＵ１０ａ、ＧＰＵ１０ｂ、メインメモリ２０およびビデオメモリ３０を備える。ＣＰＵ１０ａ、ＧＰＵ１０ｂおよびメインメモリ２０は同一のバス４０にそれぞれ接続される。
【００２１】
ＣＰＵ１０ａはメインメモリ２０からプログラムを読み込み、そのプログラムにしたがい各種の処理を実行し、本カーナビゲーション装置１０００全体を統括的に制御する。ＧＰＵ１０ｂは、ＣＰＵ１０ａの処理量を低減するためＣＰＵ１０ａに代わり画像処理を実行する。例えば、ジオメトリ、レンダリング等を実行する。
【００２２】
メインメモリ２０はＲＯＭおよびＲＡＭを備え、各種プログラムおよびデータを格納する一次記憶装置である。ビデオメモリ３０はＶＲＡＭで構成され、テクスチャキャッシュ３１およびフレームバッファ３２を含む。なお図２ではＧＰＵ１０ｂとビデオメモリ３０を別のブロックで描いているが、ＧＰＵ１０ｂとビデオメモリ３０は１つのダイに混載されることが多い。
【００２３】
テクスチャキャッシュ３１は、描画すべきテクスチャを一時保持するためのバッファである。本実施の形態では、テクスチャキャッシュ３１は複数のテクスチャが統合されたテクスチャアトラスを一時保持する。フレームバッファ３２はＧＰＵ１０ｂによりレンダリングされた画像をフレーム単位で一時保持するバッファである。なおビデオメモリ３０には、ポリゴンの頂点データを一時保持するための頂点キャッシュが設けられてもよい。
【００２４】
外部記憶装置２００は、ハードディスクおよびフラッシュメモリの少なくとも一方を備える。また、リムーバブルメディアである光ディスク（例えば、DVD、Blu-ray Disc（登録商標））が装着される光ディスクドライブを備えてもよいし、メモリカードが挿入されるメモリカードスロットを備えてもよい。外部記憶装置２００は、各種プログラムおよびデータを格納する二次記憶装置である。外部記憶装置２００に記憶されるプログラムおよびデータは、メインメモリ２０に読み込まれて使用される。
【００２５】
ユーザインタフェース３００は、ユーザ操作を受け付け情報処理装置１００に入力するとともに、情報処理装置１００に生成された画像および音声をユーザに出力する。ユーザインタフェース３００は、ディスプレイ３１０およびタッチパネル３２０を備える。ディスプレイ３１０は情報処理装置１００に生成された画像を表示する。タッチパネル３２０はユーザによりタッチされた位置を示す位置信号を生成し、情報処理装置１００に出力する。なおディスプレイ３１０とタッチパネル３２０は一体型であってもよい。ディスプレイ３１０とタッチパネル３２０はユーザインタフェース３００の一例であり、ユーザインタフェース３００は様々な形態が可能である。
【００２６】
図４は、本発明の実施の形態に係る情報処理装置１００のソフトウェア機能ブロック図である。処理部１０はＣＰＵ１０ａまたはＧＰＵ１０ｂにより実行される処理機能を示す。処理部１０は、操作指示受付部１１、アプリケーション実行部１２、画面管理部１３、格納位置決定部１４、テクスチャ格納部１５、テクスチャ分割部１６およびテクスチャ描画部１７を備える。
【００２７】
メインメモリ２０には画像データ保持部２１、格納管理情報保持部２２およびテクスチャ管理情報保持部２３が構築される。画像データ保持部２１は、ポリゴンの頂点データおよびテクスチャを含む、コンピュータグラフィックス画像を生成するためのデータを保持する領域である。格納管理情報保持部２２は、テクスチャキャッシュ３１内のテクスチャ格納状態を示す格納管理情報を保持する領域である。テクスチャ管理情報保持部２３は、テクスチャキャッシュ３１に格納されたテクスチャの格納位置を示すテクスチャ管理情報を保持する領域である。
【００２８】
操作指示受付部１１は、タッチパネル３２０から出力される位置信号に応じてユーザの指示を解読する。アプリケーション実行部１２はユーザの指示に応じた機能を実行するためのアプリケーションプログラムをメインメモリ２０から読み出して実行する。画面管理部１３は、アプリケーション実行部１２により実行されるアプリケーションおよびタッチパネル３２０から出力される位置信号に応じて、次に遷移すべき画面を決定する。画面管理部１３は、遷移後の画面に必要な画像データをメインメモリ２０の画像データ保持部２１から読み出す。
【００２９】
この際、テクスチャ格納部１５は画像データ保持部２１から、遷移後の画面に必要な画像データのうち、テクスチャを順次読み出してテクスチャキャッシュ３１に格納する。テクスチャ分割部１６は、テクスチャキャッシュ３１内の格納状態に応じて、テクスチャ格納部１５によって格納されるべきテクスチャを分割することができる。
【００３０】
格納位置決定部１４は、格納管理情報保持部２２に保持される格納管理情報を参照して、テクスチャ格納部１５によって格納されるべきテクスチャの格納位置を決定する。テクスチャキャッシュ３１はテクスチャアトラスを格納するための二次元領域（以下、テクスチャアトラス領域という）を含む。格納位置決定部１４は、当該テクスチャアトラス領域の水平方向および垂直方向の一方を主走査方向および他方を副走査方向とし、原則として順次走査方式にしたがい各テクスチャの格納位置を決定する。
【００３１】
以下、本実施の形態では水平方向を主走査方向とし垂直方向を副走査方向とする。また画面の左上隅から右下隅に向けて、原則として飛び越しをせずに順次走査方式にしたがい各テクスチャの格納位置を決定する。
【００３２】
格納位置決定部１４は、格納されるべき対象テクスチャの格納位置を決定する際、対象テクスチャと主走査方向に隣接する隣接テクスチャとの接触状態を判定する。対象テクスチャの隣接テクスチャ側の辺に、隣接テクスチャと非接触の部分がある場合、格納位置決定部１４は対象テクスチャの格納位置を副走査方向に一単位移動させる。その状態で順次走査方式にしたがい対象テクスチャの次の格納候補位置を決定する。隣接テクスチャと非接触の部分がない場合、現在の格納候補位置を対象テクスチャの格納位置に最終決定する。なお後述するが、対象テクスチャがテクスチャアトラス領域をはみ出す場合、この限りでない。
【００３３】
次の格納候補位置でも対象テクスチャの隣接テクスチャ側の辺に、隣接テクスチャと非接触の部分がある場合、格納位置決定部１４は対象テクスチャの格納候補位置を副走査方向にさらに一単位移動させる。その状態で順次走査方式にしたがい対象テクスチャの次の格納候補位置を決定する。この処理を格納位置が最終決定されるまで繰り返す。
【００３４】
本実施の形態では格納位置決定部１４は対象テクスチャの左辺と、隣接テクスチャの右辺との接触状態を判定する。なお対象テクスチャの次の格納候補位置がテクスチャアトラス領域の左端である場合、この判定はスキップされる。対象テクスチャの左辺が隣接テクスチャの右辺と非接触の部分がある場合、格納位置決定部１４は対象テクスチャの格納候補位置を下方向に一単位移動させる。
【００３５】
格納位置決定部１４は、順次走査方式にしたがい対象テクスチャの格納位置を決定する際、対象テクスチャの一部が主走査方向にテクスチャアトラス領域をはみ出す場合、対象テクスチャの格納候補位置を副走査方向に一単位移動させる。また対象テクスチャの一部が副走査方向にはみ出す場合、対象テクスチャがはみ出さなくなるように対象テクスチャをテクスチャ分割部１６に分割させる。
【００３６】
本実施の形態では格納候補位置において対象テクスチャの一部がテクスチャアトラス領域の右側にはみ出す場合、格納位置決定部１４は対象テクスチャの格納候補位置を下方向に一単位移動させる。また格納候補位置において対象テクスチャの一部がテクスチャアトラス領域の下側にはみ出す場合、格納位置決定部１４は対象テクスチャをテクスチャ分割部１６に分割させる。
【００３７】
格納位置決定部１４は対象テクスチャの格納位置を最終決定すると、格納管理情報保持部２２内に保持される格納管理情報およびテクスチャ管理情報保持部２３に保持されるテクスチャ管理情報を更新する。
【００３８】
対象テクスチャが分割されてテクスチャキャッシュ３１に格納される場合、格納位置決定部１４は分割後のテクスチャ（以下、分割テクスチャと表記する）の配置座標および分割前のテクスチャのテクスチャＩＤをテクスチャ管理情報としてテクスチャ管理情報保持部２３に登録する。対象テクスチャが分割されずにテクスチャキャッシュ３１に格納される場合、格納位置決定部１４は、非分割のテクスチャの配置座標、およびそのテクスチャＩＤをテクスチャ管理情報としてテクスチャ管理情報保持部２３に登録する。
【００３９】
分割テクスチャおよび非分割のテクスチャが矩形形状で規定される場合、配置座標として頂点座標を登録することができる。さらに分割テクスチャおよび非分割のテクスチャが正方形または長方形の形状で規定される場合、左上頂点座標と幅、高さで登録できる。
【００４０】
図５（ａ）−（ｃ）は、本実施の形態に係るテクスチャ格納アルゴリズムを説明するための具体例１を示す図である。上述したように、テクスチャアトラス領域にテクスチャを左上から上優先して詰めていく。ただし、格納候補位置において対象テクスチャの左側が平らでない場合、平らになるまで格納候補位置を下にシフトする。平らであるとは、対象テクスチャの左辺と接する部分全体が直線であることをいう。なお、この直線は複数のテクスチャで形成されたものであってもよい。また格納候補位置がテクスチャアトラス領域の左端の場合、対象テクスチャの左側は平らである。
【００４１】
格納候補位置において対象テクスチャの左側に対象テクスチャより高さが低い隣接テクスチャが存在し対象テクスチャの左側が段差となる場合、対象テクスチャの左側が平らでないため、その格納候補位置はＮＧである。
【００４２】
図５（ａ）にて第１テクスチャｔ１がテクスチャアトラス領域の左上に格納される。図５（ｂ）にて第２テクスチャｔ２の最初の格納候補位置は第１テクスチャｔ１の右隣である。ただし第２テクスチャｔ２の高さが第１テクスチャｔ１の高さより高いため、第２テクスチャｔ２の左側が平らにならない。したがって最初の格納候補位置はＮＧである。図５（ｃ）にて第２テクスチャｔ２の次の格納候補位置は第１テクスチャｔ１の下である。この格納候補位置では第２テクスチャｔ２の左側が平らであるため、この格納候補位置はＯＫである。
【００４３】
図６（ａ）−（ｄ）は、本実施の形態に係るテクスチャ格納アルゴリズムを説明するための具体例２を示す図である。具体例１で説明したルールにしたがい対象テクスチャの格納候補位置を決定していくと対象テクスチャの下部がテクスチャアトラス領域を下方向にはみ出す場合がある。この場合、テクスチャアトラス領域をはみ出さないなよう対象テクスチャを水平方向に複数に分割する。その格納候補位置に格納されない残りの分割テクスチャは非分割のテクスチャと同様に扱い、テクスチャアトラス領域の空き領域に当該分割テクスチャを左上から上優先して詰めていく。
【００４４】
図６（ａ）にて、まず第１テクスチャｔ１がテクスチャアトラス領域の左上に格納される。第２テクスチャｔ２の高さが第１テクスチャｔ１の高さより高いため、第２テクスチャｔ２は第１テクスチャｔ１の右隣に格納されず第１テクスチャｔ１の下に格納される。第３テクスチャｔ３の左辺は第１テクスチャｔ１の右辺と接触できないため、最初の格納候補位置である第１テクスチャの右隣はＮＧである。
【００４５】
図６（ｂ）にて第３テクスチャｔ３の次の格納候補位置は第２テクスチャｔ２の右隣である。ただし第３テクスチャｔ３の高さが第２テクスチャｔ２の高さよりが高いため、第３テクスチャｔ３の左側が平らにならない。したがってこの格納候補位置もＮＧである。
【００４６】
図６（ｃ）にて第３テクスチャｔ３の次の格納候補位置は第２テクスチャｔ２の下である。この格納候補位置では第３テクスチャｔ３の下側がテクスチャアトラス領域からはみ出す。したがってこの格納候補位置にそのまま格納することはできない。
【００４７】
図６（ｄ）にて第３テクスチャｔ３は第１分割テクスチャｔ３ａと第２分割テクスチャｔ３ｂに分割される。第１分割テクスチャｔ３ａは第２テクスチャｔ２の下に格納される。第２分割テクスチャｔ３ｂは、その最初の格納候補位置である第１テクスチャｔ１の右隣に格納される。
【００４８】
ここまで対象テクスチャの格納候補位置の検索を１ピクセル単位で実行する例を説明したが、以下、ブロック単位で実行する例を説明する。ブロック単位で実行することにより検索時間を短縮できる。この例ではテクスチャアトラス領域は主走査方向を長手方向および副走査方向を短手方向とするスライス状に、複数のブロックに分割される。格納位置決定部１４は、順走査方式にしたがい対象テクスチャの格納候補位置を副走査方向に移動させる際、ブロック単位で移動させる。
【００４９】
図７は、ブロック分割されたテクスチャアトラス領域を説明するための図である。図７に示すテクスチャアトラス領域は水平方向に８分割されており、本実施の形態ではそれぞれの領域をブロックと呼ぶ。ブロックの高さＢＨは設計者が設定変更可能なパラメータである。例えば、ブロックの高さＢＨには、画像データ保持部２１に保持されるテクスチャのうち高さが最も低いテクスチャの高さを用いることができる。
【００５０】
ブロックの高さＢＨを大きくするほど格納位置の検索時間は短縮するがテクスチャアトラス領域内に隙間ができやすくなる。一方、この高さＢＨを小さくするほど格納位置の検索時間は長くなるがテクスチャアトラス領域内に隙間ができにくくなる。即ち処理時間とテクスチャアトラス領域の格納効率のトレードオフ関係となる。
【００５１】
テクスチャは単一または連続する複数のブロックに左上から上優先で格納されるため、各ブロックは左側から徐々に空き領域が狭まる。本実施の形態では各ブロックのテクスチャが存在しない矩形領域（格納されたテクスチャの下側の空き領域を除く）を残り領域と呼び、その幅を残り幅ＲＷと呼ぶ。各ブロックの残り幅ＲＷは上のブロックから順に、格納管理情報保持部２２に定義される配列に格納され管理される。
【００５２】
テクスチャを分割してテクスチャアトラス領域に格納する場合、各分割テクスチャの高さがブロックの高さＢＨの倍数になる位置でテクスチャは分割される。
【００５３】
テクスチャの格納位置を検索する際、テクスチャアトラス領域内の上のブロックから順番に格納可能か否か判定する。判定対象のブロックに格納できない場合、テクスチャの左側面の段差が存在する位置の次のブロック以降を判定対象とする。一番下のブロックで格納不能と判定された場合、テクスチャを分割する。格納可能であると判定された場合、その時点で判定を終了する。格納されたテクスチャ（分割テクスチャを含む）の位置は、テクスチャの左上頂点の座標（図７では点で描かれている）、並びにテクスチャの幅および高さによって定義され、テクスチャ管理情報保持部２３に登録される。なお、テクスチャの高さがブロックの高さＢＨ以下の場合、テクスチャの左側が平らでなくても格納できるとする。
【００５４】
図７に示す例では、まず第１テクスチャｔ１がブロックＢ０の左端に格納される。次に第２テクスチャｔ２が第１テクスチャｔ１の右隣に格納される。次に第３テクスチャｔ３は第２テクスチャｔ２の右隣に格納できないため、第１テクスチャｔ１の下に格納される。この例ではテクスチャの上辺がブロックの上辺に接するよう格納されるため、第３テクスチャｔ３の左上頂点がブロックＢ３の左上隅に位置するように格納される。
【００５５】
第４テクスチャｔ４は第１テクスチャｔ１、第２テクスチャｔ２および第３テクスチャｔ３の右隣に格納できないため、第３テクスチャｔ３の下のブロックＢ６が格納位置候補となる。しかしながらそのままでは格納できないため分割される。第４テクスチャｔ４はブロックの高さＢＨの２倍の位置で分割される。第１分割テクスチャｔ４ａはブロックＢ６、Ｂ７の左端に格納される。残りの第２分割テクスチャｔ４ｂは第３テクスチャｔ３の右隣に格納される。
【００５６】
図４に戻る。テクスチャ描画部１７は、テクスチャ管理情報保持部２３に保持されるテクスチャ管理情報を参照して、テクスチャキャッシュ３１に格納されたテクスチャをポリゴンにマッピングしてフレームバッファ３２に書き込む。フレームバッファ３２に書き込まれた画像データは、所定の表示タイミングでディスプレイ３１０に出力される。
【００５７】
以下、本発明の実施の形態に係る情報処理装置１００の動作について説明する。まずテクスチャキャッシュ３１へのテクスチャ格納処理について説明し、次いでテクスチャキャッシュ３１に格納されたテクスチャの描画処理について説明する。
【００５８】
図８は、テクスチャ格納処理の全体動作を示すフローチャートである。テクスチャ格納処理は、格納位置決定処理（Ｓ１０）、狭義のテクスチャ格納処理（Ｓ３０）および管理情報更新処理（Ｓ４０）の３段階に分類される。
【００５９】
図９は、格納位置決定処理を示すフローチャートである。まず、格納位置決定部１４は対象テクスチャのテクスチャＩＤ、幅、高さを取得する（Ｓ１１）。 格納位置決定部１４は格納管理情報保持部２２から格納管理情報を取得する（Ｓ１２）。格納管理情報にはテクスチャアトラス領域を構成する複数のブロックの残り幅ＲＷの配列データが含まれている。
【００６０】
格納位置決定部１４は格納管理情報を参照し、テクスチャアトラス領域に対象テクスチャを分割せずに格納可能な領域が存在するか否か判定する（Ｓ１３）。存在する場合（Ｓ１３のＹ）、格納位置決定部１４は格納可能な領域のうち、上述のルールにしたがい対象テクスチャの格納位置を決定する（Ｓ１４）。格納位置決定部１４はテクスチャＩＤとその格納位置の座標をテクスチャ管理情報保持部２３に登録する（Ｓ１５）。なお対象テクスチャの幅および高さも登録してもよい。格納位置決定部１４はパラメータｎに１を代入し（Ｓ１６）、格納位置決定処理を終了する。
【００６１】
パラメータｎ（０以上の整数）はテクスチャの分割数を示すパラメータである。パラメータｎの値は次のように定義される。０はテクスチャアトラス領域に格納不可、１は分割なし、２以上は分割テクスチャの数をそれぞれ示す。
【００６２】
ステップＳ１３にて分割せずに対象テクスチャを格納できない場合（Ｓ１３のＮ）、対象テクスチャをブロックの高さＢＨで短冊状に区分し、その分割数をパラメータｊ（ｊは２以上の整数）に代入する（Ｓ１７）。格納位置決定部１４は初期値設定としてパラメータｎに０を代入し、パラメータｉに０を代入する（Ｓ１８）。パラメータｉ（ｉは０以上ｊ未満の整数）は短冊のインデックスとして使用される。
【００６３】
格納位置決定部１４は各ブロックの残り幅ＲＷを参照して、短冊（ｉ）がいずれかのブロックに格納可能か否か判定する（Ｓ１９）。格納可能な場合（Ｓ１９のＹ）、格納位置決定部１４は格納可能な領域のうち、上述のルールにしたがい短冊（ｉ）の格納位置を決定する（Ｓ２０）。格納位置決定部１４はオリジナルテクスチャのテクスチャＩＤと、その格納位置の座標をテクスチャ管理情報保持部２３に登録する（Ｓ２１）。なお短冊の幅および高さも登録してもよい。なお複数の短冊を、幅が揃った状態で連続して複数のブロックに格納できる場合、その複数の短冊の格納位置をまとめて登録してもよい。例えば一番上の短冊の格納位置を示す座標と連続する短冊数を登録してもよい。格納位置決定部１４はパラメータｎおよびパラメータｉをそれぞれインクリメントする（Ｓ２２）。
【００６４】
格納位置決定部１４はパラメータｊとパラメータｉを比較する（Ｓ２３）。両者が一致しない場合（Ｓ２３のＮ）、ステップＳ１９に遷移し、一致する場合（Ｓ２３のＹ）、格納位置決定処理を終了する。
【００６５】
ステップＳ１９にて短冊（ｉ）がいずれのブロックにも格納できない場合（Ｓ１９のＮ）、格納位置決定部１４は、これまで登録された対象テクスチャのテクスチャＩＤおよびその座標をテクスチャ管理情報保持部２３から破棄する（Ｓ２４）。格納位置決定部１４はパラメータｎに０を代入し（Ｓ２５）、格納位置決定処理を終了する。対象テクスチャが区分された複数の短冊の一つでもテクスチャアトラス領域に格納できない場合、対象テクスチャ全体が格納不可となる。
【００６６】
図１０は、狭義のテクスチャ格納処理を示すフローチャートである。まず、テクスチャ格納部１５はパラメータｎを参照する（Ｓ３１）。パラメータｎが１の場合（Ｓ３１のＹ）、テクスチャ格納部１５は画像データ保持部２１から読み出された対象テクスチャをテクスチャ管理情報保持部２３に登録された格納位置に格納する（Ｓ３２）。当該格納位置はテクスチャＩＤをキーとして検索される。
【００６７】
ステップＳ３１にてパラメータｎが１以外の場合（Ｓ３１のＮ）、テクスチャ分割部１６は画像データ保持部２１から読み出された対象テクスチャをブロックの高さＢＨ単位でｎ分割する（Ｓ３３）。テクスチャ格納部１５は分割された各短冊をテクスチャ管理情報保持部２３に登録された各格納位置に格納する（Ｓ３４）。
【００６８】
図１１は、格納管理情報更新処理を示すフローチャートである。格納位置決定部１４は対象テクスチャまたは各短冊の格納位置を決定すると、格納されるブロックの残り幅ＲＷから対象テクスチャの幅を減算して当該ブロックの残り幅ＲＷを更新する（Ｓ４１）。
【００６９】
図１２は、テクスチャの描画処理を示すフローチャートである。テクスチャ描画部１７は描画すべき対象テクスチャのテクスチャＩＤをキーとして、テクスチャ管理情報保持部２３から対象テクスチャのテクスチャ管理情報を取得する（Ｓ５０）。テクスチャ描画部１７は当該テクスチャ管理情報を参照してテクスチャキャッシュ３１から対象テクスチャを読み出す（Ｓ５１）。対象テクスチャが分割されて格納されている場合、各短冊を読み出してオリジナルテクスチャを復元する。テクスチャ描画部１７は読み出した対象テクスチャをフレームバッファ３２の指定位置に出力する。
【００７０】
以上説明したように本実施の形態によれば、テクスチャアトラスを作成する際、テクスチャの分割を許容することにより、テクスチャアトラスを低負荷で高速に作成できる。テクスチャアトラスが作成されるテクスチャキャッシュに、新たなテクスチャが格納できなくなると、格納されているテクスチャを全て描画した後、テクスチャキャッシュ内のテクスチャアトラスを破棄して、新たなテクスチャを再生成する必要がある。本実施の形態に係るテクスチャの分割を許容するアルゴリズムでは、従来の分割を許容しないアルゴリズムと比較してテクスチャキャッシュに新たなテクスチャが格納できなくなるまでの時間が長くなる。したがって前者は後者よりテクスチャアトラスの破棄および再作成の回数を減らすことができ、前者は後者よりテクスチャアトラスを低負荷で高速に作成できる。
【００７１】
またテクスチャアトラス領域を複数のブロックに分割し、ブロック単位でテクスチャまたは分割テクスチャの格納位置を探索することにより、格納位置を決定するまでの時間を短縮できる。したがってテクスチャアトラス領域を複数のブロックに分割することにより、テクスチャアトラスをさらに低負荷で高速に作成できる。
【００７２】
本実施の形態に係るテクスチャアトラスの作成および描画方法は、カーナビゲーションシステムのような低スペックな組み込みシステムに適している。特にカーナビゲーションシステムでは、シームレスな画面遷移が望まれる、ハードウェア資源（例えばＣＰＵ、ＧＰＵ、メモリ）のスペックに制約がある、次にどの機能（例えばメニュー、ナビ、オーディオ、デジタルＴＶ、路車間通信）の画面を表示するのか予測が困難、画面意匠が多くメモリ上に全てのテクスチャアトラスを格納するのが困難、等の性質から、テクスチャをリアルタイムに効率よく読み込む必要性が高い。本実施の形態に係るテクスチャアトラスの作成および描画方法をカーナビゲーションシステムに適用すれば、テクスチャアトラスをリアルタイムで高速に作成可能となる。したがって高スペックなハードウェア資源を用いずにシームレスな画面遷移が実現可能なカーナビゲーションシステムを構築できる。
【００７３】
以上、本発明をいくつかの実施の形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７４】
例えば上述の実施の形態ではテクスチャを水平方向に分割したが、垂直方向に分割してもよいし、両方向に分割できるようにしてもよい。またブロックの高さＢＨをアプリケーションごとに、そのアプリケーションで使用されるテクスチャの特性に合わせて切り替え可能にしてもよい。例えばアプリケーションごとにそのアプリケーションで使用されるテクスチャの最小の高さに、切り替えてもよい。
【符号の説明】
【００７５】
１０００  カーナビゲーション装置、  １００  情報処理装置、  １０  処理部、  １０ａ  ＣＰＵ、  １０ｂ  ＧＰＵ、  １１  操作指示受付部、  １２  アプリケーション実行部、  １３  画面管理部、  １４  格納位置決定部、  １５  テクスチャ格納部、  １６  テクスチャ分割部、  １７  テクスチャ描画部、  ２０  メインメモリ、  ２１  画像データ保持部、  ２２  格納管理情報保持部、  ２３  テクスチャ管理情報保持部、  ３０  ビデオメモリ、  ３１  テクスチャキャッシュ、  ３２  フレームバッファ、  ４０  バス、  ２００  外部記憶装置、  ３００  ユーザインタフェース、  ３１０  ディスプレイ、  ３２０  タッチパネル。
【図１】
2013206094.tif 000003
【図２】
2013206094.tif 000004
【図３】
2013206094.tif 000005
【図４】
2013206094.tif 000006
【図５】
2013206094.tif 000007
【図６】
2013206094.tif 000008
【図７】
2013206094.tif 000009
【図８】
2013206094.tif 000010
【図９】
2013206094.tif 000011
【図１０】
2013206094.tif 000012
【図１１】
2013206094.tif 000013
【図１２】
2013206094.tif 000014