(57)【特許請求の範囲】
【請求項１】
処理ユニットと、ハードウェアグラフィックスユニットと、画像を表示するためのディスプレイデバイスとを備えるコンピュータシステムにおいて、
前記ハードウェアグラフィックスユニットは、アプリケーションプログラムインターフェイスを介して前記処理ユニットから受け取った関数呼出しに応答でき、前記ディスプレイデバイスが複数のピクセルを有し、前記複数のピクセルの少なくともいくつかは、それぞれ異なる色の複数のピクセルサブコンポーネントを含み、前記ハードウェアグラフィックスユニットを使用して、前記ディスプレイデバイスに表示した画像内にサブコンポーネント指向キャラクタをレンダリングするための方法であって、
所与のピクセルに対する各ピクセルサブコンポーネントを生成するために、サブコンポーネント指向キャラクタのビットマップ表現を生成する動作と、
ここで、前記サブコンポーネント指向キャラクタのビットマップ表現は、所与のピクセルを構成する前記各ピクセルサブコンポーネントに対する１つの輝度強度値および１つのトランスペアレインシ値を含み、
前記アプリケーションプログラムインターフェイスを使用して、前記ハードウェアグラフィックスユニットに対してレンダリングのためのシーケンスの１つまたは複数の関数呼出しをすることにより、前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする動作と
を具え、
ここで、前記レンダリングする動作は、前記ビットマップ表現のサブコンポーネント指向キャラクタを処理する動作を含み、該処理する動作は、各ピクセルサブコンポーネントを単一の輝度強度ソースとして取扱うのではなく、各ピクセルを単一の輝度強度ソースとして取扱う動作を含み、
該取扱う動作は、
前記各ピクセルサブコンポーネントに対する前記輝度強度値を、ピクセルに対する前記トランスペアレインシ値に割当てる動作と、
ここで、該トランスペアレインシ値は、複数回のオーバースケールによって前記複数のピクセルを１組とする組数が当該オーバースケールの回数分だけ増加されたピクセル列のみから構成され、
前記トランスペアレインシ値に割当てられた各ピクセルを再割当てする動作と、
ここで、該トランスペアレインシ値に割当てられた所与のピクセルを再割当てするとき、当該所与のピクセルに対して前記ピクセル列の前後に隣接するピクセルを用いて再割当てが行われ、
前記トランスペアレインシ値に再割当てられた各色のピクセル間でレンダリングのパスをそれぞれ行うことによって、各色毎のフレームバッファを生成する動作と
ここで、所与の色のレンダリングのパスは、前記トランスペアレインシ値に再割当てられた当該所与の色に対応した全てのピクセルに対してレンダリングを行うことによって、当該所与の色のフレームバッファを生成し、
を含むことを特徴とする方法。
【請求項２】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記動作は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景と前記サブコンポーネント指向キャラクタをブレンディングする動作を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをブレンディングする前記動作は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景画像と前記サブコンポーネント指向キャラクタをブレンディングする動作を含むことを特徴とする請求項２記載の方法。
【請求項４】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記動作は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景上で前記サブコンポーネント指向キャラクタを回転する動作を含むことを特徴とする請求項１記載の方法。
【請求項５】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記動作は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景上で前記サブコンポーネント指向キャラクタをスケーリングする動作を含むことを特徴とする請求項１記載の方法。
【請求項６】
請求項１ないし５のいずれかに記載の方法を実行するためのコンピュータ読取り可能な命令を有するコンピュータプログラム。
【請求項７】
処理ユニットと、ハードウェアグラフィックスユニットと、画像を表示するためのディスプレイデバイスとを備えるコンピュータシステムにおいて、
前記ハードウェアグラフィックスユニットは、アプリケーションプログラムインターフェイスを介して前記処理ユニットから受け取った関数呼出しに応答でき、前記ディスプレイデバイスが複数のピクセルを有し、前記複数のピクセルの少なくともいくつかは、それぞれ異なる色の複数のピクセルサブコンポーネントを含み、前記ハードウェアグラフィックスユニットを使用して、前記ディスプレイデバイスに表示した画像内にサブコンポーネント指向キャラクタをレンダリングするための装置であって、
所与のピクセルに対する各ピクセルサブコンポーネントを生成するために、サブコンポーネント指向キャラクタのビットマップ表現を生成する手段と、
ここで、前記サブコンポーネント指向キャラクタのビットマップ表現は、所与のピクセルを構成する前記各ピクセルサブコンポーネントに対する１つの輝度強度値および１つのトランスペアレインシ値を含み、
前記アプリケーションプログラムインターフェイスを使用して、前記ハードウェアグラフィックスユニットに対してレンダリングのためのシーケンスの１つまたは複数の関数呼出しをすることにより、前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする手段と
を具え、
ここで、前記レンダリングする手段は、前記ビットマップ表現のサブコンポーネント指向キャラクタを処理する手段を含み、該処理する手段は、各ピクセルサブコンポーネントを単一の輝度強度ソースとして取扱うのではなく、各ピクセルを単一の輝度強度ソースとして取扱う手段を含み、
該取扱う手段は、
前記各ピクセルサブコンポーネントに対する前記輝度強度値を、ピクセルに対する前記トランスペアレインシ値に割当てる手段と、
ここで、該トランスペアレインシ値は、複数回のオーバースケールによって前記複数のピクセルを１組とする組数が当該オーバースケールの回数分だけ増加されたピクセル列のみから構成され、
前記トランスペアレインシ値に割当てられた各ピクセルを再割当てする手段と、
ここで、該トランスペアレインシ値に割当てられた所与のピクセルを再割当てするとき、当該所与のピクセルに対して前記ピクセル列の前後に隣接するピクセルを用いて再割当てが行われ、
前記トランスペアレインシ値に再割当てられた各色のピクセル間でレンダリングのパスをそれぞれ行うことによって、各色毎のフレームバッファを生成する手段と
ここで、所与の色のレンダリングのパスは、前記トランスペアレインシ値に再割当てられた当該所与の色に対応した全てのピクセルに対してレンダリングを行うことによって、当該所与の色のフレームバッファを生成し、
を含むことを特徴とする装置。
【請求項８】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記手段は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景と前記サブコンポーネント指向キャラクタをブレンディングする手段を含むことを特徴とする請求項７記載の装置。
【請求項９】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをブレンディングする前記手段は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景画像と前記サブコンポーネント指向キャラクタをブレンディングする手段を含むことを特徴とする請求項８記載の装置。
【請求項１０】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記手段は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景上で前記サブコンポーネント指向キャラクタを回転する手段を含むことを特徴とする請求項７記載の装置。
【請求項１１】
前記ディスプレイデバイス上に前記サブコンポーネント指向キャラクタをレンダリングする前記手段は、
前記ハードウェアグラフィックスユニットに対して前記１つ又は複数の関数呼出しをすることにより、背景上で前記サブコンポーネント指向キャラクタをスケーリングする手段を含むことを特徴とする請求項７記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像を表示するための方法およびシステムに関し、より詳細には、それぞれのピクセルサブコンポーネントを独立した輝度強度ソースとして取り扱う場合に、ハードウェアグラフィックスユニットを使用して、キャラクタを効率的にレンダリングし、アニメートするための方法およびシステムに関する。
【０００２】
【従来の技術】
ディスプレイデバイスは、一般に、人間である視聴者に対して画像をレンダリングするために使用される。人間である視聴者に対して画像を有効にレンダリングすることは、テレビおよび多くのタイプの計算技術の基本である。したがって、ディスプレイデバイスが、テレビおよび多くの計算システムに関連する。
【０００３】
画像は、ディスプレイデバイス上にグリッドパターンで分布している何千ものピクセルを使用して視聴者にレンダリングされる。所望の画像を形成するために、それぞれのピクセルの色および／または強度値を調整できる。典型的なディスプレイデバイスにおいては、単一のピクセルから放たれているとユーザが知覚する色が、実際には、変位した多くの色成分によって表される。たとえば、ＲＧＢディスプレイデバイスでは、赤色だけを放つ１つの光源がある。別の個別の光源は、緑色だけを放つ。別の個別の光源は、青色だけを放つ。これらの光源を、本明細書においては、ピクセルの赤、緑、青の色成分と呼ぶ。
【０００４】
所与のピクセルに対して、これらの色成分は空間的にオフセットされる。しかし、空間オフセットは十分に小さいため、典型的な人間のユーザはピクセルの個々の色成分を識別することができない。むしろ、色成分からの光が一緒に融合しあって、そのピクセルが単一の色を有すると知覚される。この単一のピクセルの色は、そのピクセルの赤、緑、青の色成分の強度を調節することによって調整され、その結果、ピクセルが、さまざまに知覚される色を得ることができる。白は、赤、緑、青の色成分内の最大強度を有することによって得られる。逆に、黒は、赤、緑、青の色成分内の最小強度を有することによって得られる。
【０００５】
典型的なテレビのディスプレイおよびコンピュータのモニタでは、空間的に変位した多くのアドレス可能なコンポーネントを有するそれぞれのピクセルに依存する。つまり、これらのコンポーネントは、赤、緑、青の色成分か、それ以外の成分かに依存する。液晶表示（ＬＣＤ）ディスプレイは、表示されている画像のそれぞれのピクセルを表す、異なるアドレス可能な多くの要素、本明細書ではピクセルサブ要素またはピクセルサブコンポーネントと呼ぶ要素、を利用するディスプレイデバイスの一例である。たとえば、図１は、ハウジング１０１、ディスクドライブ１０２、キーボード１０３、ディスプレイ１０４を備える、従来のポータブルコンピュータ１００を示す図である。ディスプレイ１０４は、たとえば、ＬＣＤディスプレイである。
【０００６】
通常、カラーＬＣＤディスプレイ上のそれぞれのピクセルは、単一のピクセル要素によって表され、通常、赤のピクセルサブコンポーネント、緑のピクセルサブコンポーネント、青のピクセルサブコンポーネントなどの、正方形でない３つのピクセルサブコンポーネントを有する。したがって、１組のＲＧＢピクセルサブコンポーネントが、一緒になって、単一のピクセル要素を構成する。従来のＬＣＤディスプレイは、一般にディスプレイに沿ってストライプを形成するよう配置されている、１列のＲＧＢピクセルサブコンポーネントを有する。ＲＧＢストライプは、通常、ディスプレイの長さ全体にわたって１方向に走る。その結果生じたＲＧＢストライプを、時に、「ＲＧＢストライピング」と呼ぶ。コンピュータアプリケーション用に使用される一般的なＬＣＤモニタは、高さより幅の方が長く、垂直方向に走るＲＧＢストライプを有する傾向がある。
【０００７】
図２Ａは、ディスプレイ１０４上に表される複数の行（Ｒｌ−Ｒ１２）および列（Ｃｌ−Ｃ１６）を有する、周知のＬＣＤ画面２００を示す図である。それぞれの行／列の交点が、１つのピクセル要素を表す、正方形（または高さと幅がほぼ同じである長方形）を形成する。図２Ｂは、周知のディスプレイ２００の左上の部分を、より詳細に示す図である。
【０００８】
図２Ｂには、それぞれのピクセル要素（たとえば、［Ｒ２、Ｃ１］ピクセル要素）が、互いに異なる３つのサブコンポーネント、赤のサブコンポーネント２０６、緑のサブコンポーネント２０７、青のサブコンポーネント２０８をどのように構成するかが示してある。周知のピクセルサブコンポーネント２０６、２０７、２０８のそれぞれが、ピクセルの幅の約３分の１であるが、高さは、ピクセルの高さと同じである。図２Ａおよび図２Ｂに示すように、ＲＧＢピクセルサブコンポーネント２０６、２０７、２０８の、１つの周知の配置では、ディスプレイ２００に、見たところ垂直のカラーストライプらしきものが形成される。したがって、図２Ａおよび２Ｂに示した周知の方式での、１／３の幅のカラーサブコンポーネント２０６、２０７、２０８の配置は、時に、「垂直ストライピング」と呼ばれる。例示目的で、図２Ａには、１２行および１６列のみが示してあるが、一般的な列ｘ行の比率には、たとえば、６４０×４８０、８００×６００、ｌ０２４×７６８が含まれる。
【０００９】
垂直ストライピングに加えて、ＬＣＤが、たとえば、カムコーダビューファインダに共通のジグザグやデルタパターンを含む、いくつかの追加パターン内に、またはＲＧＢピクセルサブコンポーネントが、それぞれ、ピクセルの高さ全体の３分の１を有し、ピクセルと同じ幅を有する水平ストライピング内に配置されたピクセルサブコンポーネントとともに製作される。本発明の特徴は、このようなピクセルサブコンポーネント配置とともに使用できることである。しかし、ＲＧＢ垂直ストライピング構成の方がより一般的であるため、本発明による実施形態は、ＲＧＢ垂直ストライプのディスプレイを使用した状況下で説明する。
【００１０】
従来、１つのピクセル要素に対するピクセルサブコンポーネントのそれぞれの組が、単一のピクセルユニットとして取り扱われている。したがって、周知のシステムでは、ピクセル要素のすべてのピクセルサブコンポーネントに対する光度値が、画像の同じ部分から生成される。たとえば、図２Ｃに示されたグリッド２２０によって表される画像を考える。図２Ｃでは、それぞれの正方形が、グリッド２２０の対応する正方形の、赤、緑、青のピクセルサブコンポーネントを含む、単一のピクセル要素によって表されるべき画像の区域を表す。
【００１１】
図２Ｃでは、斜線を施した円が、光度値が生成される単一の画像サンプルを表すために用いられる。画像２２０の単一のサンプル２２２が、赤、緑、青のピクセルサブコンポーネント２３２、２３３、２３４のそれぞれに対する光度値を生成するために、周知のシステムにおいてどのように使用されているかに留意されたい。したがって、周知のシステムにおいては、ＲＧＢピクセルサブコンポーネントは、総じて、１つのグループとして使用されて、表すべき画像の単一のサンプルに対応する単色のピクセルを生成する。
【００１２】
それぞれのピクセルサブコンポーネントグループからの光が、共に有効に合わさって、その色相、彩度、強度が、３つのピクセルサブコンポーネントのそれぞれの値に依存する、単色の効果を作り出す。たとえば、それぞれのピクセルサブコンポーネントが、０と２５５の間の潜在強度を有する。３つのピクセルサブコンポーネントのすべてに２５５の強度が与えられた場合は、眼は、そのピクセルを白と知覚する。しかし３つのピクセルサブコンポーネントのすべてに０の値が与えられた場合は、眼は黒のピクセルと知覚する。それぞれのピクセルサブコンポーネントの各強度を変えることにより、これらの両極端の間で何百万もの色を生成することが可能である。
【００１３】
単一のサンプルが、ピクセルの幅のそれぞれの１／３である、３つからなるピクセルサブコンポーネントにマップされる場合、これらの要素の中心がサンプルの中心から１／３の所にあるため、左および右のピクセルサブコンポーネントの空間変位が生じる。たとえば、表すべき画像が、ゼロに等しい緑と青のコンポーネントを有する赤の立方体であると考える。サンプルと緑の画像サブコンポーネント間の変位の結果、図２Ａに示したタイプのＬＣＤディスプレイ上に表示された場合、ディスプレイ上の立方体の明らかな位置は、ピクセルの３分の１、実際の位置から左にシフトする。同様に、青の立方体は、ピクセルの３分の１、右に変位したように見える。したがって、ＬＣＤ画面とともに使用される従来の画像作成技術では、望ましくない画像変位エラーが生じる場合がある。
【００１４】
テキストキャラクタは、７２または９６ドット（ピクセル）／インチ（ｄｐｉ）の、所与の典型的なフラットパネルディスプレイの解像度を正確に表示することが特に難しい、１つのタイプの画像である。このようなディスプレイの解像度は、ほとんどのプリンタによってサポートされている６００ｄｐｉ、および本や雑誌などの市販されている印刷されたテキストのほとんどで見られるさらに高い解像度よりはるかに低い。したがって、画像解像度がピクセル解像度に限定されている場合、テキストキャラクタなどの、より小さいビジュアルオブジェクトが、粗く見えることがある。
【００１５】
実際、従来は、画像解像度が必然的にピクセル解像度に限定されると言う考え方であった。しかし、解像度をピクセルサブコンポーネントの解像度に改良するための技術は、２００１年２月１３日に出願されたＷｉｌｌｉａｍ  Ｈｉｌｌらの「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｄｉｓｐｌａｙｉｎｇ  Ｉｍａｇｅｓ  Ｓｕｃｈ  Ａｓ  Ｔｅｘｔ」という名称の米国特許出願に記述されている（例えば、特許文献１参照。以下、「Ｈｉｌｌらによる特許」と呼ぶ）。Ｈｉｌｌらによる特許に記述されている、少なくともいくつかの技術を組み込んだディスプレイ技術を、しばしば、ＣＬＥＡＲＴＹＰＥ（登録商標）と呼ぶが、この用語は、マイクロソフト社（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）の登録商標である。
【００１６】
Ｈｉｌｌらによる特許は、それぞれのピクセルサブコンポーネントを個別の独立した光度ソースとして取り扱う技術について記述している。これは、所与のピクセルに対する１組のＲＧＢピクセルサブコンポーネントを単一の光度ソースとして取り扱う、従来の技術と対称をなす。
【００１７】
言い換えれば、Ｈｉｌｌらによる特許は、それぞれの画像サンプルを使用して、単一のピクセルサブコンポーネントに対する輝度強度値を生成することについて記述している。これは、単一の画像サンプルを使用して、所与のピクセルに対するすべてのピクセルサブコンポーネント値を生成する従来の技術と対称をなす。したがって、Ｈｉｌｌらによる特許に記述されている技術により、ＲＧＢ垂直ストライピングを有するディスプレイデバイスが、水平ピクセル解像度の最大３倍の有効水平解像度を有することができるようになる。
【００１８】
図３は、Ｈｉｌｌらによる特許に記述されている技術を使用して、ディスプレイ１０４上にテキスト画像をレンダリングし、ラスタ化するために、コンピュータ１００によって実施できる、一般的な機能の流れを示す。説明を簡単にするために、コンピュータ１００上を動作しているアプリケーションは、所与のフォントおよびポイント数を有する文字ｉが、ディスプレイ１０４上にレンダリングされ、ラスタ化されるよう、コンピュータのオペレーティングシステムに指示すると想定する。「機能の流れ」という見出しの付いた図３の左の列に、この技術を使用して、テキストキャラクタをレンダリングするために実施される、一般的な機能が示してある。「例」という見だしの付いた図３の右の列に、左に対応する機能が実施された後のキャラクタｉの状態が表してある。
【００１９】
プロセスは、キャラクタの形式を記述する、キャラクタ記述３０１から開始する。これは、ベクトルグラフィックス、線、点、曲線を使用することによって達成でき、そこから、キャラクタの高解像度のディジタル表示が導出できる。典型的なオペレーティングシステムが、それぞれのフォントのそれぞれのキャラクタに対応する、いくらかの異なるキャラクタ記述を有する。要素３１１が、文字ｉに対するキャラクタ記述のビジュアル表示を示す。テキスト情報に加えて、オペレーティングシステムもまた、現在表示されている画像のための背景色およびレイアウト情報と、レンダリング中にテキストキャラクタに適用されるべきブラシカラーおよびトランスペアレインシ情報へのアクセスを有する。
【００２０】
このキャラクタおよびディスプレイ情報を使用して、オペレーションは、正方形でないスケーリングが、それぞれのピクセル要素内に含まれるピクセルサブコンポーネントの方向および／または数の機能として実行される、スケーリング３０２に進む。具体的には、キャラクタ記述内に記述されたキャラクタの垂直方向が、アプリケーションによって特定されるポイント数に対する高さ要求仕様に合うようにスケールされる。しかし、水平方向は、垂直方向の３倍のレートでスケールされる。このことにより、後続の画像処理オペレーションは、垂直にストライプのあるディスプレイ内の独立した光度ソースとして個々のピクセルサブコンポーネントを使用することによって得られる、より高い水平度の解像度を活用できるようになる。
【００２１】
最も簡単な場合においては、水平方向のスケーリングは、所与のピクセル内のピクセルサブコンポーネントの数に関係する相対レートである。ＲＧＢ垂直ストライピングディスプレイでは、所与のピクセル内に３つのピクセルサブコンポーネントがある。したがって、最も簡単な場合においては、水平方向のスケーリングは、垂直方向のスケーリングのレートの約３倍のレートで生じる。このスケーリングは、適宜、キャラクタ記述を操作することによって生じる。要素３１２は、スケールしたキャラクタ記述によって表されたキャラクタの状態を示す。キャラクタの高さが同じままの、例示した場合では、文字Ｉは、スケーリング中に約３だけ水平に伸張する。
【００２２】
スケーリング３０２の後、オペレーションが、ヒンティング３０３に進む。用語「グリッドフィッティング」が、時に、ヒンティングプロセスを記述するのに使用される。ヒンティングは、グリッド内のスケールしたキャラクタの位置合せを伴う。また、画像がグリッドの形状に、よりよく一致するように画像アウトラインを歪ませることを必要とする。グリッドは、ディスプレイデバイスのピクセル要素の物理サイズに応じて決定される。ヒンティング中にピクセルサブコンポーネント境界を考慮に入れることのできない以前の技術とは異なり、ヒンティング３０３は、ピクセルサブコンポーネント境界を、それに沿ってキャラクタが位置合せできかつされるべき境界、あるいはそれに対してキャラクタのアウトラインが調整されるべき境界として取り扱う。
【００２３】
ヒンティングプロセスは、使用可能なピクセルサブコンポーネントを使用して、キャラクタの正確なディスプレイを最適化することを意図した方式で、ピクセルおよびピクセルサブコンポーネント境界に沿ってまたはその中で、グリッド内のキャラクタのスケールした表示を位置合せすることを伴う。多くの場合、これは、キャラクタステムの左の縁を左ピクセルまたはサブピクセルコンポーネント境界と位置合せすることと、ピクセルまたはピクセルサブコンポーネント境界に沿ってキャラクタのベースの下端を位置合せすることとを伴う。
【００２４】
実験結果から、垂直ストライピングの場合は、一般的に、キャラクタステムが青または緑の左縁を有するように位置合せされたステムを有するキャラクタが、赤の左縁を有するように位置合せされたステムを有するキャラクタより、より読みやすい傾向があることが分かる。したがって、垂直ストライピングを有する画面上に表示すべきキャラクタのヒンティング中は、ステムについては青または緑の左縁の方が、赤の左縁より好まれる。
【００２５】
ヒンティング３０３において、スケールした画像３１２は、まず最初に、グリッドレイアウト３１３Ａによって表されているように、グリッドパターンの上に置かれる。グリッドパターンは、左から右にＣｌからＣ４の付いた４列のピクセル、および上端から下端にＲ１からＲ６の付いた６行のピクセルについて示してある。ピクセルサブコンポーネント間の境界が、ピクセル間の境界でもある所を除き、破線で表されていることに留意されたい。ピクセル境界は、実線で表されている。それぞれのピクセルサブコンポーネントは、その列が、それぞれ、赤、緑、または青の色を表すかどうかを表す見出しＲ、Ｇ、またはＢを有する。
【００２６】
ヒンティング３０３中は、スケールしたｉキャラクタの左縁は、ヒンティングしたキャラクタ３１２’のステムの左縁が、読みやすさを促進するために緑の左縁を有するように、Ｒ／Ｇピクセルサブコンポーネント境界に沿って位置合せされる。グリッド上のキャラクタの位置ばかりでなく、キャラクタの形状も調整される。キャラクタ間隔の調整も行われる。
【００２７】
いったんヒンティング３０３が完了すると、オペレーションがスキャン変換３０４に進むが、これは、キャラクタを表すスケールしたジオメトリのビットマップ画像への変換を含む。従来のスキャン変換オペレーションが、スケールした画像の対応する部分をマップできる個々のユニットとしてピクセルを取り扱う。しかし、Ｈｉｌｌらによる特許によれば、ピクセルサブコンポーネントのそれぞれが、スケールした画像の個別の部分をマップできる個別の光度コンポーネントとして取り扱われる。
【００２８】
図３を参照すると、スキャン変換オペレーションの結果、ビットマップ画像３１４が生じる。ビットマップ画像列Ｃ１−Ｃ４のピクセルサブコンポーネントのそれぞれが、スケールしヒンティングした画像３１３Ｂの対応する列の異なるセグメントから、どのように決定されるかに留意されたい。これは、画像の単一の部分から生成された所与のピクセルに対して、すべて３つのピクセルサブコンポーネント値を有する従来の技術と対称をなす。ビットマップ画像３１４が、赤／緑のピクセル境界に沿って位置合せされた左縁を有する２／３のピクセル幅のステムを、どのように有するかについても留意されたい。ピクセルの幅の２／３のドットが使用されることについても留意されたい。それぞれのピクセルを単一の光度コンポーネントとして取り扱っていた従来のテキスト画像作成技術では、ピクセル幅一杯のステムおよびピクセルサイズ一杯のドットを有する、あまり正確でない画像が生じていたことであろう。
【００２９】
いったんテキストのビットマップ表現（すなわち、ビットマップ画像３１４）が、スキャン変換３０４中に生成されると、ディスプレイアダプタに出力されるか、または画像品質を向上させるために、さらに処理されて、カラー処理オペレーションおよび／またはカラー調整を行うことができる。人間の眼は、画像色（クロミナンス）縁とは対称的に輝度縁に対してはるかにセンシティブであるため、画像レンダリングの目的でＲＧＢピクセルサブコンポーネントを独立した光度要素として取り扱うことにより、不必要なカラーフリンジング効果が生じる場合がある。たとえば、ＲＧＢの組から赤を取り除いた場合、シアンのカラーフリンジング効果、つまり緑および青の付加が生じる可能性が高い。
【００３０】
したがって、ビットマップ画像３１４は、所望のブラシカラーからビットマップ画像がどのぐらいそれたかを判断するための画像処理が行われる、カラー処理３０５に提供される。ビットマップ画像の一部分が、所望のブラシカラーから予め選択した量を超えてそれていた場合は、画像部分がブラシと背景色間の平均の許容範囲内に入るまで、ピクセルサブコンポーネントの強度値の調整が適用される。
【００３１】
次いで、ビットマップ画像３１４は、ブレンディングオペレーションを介して既存の背景画像に適用される。具体的には、所与のピクセルについて、赤、緑、青の色強度は、ｇｌｙｐｈ．ｒ、ｇｌｙｐｈ．ｇ、ｇｌｙｐｈ．ｂによって与えられるとする。グリフとは、所与のピクセルのそのピクセルサブコンポーネントに関するキャラクタの形状を表す用語である。赤、緑、青の色成分の３つのベクトル値は、ベクトルｇｌｙｐｈ．ｒｇｂで表される。
【００３２】
ブラシまたは前景色成分は、同様のベクトルｂｒｕｓｈ．ｒｇｂで表される。
それぞれの色成分でのブラシのトランスペアレインシのスカラ値が、ベクトルｂｒｕｓｈａ．ｒｇｂによって与えられる。そのピクセルに対する背景色は、３つのベクトル値ｄｓｔ．ｒｇｂによって与えられる。ブラシを使ったキャラクタを背景上でブレンディングするために、以下のベクトル方程式（１）が適用される。
ＤＳＴ．ｒｇｂ＝ＤＳＴ．ｒｇｂ＋（ｂｒｕｓｈ．ｒｇｂ−ｄｓｔ．ｒｇｂ）＊ｇｌｙｐｈ．ｒｇｂ＊ｂｒｕｓｈａ．ｒｇｂ      （１）
【００３３】
【特許文献１】
米国特許出願第６，１８８，３８５  Ｂ１号
【００３４】
【発明が解決しようとする課題】
それぞれのピクセルサブコンポーネントを分離・独立した輝度強度値として取り扱う従来の技術においては、このブレンディングオペレーションおよびキャラクタのアニメーション（たとえば、回転やスケーリング）が、ソフトウェア内で行われる。キャラクタのブレンディングおよびアニメーションを行うための計算は、極めて複雑である。
【００３５】
最新の計算システムでさえも、それぞれのピクセルサブコンポーネントを独立した輝度強度ソースとして取り扱うキャラクタをレンダリングしアニメートすることが困難なことがある。
【００３６】
そこで、本発明の目的は、それぞれのピクセルサブコンポーネントを独立した輝度強度ソースとして取り扱うことが可能なキャラクタを、レンダリングしてアニメートすることにより、より効率的なシステムおよび方法を提供することにある。
【００３７】
換言すれば、本発明の目的は、特定のピクセルのすべてのピクセルサブコンポーネントが１つの共通のサンプルポイントから生成される従来のキャラクタとは異なり、各ピクセルサブコンポーネントを、それ自体の独立したサンプルポイントから生成された独立した輝度強度ソースとして取り扱うことが可能なキャラクタのレンダリングおよびアニメーションを加速するための方法、システム、コンピュータプログラム製品を提供することにある。
【００３８】
【課題を解決するための手段】
サブコンポーネント指向キャラクタのビットマップ表現が、それぞれのピクセルサブコンポーネントを生成するための単一の画像サンプルを使用することによって生成される。具体的には、所与のキャラクタをレンダリングするために、グラフィックスユニットが、キャラクタのアウトラインを記述するキャラクタ表示にアクセスする。次いで、キャラクタ表示をオーバースケールし、概念的にグリッド上に置く。それぞれのグリッド位置が、サンプリングポイントおよび特定のピクセルサブコンポーネントに対応する。ピクセル境界だけでなく、サブコンポーネント境界も考慮して、キャラクタの形状を調整することにより、ヒンティングが起きる。スキャン変換を行って、グリッド上のキャラクタの位置に基づいて、キャラクタのビットマップ表現を生成する。次いで、カラーフリンジング効果を補償するために色補償が起きる。
【００３９】
ビットマップ表現を生成した後、キャラクタは、そのキャラクタの最終レンダリングおよびアニメーションを行うハードウェアグラフィックスユニットとインターフェイスをとることによってレンダリングされる。レンダリングおよびアニメーション速度は、ソフトウェア内でレンダリングを行いアニメートする、以前の方法に比べて実質的に増加する。具体的には、キャラクタのビットマップ表現、およびビットマップ表現、またはブラシおよび／または背景を調整し、次いで、従来でないシーケンスの関数呼出しをハードウェアグラフィックスユニットに出し、そのことにより、ハードウェアグラフィックスユニットが、背景上でキャラクタをブレンディングし、キャラクタをスケーリングし、および／またはキャラクタを回転することにより、キャラクタをレンダリングする。したがって、本発明の原理は、個々のサンプルポイントから生成されたピクセルサブコンポーネント値を有するキャラクタの、より効率的なレンダリングおよびアニメーションを提供することである。
【００４０】
発明のさらなる特徴および利点は、以下に記載する説明から明らかとなるであろうし、あるいは本発明の実践によって学ばれることであろう。本発明の特徴および利点は、特に添付の特許請求の範囲で指摘した計器および組合せによって理解され、得られるであろう。本発明のこれらのおよび他の特徴は、以下の説明および特許請求の範囲から、より十分に明らかとなるであろうし、あるいは本明細書の以下に記載するような本発明の実践によって学ばれることであろう。
【００４１】
本発明についての上述のおよび他の利点と特徴が得られる方式を説明するために、添付した図面に示してある特定の実施形態を参照することが、簡単に上述した本発明の、より具体的な説明となるであろう。これらの図面は、本発明の典型的な実施形態を示したものにすぎず、したがって、本発明の範囲を限定するものと考えるべきではないことを理解した上で、添付図面を使用しながら、本発明について、さらに具体的かつ詳細に記述し説明することとする。
【００４２】
【発明の実施の形態】
本発明は、それぞれのピクセルサブコンポーネントを互いに異なる輝度強度ソースとして取り扱うキャラクタのレンダリングおよびアニメーションを加速するための、方法、システム、コンピュータプログラム製品に及ぶ。
【００４３】
それぞれのピクセルサブコンポーネントを互いに異なる輝度強度ソースとして取り扱うキャラクタ、言い換えれば、それぞれのピクセルサブコンポーネントが１つのサンプルから生成されるキャラクタを、本明細書の詳細な説明および特許請求の範囲では、「サブコンポーネント指向キャラクタ」と呼ぶ。サブコンポーネント指向キャラクタは、単一のサンプルが、所与のピクセルに対するすべてのピクセルサブコンポーネント値を生成するために使用される典型的な画像と対称をなす。
【００４４】
サブコンポーネント指向キャラクタのビットマップ表現が、それぞれのピクセルサブコンポーネントを生成するための単一の画像サンプルを使用することにより生成される。これは、たとえば、キャラクタの表示をオーバースケールし、キャラクタのオーバースケールした表示をグリッド上に置き、次いで、そのグリッド位置で、オーバースケールしたキャラクタのプロパティに基づいて、輝度および恐らくはトランスペアレインシ値をもそれぞれのグリッド位置に割り当てることによって達成できる。次いで、キャラクタは、そのキャラクタの最終レンダリングおよびアニメーションを行うハードウェアグラフィックスユニットとインターフェイスをとることによって、レンダリングされる。レンダリングおよびアニメーション速度は、ソフトウェア内でレンダリングを行い、アニメートする従来の方法と比べて、実質的に増加する。従来のハードウェアグラフィックスユニットを使用してサブコンポーネント指向キャラクタをアニメートする場合に実質的な困難があるが、そのことについて以下に示す。これらの困難は、本発明の原理を使用して克服される。
【００４５】
本発明の範囲内の実施形態には、以下に詳細に記述するように、さまざまなコンピュータハードウェアを含む専用または汎用計算デバイスが含まれる。本発明の範囲内の実施形態にはまた、格納されているコンピュータ実行可能命令またはデータ構造を運ぶまたは有するためのコンピュータ読取り可能媒体も含まれる。このようなコンピュータ読取り可能媒体は、汎用または専用コンピュータからアクセスできる、どのような使用可能な媒体でも良い。例示として、このようなコンピュータ読取り可能媒体が、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置デバイスなどの物理記憶装置媒体、あるいはコンピュータ実行可能命令またはデータ構造の形式の所望のプログラムコード手段を運ぶまたは格納するために使用でき、かつ汎用または専用コンピュータからアクセスできる、どのような他の媒体をも備えることができるが、これらに限定されるものではない。
【００４６】
情報が、ネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組合せのいずれか）を介してコンピュータに転送されるかまたは提供されると、コンピュータは、コンピュータ読取り可能媒体としてその接続を適切にビューする。したがって、このような接続のどのようなものも、コンピュータ読取り可能媒体と称することが適切である。上述したものの組合せも、コンピュータ読取り可能媒体の範囲内に含まれるものとする。コンピュータ実行可能命令には、たとえば、汎用コンピュータ、専用コンピュータ、専用処理デバイスに、特定の機能または機能群を行わせる命令およびデータが含まれる。
【００４７】
必要なものではないが、本発明を、計算デバイスによって実行されるプログラムモジュールなどの、コンピュータ実行可能命令の一般的な状況下で記述する。一般的に、プログラムモジュールには、特定のタスクを行うまたは特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令、関連データ構造、プログラムモジュールは、本明細書に開示されている本方法のステップおよび動作を実行するためのプログラムコード手段のいくつかの例を表している。
【００４８】
本発明が、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルの大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を有するネットワーク計算環境において実践できることは、当業者なら理解されるであろう。本発明はまた、通信ネットワークを介して（ハードワイヤードリンクまたはワイヤレスリンクによるか、あるいはハードワイヤードリンクまたはワイヤレスリンクの組合せによるかのいずれかで）リンクされているローカルおよびリモート処理デバイスによって、タスクが行われる、分散型計算環境においても実践できる。分散型計算環境においては、プログラムモジュールは、ローカルとリモートの両方の記憶装置デバイス内に位置することができる。
【００４９】
図４を参照すると、本発明を実施するためのシステムの例に、処理ユニット４２１と、システムメモリ４２２と、システムメモリ４２２を含むさまざまなシステムコンポーネントを処理ユニット４２１に結合するシステムバス４２３とを含む、コンピュータ４２０の形の汎用計算デバイスが含まれる。システムバス４２３は、さまざまなバスアーキテクチャを使用する、メモリバスまたはメモリコントローラと、周辺バスと、ローカルバスとを含む、いくつかのタイプのバス構造のどのようなものでもあり得る。システムメモリは、読取専用メモリ（ＲＯＭ）４２４とランダムアクセスメモリ（ＲＡＭ）４２５とを含む。スタートアップ中などに、コンピュータ４２０内の要素間の情報の転送を助ける基本ルーチンを有する、基本入出力システム（ＢＩＯＳ）４２６は、ＲＯＭ４２４内に格納できる。
【００５０】
コンピュータ４２０はまた、磁気ハードディスク４３９から読み取り又は書き込むための磁気ハードディスクドライブ４２７と、取外し可能磁気ディスク４２９から読み取り又は書き込むための磁気ディスクドライブ４２８と、ＣＤ−ＲＯＭや他の光学媒体などの取外し可能光学ディスク４３１から読み取り又は書き込むための光学ディスクドライブ４３０とを含むことができる。磁気ハードディスクドライブ４２７、磁気ディスクドライブ４２８、光学ディスクドライブ４３０は、それぞれ、ハードディスクドライブインターフェイス４３２、磁気ディスクドライブインターフェイス４３３、光学ドライブインターフェイス４３４により、システムバス４２３に接続される。ドライブおよびそれに関連するコンピュータ読取り可能媒体は、コンピュータ４２０のために、コンピュータ実行可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性記憶装置を提供する。本明細書に記述した環境の例では磁気ハードディスク４３９、取外し可能磁気ディスク４２９、取外し可能光学ディスク４３１を用いるが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含む、データを格納するための他のタイプのコンピュータ読取り可能媒体も使用できる。
【００５１】
１つまたは複数のプログラムモジュールを含むプログラムコード手段が、オペレーティングシステム４３５、１つまたは複数のアプリケーションプログラム４３６、他のプログラムモジュール４３７、プログラムデータ４３８を含み、ハードディスク４３９、磁気ディスク４２９、光学ディスク４３１、ＲＯＭ４２４またはＲＡＭ４２５上に格納できる。ユーザが、マイクロホン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナなどの、キーボード４４０、ポインティングデバイス４４２、または他の入力デバイス（図示せず）を介して、コンピュータ４２０にコマンドおよび情報を入力できる。これらのおよび他の入力デバイスは、システムバス４２３に結合されたシリアルポートインターフェイス４４６を介して処理ユニット４２１にしばしば接続される。あるいは、入力デバイスは、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）などの、他のインターフェイスによって接続できる。モニタ４４７または別のディスプレイデバイスも、ビデオアダプタ４４８などのインターフェイスを介して、システムバス４２３に接続される。モニタに加えて、パーソナルコンピュータには、通常、スピーカやプリンタなどの、他の周辺出力デバイス（図示せず）も含まれる。
【００５２】
コンピュータ４２０は、リモートコンピュータ４４９ａおよび４４９ｂなどの、１つまたは複数のリモートコンピュータに対する論理接続を使用する、ネットワークされた環境において動作できる。記憶装置デバイス４５０ａおよび４５０ｂと、それらに関連するアプリケーションプログラム４３６ａおよび４３６ｂのみが図４に示してあるが、リモートコンピュータ４４９ａおよび４４９ｂは、それぞれ、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通のネットワークノードであり得、通常、コンピュータ４２０について上述した、多くのまたはすべての要素を含む。図４に示した論理接続には、本明細書に例示として示した、ローカルエリアネットワーク（ＬＡＮ）４５１とワイドエリアネットワーク（ＷＡＮ）４５２とが含まれるが、これらに限定されるものではない。このようなネットワーキング環境は、オフィス全体、または全社的なコンピュータネットワーク、イントラネット、インターネットにおいて一般化している。
【００５３】
ＬＡＮネットワーキング環境において使用された場合、コンピュータ４２０は、ネットワークインターフェイスまたはアダプタ４５３を介してローカルネットワーク４５１に接続される。ＷＡＮネットワーキング環境において使用された場合、コンピュータ４２０は、インターネットなどのワイドエリアネットワーク４５２を介して通信を確立するための、モデム４５４、ワイヤレスリンク、または他の手段を備えることができる。モデム４５４は、内部または外部のいずれかであり得るが、シリアルポートインターフェイス４４６を介してシステムバス４２３に接続される。ネットワークされた環境においては、コンピュータ４２０またはその一部分について示したプログラムモジュールを、リモート記憶装置デバイス内に格納できる。示したネットワーク接続は例示のためであり、ワイドエリアネットワーク４５２を介して通信を確立するための他の手段も使用できることを理解されるであろう。
【００５４】
コンピュータ４２０は、本発明の原理を実施できる、汎用計算デバイスの単なる一例である。一実施形態では、コンピュータ４２０は、図１のコンピュータ１００について示したような、物理的な構造であり得る。その場合、モニタ４４７は、たとえば、ディスプレイデバイス１０４であり得る。
【００５５】
図５は、本発明に従って、モニタ４４７上でキャラクタ画像をレンダリングするために使用される、さまざまな要素を含むシステム５００を示す図である。アプリケーション４３６およびオペレーティングシステム４３５は、プロセッサ４２１が、アプリケーションおよびオペレーティングシステムに関連するさまざまな方法を実行する場合に、システムメモリ４２２内で実施される。したがって、アプリケーション４３６およびオペレーティングシステム４３５は、ソフトウェア内で実施される。システム５００はまた、ハードウェアグラフィックスユニット５１２も備える。
【００５６】
オペレーティングシステム４３５は、関数呼出しをし、それにより、ハードウェアグラフィックスユニット５１２を制御する。使用可能な関数呼出しの構造を決定する１組の規則は、しばしば、アプリケーションプログラムインターフェイスまたはＡＰＩと呼ぶ。したがって、アプリケーションプログラムインターフェイス５１１が、オペレーティングシステム４３５とハードウェアグラフィックスユニット５１２の間に示してあるが、関数がアプリケーションプログラムインターフェイス５１１によって定義された１組の規則に従って呼ばれ、戻されることを示している。
【００５７】
オペレーション中、アプリケーション４３６は、モニタ４４７上でレンダリングするためにオペレーティングシステム４３５にテキスト情報を出力する。アプリケーションは、たとえば、ワードプロセッシングアプリケーション、ウェブページデザインアプリケーション、または表示されているテキストに依存する他の列挙できるアプリケーションであり得る。出力テキスト情報には、たとえば、レンダリングすべきキャラクタを識別する情報、レンダリング中に使用すべきフォント、キャラクタのポイント数、キャラクタをレンダリングする時に適用すべきブラシテクスチャ（すなわち、色およびトランスペアレインシ値）が含まれる。
【００５８】
オペレーティングシステム４３５には、モニタ４４７上でテキストのディスプレイを制御することを担当する、さまざまなコンポーネントが含まれる。これらのコンポーネントには、ディスプレイ情報５０１およびグラフィックスインターフェイス５０２が含まれる。ディスプレイ情報５０１には、たとえば、レンダリング中に適用すべきスケーリングに関する情報および／または背景色情報が含まれる。
【００５９】
グラフィックスインターフェイス５０２には、グラフィックスを処理するためのルーチン、およびテキストなどの一般に生じるキャラクタを処理するためのタイプラスタライザ５０３などのルーチンが含まれる。タイプラスタライザ５０３には、キャラクタ表示５０４とレンダリングおよびラスタ化ルーチン５０５とが含まれる。キャラクタ表示５０４には、たとえば、ベクトルグラフィックス、線、点、曲線などの、キャラクタのアウトラインに関する情報が含まれることがある。キャラクタのアウトラインを表すための従来の技術には、さまざまなものがある。アウトライン情報は、変化する所望のレベルの解像度でキャラクタのビットマップ表現を生成するために使用される。
【００６０】
レンダリングおよびラスタ化ルーチン５０５には、スケーリングサブルーチン５０６、ヒンティングサブルーチン５０７、スキャン変換サブルーチン５０８、色補償サブルーチン５０９が含まれる。ピクセルサブコンポーネント指向キャラクタを生成するための、これらのさまざまなサブルーチン５０６、５０７、５０８、５０９のオペレーションは、Ｈｉｌｌらによる特許に関して上述したものと同じであり得る。しかし、Ｈｉｌｌらによる特許とは異なり、グラフィックスインターフェイス５０２は、ハードウェアグラフィックスユニット５１２とインターフェイスをとる。特に、グラフィックスインターフェイス５０２は、アプリケーションプログラムインターフェイス５１１を使用して、関数呼出しをハードウェアグラフィックスユニット５１２に出力し、かつ場合によっては、ハードウェアグラフィックスユニット５１２から戻ってくる応答を受け取る。
【００６１】
ハードウェアグラフィックスユニット５１２と相互動作するために、グラフィックスインターフェイス５０２を構成することは、非常に重大な問題である。結局、レンダリングすべきまたはアニメートすべき所望のキャラクタは、それぞれのピクセルサブコンポーネントが異なるサンプリングポイントから生成されるよう構築されていた。しかし、従来のハードウェアグラフィックスユニットは、所与のピクセル内のそれぞれのピクセルサブコンポーネントが共通のサンプルポイントから生成されるよう構築され、ピクセルサブコンポーネントは、そのサンプルポイントでピクセルの外観にのみ貢献している。たとえこれらのハードウェアグラフィックスユニットに対応するアプリケーションプログラムまたはＡＰＩが、それぞれのピクセルサブコンポーネントを分離型の光度ソースとして取り扱うための基礎設計がなされていない場合でも、本発明の原理に従って、従来のハードウェアグラフィックスユニットを使用して、ピクセルサブコンポーネント指向キャラクタをレンダリングし、アニメートすることができる。
【００６２】
サブコンポーネント指向キャラクタを適宜、修正するため、かつ適切な関数呼出しをハードウェアグラフィックスユニット５１２に出すために、グラフィックスインターフェイス５０２には、適応モジュール５１０が含まれる。適応モジュール５１０は、キャラクタのビットマップ表現、およびキャラクタに適用すべきブラシのビットマップ表現を受け取る。ブラシのビットマップ表現には、それぞれのピクセルサブコンポーネントに対する光度値およびトランスペアレインシ値が含まれる。したがって、それぞれのＲＧＢピクセルには、６つの値、つまり、赤のピクセルサブコンポーネントに対する光度値（ｂｒｕｓｈ．ｒ）およびトランスペアレインシ値（ｂｒｕｓｈ．ａｒ）、緑のピクセルサブコンポーネントに対する光度値（ｂｒｕｓｈ．ｇ）およびトランスペアレインシ値（ｂｒｕｓｈ．ａｇ）、青のピクセルサブコンポーネントに対する光度値（ｂｒｕｓｈ．ｂ）およびトランスペアレインシ値（ｂｒｕｓｈ．ａｂ）が含まれる。したがって、サブコンポーネント指向キャラクタのそれぞれのピクセルには、３つの光度値と、３つのトランスペアレインシ値とが含まれる。
【００６３】
さまざまなハードウェアグラフィックスユニットとインターフェイスをとるための従来のアプリケーションプログラムインターフェイス（ＡＰＩ）の１つに、ＭＩＣＲＯＳＯＦＴ（登録商標）ＤＩＲＥＣＴＸ（登録商標）と呼ばれるものがある。ＤｉｒｅｃｔＸ（登録商標）は、赤、緑、青のそれぞれについて１つずつの、全部で３つのブラシカラー強度値を有するピクセルの操作を可能にする。ＤｉｒｅｃｔＸはまた、ピクセルでのトランスペアレインシに対応する、全体として１つのトランスペアレインシ値も可能にする。しかし、上述したように、サブコンポーネント指向キャラクタは、場合によっては、キャラクタに対するより高い解像度感覚を増進するために、それぞれのピクセルに対して、３つのトランスペアレインシ値を含む。
【００６４】
適応モジュール５１０は、従来のハードウェアＡＰＩと本発明によるサブコンポーネント指向ピクセル処理との間の、この見たところ互換性のなさを補償する。図６は、べた一色でない半透明のブラシを使用する既に存在している画像などの、べた一色でない背景画像上にテキストをレンダリングするという、比較的複雑なオペレーションを行うために使用される、さまざまなデータ構造を示す図である。このオペレーションを、時に、「ブレンディング」と呼ぶ。
【００６５】
図６を参照すると、サブコンポーネント指向で行うべきブレンディングを可能にする、４つの関連するデータ構造がある。データ構造のうちの３つが、適応モジュール５１０に対して入力として提供される、これらには、キャラクタの形状を定義するデータ構造（すなわち、ＧＬＹＰＨ（グリフ））と、ブラシを定義するデータ構造（すなわち、ＢＲＵＳＨ）と、新しいものを形成するためにブラシを適用すべき背景を定義するデータ構造（すなわち、ＤＳＴ）とが含まれる。ＮｅｗＤＳＴと呼ばれる第４のデータ構造は、ブレンディングオペレーションが行われた後に、新しい画像を定義する。
【００６６】
ヒンティングした文字ｉ（図３のグリッドパターン３１３Ｂのキャラクタ３１２’参照）の第５行Ｒ５の４つの列、ＣｌからＣ４を参照することにより、グリフ（ＧＬＹＰＨ）データ構造が得られる。この文字ｉが、黒の背景上で形成された白の文字ｉと想定する。要素３１３Ｂを参照すると、行５の列４は、単なる黒の背景である。したがって、図６のグリフデータ構造の列４が、ピクセルの赤、緑、青のサブコンポーネントのそれぞれに対して、黒の背景を示す、ゼロの値を含む。同様に、要素３１３Ｂを参照すると、列Ｃｌ内の第１のピクセルの赤および緑のサブコンポーネントと、列Ｃ３内の第３のピクセルの青のサブコンポーネントは、黒の背景のそれぞれの部分である。したがって、これらの対応するピクセルサブコンポーネントもまた、図６のグリフデータ構造内にゼロ値が割り当てられている。
【００６７】
要素３１３Ｂを参照すると、列Ｃ２内のピクセルの緑および青サブコンポーネントが、白のキャラクタｉ内に完全にマップされている。したがって、これらのピクセルサブコンポーネントには、最大値が割り当てられる。８ビットを使用して、整数値を輝度強度に割り当てる場合、その輝度強度には、０と２５５の間の整数値が割り当てられる。したがって、図６のグリフデータ構造内の対応するピクセルサブコンポーネントには、２５５の値が割り当てられる。
【００６８】
再び要素３１３Ｂを参照すると、残りのピクセルサブコンポーネント（すなわち、列Ｃ１の青のサブコンポーネント、列Ｃ２の赤のサブコンポーネント、列Ｃ３の赤および緑のサブコンポーネント）は、いくつかの黒の背景といくつかの白のキャラクタ部分とを含む。０と２５５間の値が、白のキャラクタによって覆われた区域のパーセンテージにほぼ比例する、図６のグリフ（ＧＬＹＰＨ）キャラクタの対応するピクセルサブコンポーネントに割り当てられる。たとえば、列Ｃｌの青のサブコンポーネントおよび列３の緑のサブコンポーネントは、約１５５／２５５の比率で、白のキャラクタ部分によって覆われる。したがって、これらのピクセルサブコンポーネントには、図６のグリフキャラクタ内に１５５の値が割り当てられる。列Ｃ２の赤のサブコンポーネントおよび列３の赤のサブコンポーネントは、約２３１／２５５の比率で、白キャラクタ部分によって覆われる。したがって、これらのピクセルサブコンポーネントには、図６のグリフキャラクタ内に２３１の値が割り当てられる。
【００６９】
上述したように、図６のグリフデータ構造は、図３のグリッド構造３１３Ｂ内の第５の行Ｒ５の４つの列、ＣｌからＣ４内の文字ｉの形状を記述する。話しを簡単にするため、キャラクタの他の部分も同様の方式で処理されるが、ブレンディングオペレーションを、この限られた区域に関して記述する。話しを簡単にするため、他のデータ構造も、キャラクタの、この小さい区域に限ることとする。
【００７０】
図６のブラシ（ＢＲＵＳＨ）データ構造の例には、それぞれのＲＧＢピクセルに対して６つの値、つまり３つのＲＧＢピクセルサブコンポーネントのそれぞれに対して１つの輝度強度値および１つのトランスペアレインシ値が含まれる。輝度強度値は、約４ピクセル列の期間にわたって０と２５５の間でほぼ正弦波的に変化する。トランスペアレインシ値は、２５５から開始し、２まで線形に減少する。ブラシトランスペアレインシ値に対する０の値は、そのブラシが完全に透明であることを示し、２５５の値は、そのブラシが完全にオペークであることを示す。
【００７１】
図６のＤＳＴデータ構造の例は、ブラシを適用すべき背景を記述する。背景が単なるべた一色である場合は、それぞれのピクセルが、赤、緑、青のピクセルサブコンポーネントのそれぞれに対して同じ値を有する。しかし、この例では、背景は、キャラクタが既に存在している画像の上にレンダリングされている場合と同様、べた一色ではない。
【００７２】
ＮｅｗＤＳＴデータ構造は、以下のブレンディング方程式（２）に基づき、それぞれのピクセルサブコンポーネントに対して計算される。
NewDST=DST+(Brush.c-DST)*Glyph(F)*Brush.a(F)                      (2)
【００７３】
上式で、
Ｂｒｕｓｈ．ｃは、サブコンポーネントに対するブラシカラー値である。
Ｂｒｕｓｈ．ａは、サブコンポーネントに対するブラシトランスペアレインシ値である。
Ｂｒｕｓｈ．ａ（Ｆ）は、ゼロと１の間の値に正規化された、Ｂｒｕｓｈ．ａの浮動小数点値である。
Ｇｌｙｐｈ（Ｆ）は、ゼロと１の間の値に正規化された、Ｇｌｙｐｈの浮動小数点値である。
【００７４】
この例を完了するために、この方程式を、例内の１２のサブコンポーネントのそれぞれに対して行い、新しい画像ＮｅｗＤＳＴ内の１２のピクセルサブコンポーネントに対する値を生成する。
【００７５】
これらの計算は、それぞれのピクセルサブコンポーネントに対するブレンディングを行う。しかし、従来のハードウェアＡＰＩは、それぞれのピクセルサブコンポーネントを、それ自体の対応するサンプルポイントを有する個別の輝度強度ソースとして取り扱うための基礎設計がなされていない。したがって、適応モジュール５１０は、図６の入力データ構造上でいくつかの修正を行い、次いで、ハードウェアＡＰＩを「だまして」、サブコンポーネント指向ブレンディングオペレーションを行わせるために、従来とは異なったシーケンスの関数呼出しを出力する。
【００７６】
特に、グリフデータ構造は、３回、オーバースケールされる。次いで、輝度強度値が、そのピクセルに対するトランスペアレインシ「アルファ」値に割り当てられる。この修正は、図７の第１の矢印７０１に示されている。ピクセル列の数は、３倍されて１２となる。しかし、グリフ内にはそれぞれのピクセルに対するトランスペアレインシ値のみしかない。これは、ＤｉｒｅｃｔＸ（登録商標）の要求仕様に準拠する。
【００７７】
次いで、カラーフリンジング効果を削除するために、色変換サブルーチン５０９が、新しい値を、現在の列の以前の値、左の列の以前の値、右の列の以前の値の平均に等しい、それぞれの列に再割り当てする。たとえば、列Ｃ８内のピクセルに、２３１、１５５、０の平均である、１２９の値を再割り当てする。この平均化オペレーションは、図７の第２の矢印７０２によって示してある。平均化オペレーションがオーバースケーリングオペレーション後に生じるものとして示してあるが、平均化オペレーションは、オーバースケーリングの前に生じることもあり、その結果は同じである。
【００７８】
次に、レンダリングの３つのパスを行うが、１つのパスは赤のサブコンポーネントのフレームバッファ７０３を生成するため、１つのパスは緑のサブコンポーネントのフレームバッファ７０４を生成するため、１つのパスは青のサブコンポーネントのフレームバッファ７０５を生成するためである。出力レンダラ内にこれらの３つのカラーチャネルをロックするために、適応モジュール５１０は、ハードウェアグラフィックスユニット５１２に対して、以下の３つのＤｉｒｅｃｔＸ８．１関数呼出しをすることができる。
【００７９】
0004598367.tif 000002
【００８０】
「ＳｅｔＲｅｎｄｅｒＳｔａｔｅ」方法では、単一のデバイスレンダ状態パラメータを設定する。状態変数「Ｄ３ＤＲＳ＿ＣＯＬＯＲＷＲＩＴＥＥＮＡＢＬＥ」は、特定目標カラーバッファに対するチャネル当たりの書込みを可能にする。第１、第２、第３の関数呼出しが、目標カラーバッファとして、それぞれ、赤、緑、青のカラーバッファを特定する。次いで、それぞれの色がレンダリングされる。赤の色については、以前に赤のカラーサブコンポーネント（すなわち、列Ｃｌ、Ｃ４、Ｃ７、ＣｌＯ）に対応していたグリフスペアレインシ値が、赤の目標カラーバッファ７０３を取り込むために使用される。同様に、列Ｃ２、Ｃ５、Ｃ８、Ｃｌ１が、緑の目標カラーバッファ７０４を取り込むために使用され、列Ｃ３、Ｃ６、Ｃ９、Ｃ１２が、青の目標カラーバッファ７０５を取り込むために使用される。
【００８１】
さまざまな方式でＤｉｒｅｃｔＸ８．１関数呼出しを使用して、色を、そのさまざまなカラーバッファにレンダリングできる。たとえば、ブラシが、それぞれのピクセルに対して同じ色が使用されているべた一色を有することがある。あるいは、ブラシが、それぞれのピクセルに対して異なる色が使用されている、模様となっていることがある。ブラシはまた、オペークまたは半透明でもあり得る。背景表面は、画面上で反射されるべき最終表面でもあり、または中間表面でもあり得る。中間背景表面には、それぞれのピクセルに対する、ＲＧＢ色値だけでなく、トランスペアレインシ値も含むことができる。
【００８２】
この説明の次の部分では、宛先表面がトランスペアレインシ値でなくＲＧＢ色値のみを有し、ブラシが模様となっており、その結果、それぞれのピクセルが４つの値、つまり、ＲＧＢ色のそれぞれに対して１つの値、ピクセル全体に共通の１つのトランスペアレインシ値を含むレンダリング技術を行う「ＤｒａｗＧｌｙｐｈＥｘａｍｐｌｅ」と呼ばれるＣ＋＋ルーチンについて記述する。ルーチンＤｒａｗＧｌｙｐｈＥｘａｍｐｌｅは、列ＣｌからＣ４に対応する図７の４つのピクセルを描画するよう動作する。話しを簡単にするために、コード部分をセグメント毎に表示する。
【００８３】
まず最初に、コード内で使用されるさまざまな引き数を集約する。「ｐＤｅｖ」は、ＡＰＩを描画するＤｉｒｅｃｔＸ８．１の多くの部分を実施する基本ＤｉｒｅｃｔＸ８．１オブジェクトである「ＩＤｉｒｅｃｔ３ＤＤｅｖｉｃｅ８」に対するポインタである。「ｐＧｌｙｐｈＴｅｘｔｕｒｅ」は、準備されたグリフデータを含むテクスチャに対するポインタである。話しを簡単にするために、このテクスチャが、要素［０］［０］から［０］［１１］として、２５６＊２５６のサイズを有し、画面の左上のコーナにある列ＣｌからＣ１２に対応するグリフトランスペアレインシデータを含むと仮定する。「ｐＢｒｕｓｈＴｅｘｔｕｒｅ」は、準備されたブラシデータを含むテクスチャに対するポインタである。話しを簡単にするために、このテクスチャが、要素［０］［０］から［０］［３］として、２５６＊２５６のサイズを有し、左上のコーナにある列ＣｌからＣ４に対応するブラシカラーおよびトランスペアレインシデータを含むと仮定する。
【００８４】
以下のコードの例が、DrawGlyphsExampleルーチンを開始する。
0004598367.tif 000003
【００８５】
画面上のグリフの形状およびその位置と、ブラシピクチャを画面上でどのように伸張し位置決めすべきかを定義するために、DirectX座標情報が、「TheVertex」と呼ばれる以下の構造内に常駐する。
【００８６】
0004598367.tif 000004
【００８７】
ここで、「ｘ」および「ｙ」は、画面上のポイントを表す。「ｚ」および「ｗ」は、この２次元の例では使用していないが、３次元グラフィックスに対しては使用されることがある。「ｂｘ」および「ｂｙ」は、ブラシテクスチャ表面上のポイントを表す。「ｇｘ」および「ｇｙ」は、グリフテクスチャ表面上のポイントを表す。
【００８８】
グリフの形状は、長方形であるため、完全な座標定義には、４頂点の１配列を必要とする。以下の演算子が、４頂点に図７の例に合致する特定の座標を書き込む。
【００８９】
0004598367.tif 000005
【００９０】
このセグメントで、「Ｘ」は、画面ウィンドウ内に位置決めされた、結果のグリフ画像の左上のグリフコーナのＸ座標である。「Ｙ」は、画面ウィンドウ内に位置決めされた、このコーナのＹ座標である。「Ｗ」は、画面ウィンドウ内にある、結果のグリフ長方形の幅である。「Ｈ」は、画面ウィンドウ内にある、結果のグリフ長方形の高さである。
【００９１】
以下の２つの線は、３次元を削除するために使用される。
0004598367.tif 000006
【００９２】
以下に、グリフテクスチャの頂点を定義する。
0004598367.tif 000007
【００９３】
このセグメントで、「ＧＷＴ」は、グリフテクスチャ全体の幅であり、「ＧＨＴ」は、グリフテクスチャ全体の高さであり、「ＧＸ」は、テクスチャ表面内のグリフ情報のＸ座標であり、「ＧＹ」は、テクスチャ表面内のグリフ情報のＹ座標であり、「ＧＷ」は、オーバースケールしたグリフデータ長方形の幅であり、「ＧＨ」は、グリフデータ長方形の高さである。
【００９４】
以下に、ブラシテクスチャの頂点を定義する。
0004598367.tif 000008
【００９５】
このセグメントで、「ＢＷＴ」は、ブラシテクスチャ全体の幅であり、「ＢＨＴ」は、ブラシテクスチャ全体の高さであり、「ＢＸ」は、テクスチャ表面内のブラシ情報のＸ座標であり、「ＢＹ」は、テクスチャ表面内のブラシ情報のＹ座標であり、「ＢＷ」は、グリフにマップすべきブラシ表面上の長方形の幅であり、「ＢＨ」は、グリフにマップすべきブラシ表面上の長方形の高さである。
【００９６】
次に、一連の予備ＤｉｒｅｃｔＸ８．１調整ＡＰＩ呼出しをする。レンダリングが、２つのテクスチャステージを伴う。テクスチャステージは、データをテクスチャから取り出し、そのデータを操作することのできるハードウェアの一部である。すべてのテクスチャステージは、平列に働く。テクスチャステージは、フロー内のそれぞれのピクセル上で同じオペレーションを実行する。従来のハードウェアは、０から７までの数によって識別可能な、最大８つのテクスチャステージを含むことができる。
【００９７】
この例では、テクスチャステージ０が、ブラシテクスチャデータを扱う。以下のＤｉｒｅｃｔＸ８．１関数呼出しは、ブラシテクスチャを使用するようテクスチャステージ０に命令する。
0004598367.tif 000009
【００９８】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、計算を行わずに、データをテクスチャから取り出すよう、テクスチャステージ０に指示し、その結果、テクスチャステージ０出力レジスタが、ｂｒｕｓｈ．ｒｇｂ値およびｂｒｕｓｈ．ａ値を含む。
0004598367.tif 000010
【００９９】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、ＴｈｅＶｅｒｔｅｘ構造の第１の組（ｂｘ，ｂｙ）を使用するようテクスチャステージ０に指示する。
0004598367.tif 000011
【０１００】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、テクスチャステージ０に、テクスチャ座標が２次元であることを通知する。
0004598367.tif 000012
【０１０１】
テクスチャステージ１が、グリフテクスチャデータを扱う。したがって、以下のＤｉｒｅｃｔＸ８．１関数呼出しが、グリフテクスチャデータを扱うようテクスチャステージ１に命令する。
0004598367.tif 000013
【０１０２】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、さらなる計算をせずに、テクスチャステージ０からデータを取るよう、テクスチャステージ１のカラーチャネルに指示する。
0004598367.tif 000014
【０１０３】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、第１のアルファ値をテクスチャステージ０から取り、第２のアルファ値をそのテクスチャから取り出し、次いで、これらの２つの値を乗算して、その結果を出力レジスタに伝えるよう、テクスチャステージ１のアルファチャネルに指示する。
0004598367.tif 000015
【０１０４】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、ＴｈｅＶｅｒｔｅｘ構造の第２の組（ｇｘ，ｇｙ）を使用するよう、テクスチャステージ１に指示する。
0004598367.tif 000016
【０１０５】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、テクスチャステージ１に、テクスチャ座標が２次元であることを伝える。
0004598367.tif 000017
D3DTFFF_COUNT2);
【０１０６】
テクスチャステージ１の出力レジスタは、今までのところ、４つの値、ｂｒｕｓｈ．ｒｇｂおよびｂｒｕｓｈ．ａ＊ｇｌｙｐｈ．ａ．を供給することになる。
【０１０７】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、テクスチャステージ２をディセーブルする。
0004598367.tif 000018
【０１０８】
その結果、テクスチャステージ１の出力レジスタは、出力ラスタライザに向けられる。
【０１０９】
出力ラスタライザもまた、宛先ピクセルバッファからデータを取り出し、特定のテクスチャステージＳｔａｔｅからデータを受け入れ、ブレンディングオペレーションを実行し、宛先バッファに戻った結果を格納することのできるハードウェアの一部である。出力ラスタライザもまた、予備調整を必要とする。
【０１１０】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、ブレンディングをイネーブルする。
0004598367.tif 000019
【０１１１】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、テクスチャステージ１から得られた逆アルファ値により、宛先バッファから取り出された色値を乗算するようラスタライザに指示する。
0004598367.tif 000020
「Ｉｎｖｅｒｓｅｄ  ａｌｐｈａ」値とは、１マイナスアルファ値の意味である。
【０１１２】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、これもテクスチャステージ１から得られたアルファ値により、テクスチャステージ１から得られた、色値を乗算するようラスタライザに指示する。
0004598367.tif 000021
その結果、ラスタライザが、数式ｎｅｗｄｓｔ．ｒｇｂ＝ｄｓｔ．ｒｇｂ＊（ｌ  ｓｔａｇｅ．ａ）＋ｓｔａｇｅ．ｒｇｂ＊ｓｔａｇｅ．ａを実行する。ここで、ｓｔａｇｅ．ｒｇｂ＝ｂｒｕｓｈ．ｒｇｂおよびｓｔａｇｅ．ａ＝ｂｒｕｓｈ．ａ＊ｇｌｙｐｈ．ａは、テクスチャステージ１によって計算された値であり、ここで、「ｄｓｔ」および「ｎｅｗｄｓｔ」とは、宛先バッファピクセル値の意味である。
【０１１３】
最後に、これにより、ｎｅｗｄｓｔ．ｒｇｂ＝ｄｓｔ．ｒｇｂ＋（ｂｒｕｓｈ．ｒｇｂ−ｄｓｔ．ｒｇｂ）＊ｂｒｕｓｈ．ａ＊ｇｌｙｐｈ．ａが与えられる。
それにより、ラスタライザが、３つの数、つまり、それぞれ、赤、緑、青のコンポーネントのそれぞれに１つを計算する。しかし、以下に記載する追加設定により、３つのすべてが格納されるわけではない。
【０１１４】
以下のＤｉｒｅｃｔＸ８．１関数呼出しが、Ｄｉｒｅｃｔ３ＤデバイスにＴｈｅＶｅｒｔｅｘ構造のフォーマットを通知する。
0004598367.tif 000022
【０１１５】
次いで、ルーチンが、色成分、赤、緑、青のそれぞれに対して３つのパスを作る。
【０１１６】
以下のコードセグメントが、赤の色成分をレンダリングする。コードには、そのコードに直近の機能を説明するコメントが含まれる。
【０１１７】
0004598367.tif 000023
【０１１８】
以下のコードセグメントが、緑の色成分をレンダリングする。
0004598367.tif 000024
【０１１９】
以下のコードセグメントが、青の色成分をレンダリングする。
0004598367.tif 000025
【０１２０】
したがって、この３パスのレンダリング技術中に、数式ｎｅｗｄｓｔ．ｒｇｂ＝ｄｓｔ．ｒｇｂ＋（ｂｒｕｓｈ．ｒｇｂ−ｄｓｔ．ｒｇｂ）＊ｂｒｕｓｈ．ａ＊ｇｌｙｐｈ．ａが、３回計算された。毎回、同じブラシ値が使用されたが、それぞれのパス上のｇｌｙｐｈ．ａ値は異なっている。完全を期すために、以下のコード行（すなわち、右大括弧）が、単にルーチンを終了する。
｝／／例示ルーチンの終り
【０１２１】
したがって、グリフデータ構造のいくつかの予備操作を行い、かつ３パスを使用してレンダリングを行うことにより、それぞれのパスが、標準でない方式でレンダリングされ、たとえアプリケーションプログラムインターフェイス５１１が、それぞれのピクセルサブコンポーネントを個別の光度ソースとして取り扱うよう設計されていなくとも、ハードウェアグラフィックスユニット５１２は、サブコンポーネント指向レンダリングを行うようにすることができる。したがって、本発明の原理により、それぞれのピクセルサブコンポーネントが、互いに異なるサンプルポイントから生成された個別の光度ソースとして取り扱われる、ディスプレイをレンダリングする場合の、より高い解像度の外観が提供される。その上、ブレンディングなどのオペレーションを、ハードウェアグラフィックスユニットによって行い、それにより、レンダリングプロセスを加速することができる。この説明を検討した後は、他のオペレーションも、ハードウェアグラフィックスユニット５１２を使用してサブコンポーネント指向画像上で実施できることが、当業者なら理解されるであろう。特に、本発明の原理は、ハードウェアアクセラレーションを使用して、背景上で所与のキャラクタをスケールし、回転するために使用できる。
【０１２２】
ここに記述したサブルーチンの例を使用して、値、ｖｅｒｔｉｃｅｓ［ｉ］．ｘおよびｖｅｒｔｉｃｅｓ［ｉ］．ｙを変更することにより、回転やスケーリングなどの効果を得るために、本発明の原理を使用できる。ＤｉｒｅｃｔＸ８．１によって制御されるハードウェアによって自動的に提供されるグリフおよびブラシ変換のためのすべての計算を行って、たとえば、上に列挙したサブルーチンの例を使用することにより、グリフを、画面ウィンドウの所望の区域に置くことができる。画面上のそれぞれのピクセルについては、ハードウェアが、グリフおよびブラシテクスチャ内の対応するポイントを計算する。
【０１２３】
任意のアフィン変換については、頂点の座標は、通常、整数値ではない。その場合、従来のハードウェアは、対応するポイント値をテクスチャから取り出すために、最近整数をインデックスとして使用することがある。しかし、この丸めにより、やや粗いピクチャが作り出される。ピクチャは、４つの最近ポイント間の双線形補間のための計算されたテクスチャ座標の小数部を使用するよう、ハードウェアに強いるためのＤｉｒｅｃｔＸ８．１設定を使用することによって洗練できる。これは、以下のＤｉｒｅｃｔＸ８．１設定によって得られる。
0004598367.tif 000026
【０１２４】
双線形補間により、アニメートされたグリフ画像の平滑な伸張が提供され、視覚的魅力が増す。双線形補間はかなりの計算を必要とするが、従来のハードウェアを使用した場合にも、レンダリング速度は、実質的な影響を受けない。これは、これらの計算が、サブルーチンの例で列挙したＤｉｒｅｃｔＸ８．１関数呼出しを履行するハードウェア部分と平列に働くハードウェアの個別の部分内でなされるためである。
【０１２５】
上述したスケーリング変換は、グリフおよびブラシテクスチャ再構築を必要としない。次のフレームを生成する場合には、座標情報のみが変更される。しかし、スケーリングは、グリフテクスチャが、どのように準備されるのかに関係する。変換を必要としない場合は、図５の色補償ルーチン５０９が使用され、図７の矢印７０２によって表された平均化は使用されない。それと対称的に、変換が適用され、アニメートされた（それぞれのフレーム上で変更された）場合は、色補償ルーチン５０９を先送りし、その代り矢印７０２によって表された平均化を使用することにより、色のちらつき効果が減少できる。ある意味、平均化手順７０２は、グリフをスケールする場合の色バランスを提供する特殊な色補償ルーチンである。
【０１２６】
ブレンディング、スケーリング、回転などの、これらのさまざまなオペレーションは、通常、ソフトウェア内でよりも速いこのようなオペレーションを行うハードウェアグラフィックスユニットの助けを借りて行うことができるため、所与のキャラクタのレンダリングおよびアニメーションを著しく改良できる。
【０１２７】
本発明は、その趣旨または本質的な特性から逸脱することなく、その他の特定の形式で実施することができる。記述した実施形態は、すべてに面において、単に例示のためであり、限定的なものではないと考えるべきである。したがって、本発明の範囲は、上記の説明ではなく、特許請求の範囲によって示される。請求項の均等物の意味および範囲内に含まれるすべての変更形態が、それらの範囲内に包含されるものとする。
【０１２８】
上述したように、サブコンポーネント指向キャラクタのビットマップ表現が、それぞれのピクセルサブコンポーネントを生成するための、単一の画像サンプルを使用することにより生成される。これは、たとえば、キャラクタの表示をオーバースケールし、グリッド上にキャラクタのオーバースケールした表示を置き、次いで、そのグリッド位置で、オーバースケールしたキャラクタのプロパティに基づいて、輝度および恐らくはトランスペアレインシ値をそれぞれのグリッド位置に割り当てることにより達成できる。次いで、キャラクタが、そのキャラクタの最終レンダリングおよびアニメーションを行うハードウェアグラフィックスユニットとインターフェイスをとることによりレンダリングされる。
【０１２９】
【発明の効果】
以上説明したように、本発明によれば、サブコンポーネント指向キャラクタのビットマップ表現が、それぞれのピクセルサブコンポーネントを生成するための単一の画像サンプルを使用することにより生成され、次いで、生成されたキャラクタが、そのキャラクタの最終レンダリングおよびアニメーションを行うハードウェアグラフィックスユニットとインターフェイスをとることによりレンダリングされるので、従来のキャラクタのように、特定のピクセルのすべてのピクセルサブコンポーネントが１つの共通したサンプルポイントから生成されるキャラクタとは異なり、各ピクセルサブコンポーネントを、それ自体の独立したサンプルポイントから生成された独立した輝度強度ソースとして取り扱うことが可能なキャラクタを生成することができ、この生成されたキャラクタによりレンダリングしてアニメートする処理を加速させることが可能となり、これにより、一段と効率的なシステムおよび方法を提供することができる。
【図面の簡単な説明】
【図１】従来の技術に従って、従来のポータブルコンピュータを示す図である。
【図２Ａ】従来の技術に従って、12行および16列のピクセルを有し、それぞれのピクセルが、互いに隣り合って水平に置かれて、垂直ストライピングを形成する、赤、緑、青のピクセルサブコンポーネントを有する、垂直にストライプのあるディスプレイを示す図である。
【図２Ｂ】図2Aのディスプレイの左上の部分をさらに詳細に示す図である。
【図２Ｃ】従来の技術に従って、所与のピクセルに対するそれぞれのピクセルサブコンポーネントが、同じサンプルポイントから生成されることを示す図である。
【図３】それぞれのピクセルサブコンポーネントが互いに異なるそれ自体のサンプルポイントから生成される画像をレンダリングしラスタ化するために使用される、一般的な機能の流れを示す図である。
【図４】本発明のための適切なオペレーティング環境を表す計算環境の一例を示す図である。
【図５】本発明に従って、アプリケーションプログラムインターフェイスを介して関数呼出しを受け取る、アプリケーション、オペレーティングシステム、ハードウェアグラフィックスユニットを含む、本発明の特徴を実施できるシステムを示す図である。
【図６】本発明に従って、キャラクタを背景上でブレンディングすることに関係する、さまざまなデータ構造を示す図である。
【図７】本発明に従って、3パスのレンダリング技術を行うために、図6のグリフデータ構造を処理することに関係する、機能の流れを示す図である。
【符号の説明】
１００  コンピュータ
１０１  ハウジング
１０２  ディスクドライブ
１０３  キーボード
１０４  ディスプレイ
２００  周知のディスプレイ
２０６  赤のサブコンポーネント
２０７  緑のサブコンポーネント
２０８  青のサブコンポーネント
２２０  グリッド
２２２  サンプル
２３２、２３３、２３４  赤、緑、青のピクセルサブコンポーネント
３０１  キャラクタ表示
３０２  スケーリング
３０３  ヒンティング
３０４  スキャン変換
３０５  カラー処理
３１１  要素
３１２  スケールした画像
３１３  スケールしヒンティングした画像
３１４  ビットマップ画像
４２０  コンピュータ
４２１  処理ユニット
４２２  システムメモリ
４２３  システムバス
４２４  読取専用メモリ（ＲＯＭ）
４２５  ランダムアクセスメモリ（ＲＡＭ）
４２６  基本入出力システム（ＢＩＯＳ）
４２７  磁気ハードディスクドライブ
４２８  磁気ディスクドライブ
４２９  取外し可能磁気ディスク
４３０  光学ディスクドライブ
４３１  取外し可能光学ディスク
４３２  ハードディスクドライブインターフェイス
４３３  磁気ディスクドライブインターフェイス
４３４  光学ドライブインターフェイス
４３５  オペレーティングシステム
４３６  アプリケーションプログラム
４３７  他のプログラムモジュール
４３８  プログラムデータ
４３９  磁気ハードディスク
４４０  キーボード
４４２  ポインティングデバイス
４４６  シリアルポートインターフェイス
４４７  モニタ
４４８  ビデオアダプタ
４４９  リモートコンピュータ
４５０  記憶装置デバイス
４５１  ローカルエリアネットワーク（ＬＡＮ）
４５２  ワイドエリアネットワーク（ＷＡＮ）
４５３  アダプタ
４５４  モデム
５００  システム
５０１  ディスプレイ情報
５０２  グラフィックスインターフェイス
５０３  タイプラスタライザ
５０４  キャラクタ表示
５０５  レンダリングおよびラスタ化ルーチン
５０６  スケーリングサブルーチン
５０７  ヒンティングサブルーチン
５０８  スキャン変換サブルーチン
５０９  色補償サブルーチン、または色変換サブルーチン
５１０  適応モジュール
５１１  アプリケーションプログラムインターフェイス
５１２  ハードウェアグラフィックスユニット
７０１、７０２  矢印
７０３  赤のサブコンポーネントのフレームバッファ
７０４  緑のサブコンポーネントのフレームバッファ
７０５  青のサブコンポーネントのフレームバッファ
【図１】
0004598367.tif 000027
【図２Ａ】
0004598367.tif 000028
【図２Ｂ】
0004598367.tif 000029
【図２Ｃ】
0004598367.tif 000030
【図３】
0004598367.tif 000031
【図４】
0004598367.tif 000032
【図５】
0004598367.tif 000033
【図６】
0004598367.tif 000034
【図７】
0004598367.tif 000035