(57)【要約】【課題】  カーブレンダリングを行う方法及びその装置を提供する。【解決手段】  テッセレーションレベルに基づいて、カーブに対応する少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成し、少なくとも２つの第１サブカーブ、及び前記少なくとも１つの三角形をレンダリングする、カーブレンダリングを行う方法である。【選択図】      図１
2018085103.tif 000002
【特許請求の範囲】
【請求項１】
カーブのコントロールポイントに基づいて、前記カーブを分割するテッセレーションレベルを決定する段階と、
前記テッセレーションレベルに基づいて、前記カーブに対応する少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成する段階と、
前記少なくとも２つの第１サブカーブ、及び前記少なくとも１つの三角形をレンダリングする段階と、を含むカーブレンダリングを行う方法。
【請求項２】
前記決定する段階は、
中央処理装置（ＣＰＵ）の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、前記テッセレーションレベルを決定することを特徴とする請求項１に記載の方法。
【請求項３】
前記決定する段階は、
前記中央処理装置の資源使用比率が、前記グラフィック処理装置の資源使用比率より高い場合、前記テッセレーションレベルを低下させ、前記中央処理装置の資源使用比率が、前記グラフィック処理装置の資源使用比率より低いか、あるいはそれと同じである場合、前記テッセレーションレベルを上昇させることを特徴とする請求項２に記載の方法。
【請求項４】
前記生成する段階は、
前記テッセレーションレベルがＮである場合、第（Ｎ−１）サブカーブに対応する少なくとも２つの第Ｎサブカーブ、及び少なくとも１つの三角形を生成し、
前記Ｎは、２以上の自然数を含むことを特徴とする請求項１ないし３のうち何れか一項に記載の方法。
【請求項５】
前記生成する段階は、
De  Casteljauアルゴリズムを利用して、前記カーブを分割することにより、前記少なくとも２つの第１サブカーブを生成することを特徴とする請求項１ないし４のうち何れか一項に記載の方法。
【請求項６】
前記テッセレーションレベルを保存する段階をさらに含むことを特徴とする請求項１ないし５のうち何れか一項に記載の方法。
【請求項７】
前記レンダリングする段階は、
前記少なくとも２つの第１サブカーブと、前記少なくとも１つの三角形とを区分してレンダリングすることを特徴とする請求項１ないし６のうち何れか一項に記載の方法。
【請求項８】
前記レンダリングする段階は、
前記少なくとも２つの第１サブカーブは、ループブリン方式を利用してレンダリングし、前記少なくとも１つの三角形は、グラフィック処理装置のパイプラインを利用してレンダリングすることを特徴とする請求項１ないし７のうち何れか一項に記載の方法。
【請求項９】
前記少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形に対応するデータを保存する段階をさらに含むことを特徴とする請求項１ないし８のうち何れか一項に記載の方法。
【請求項１０】
中央処理装置（ＣＰＵ）の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、テッセレーションレベルを決定する段階と、
前記テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成する段階と、
前記プリミティブデータを利用して、前記カーブをレンダリングする段階と、を含むカーブレンダリングを行う方法。
【請求項１１】
前記決定する段階は、
前記中央処理装置の資源使用比率が、前記グラフィック処理装置の資源使用比率より高い場合、前記テッセレーションレベルを低下させ、前記中央処理装置の資源使用比率が、前記グラフィック処理装置の資源使用比率より低いか、あるいはそれと同じである場合、前記テッセレーションレベルを上昇させることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記テッセレーションレベルは、前記カーブを分割する回数に対応することを特徴とする請求項１０又は１１に記載の方法。
【請求項１３】
前記決定する段階は、
第１カーブのテッセレーションレベルを上昇させるか、あるいは低下させることにより、第２カーブのテッセレーションレベルを決定し、
前記第１カーブは、前記第２カーブ以前にテッセレーションレベルが決定されたカーブを含むことを特徴とする請求項１０ないし１２のうち何れか一項に記載の方法。
【請求項１４】
前記プリミティブデータは、カーブデータ及び三角形データのうち少なくとも一つを含むことを特徴とする請求項１０ないし１３のうち何れか一項に記載の方法。
【請求項１５】
前記生成する段階は、
De  Casteljauアルゴリズムを利用して、前記カーブを分割することにより、前記プリミティブデータを生成することを特徴とする請求項１０ないし１４のうち何れか一項に記載の方法。
【請求項１６】
前記レンダリングする段階は、
前記プリミティブデータを利用して、ループブリン方式を利用したレンダリング、及び前記グラフィック処理装置のパイプラインを利用したレンダリングのうち少なくとも一つを遂行することを特徴とする請求項１０ないし１５のうち何れか一項に記載の方法。
【請求項１７】
前記テッセレーションレベルを保存する段階をさらに含むことを特徴とする請求項１０ないし１６のうち何れか一項に記載の方法。
【請求項１８】
前記プリミティブデータを保存する段階をさらに含むことを特徴とする請求項１０ないし１７のうち何れか一項に記載の方法。
【請求項１９】
第１プロセッシングユニットの資源使用比率が、第２プロセッシングユニットの資源使用比率を超える場合、第１テッセレーションレベルと決定する段階と、
前記第１プロセッシングユニットの資源使用比率が、前記第２プロセッシングユニットの資源使用比率以下である場合、第２テッセレーションレベルと決定する段階と、を含み、
前記第１テッセレーションレベルと前記第２テッセレーションレベルは、互いに異なるカーブレンダリングを行う方法。
【請求項２０】
前記第１プロセッシングユニットは、中央処理装置（ＣＰＵ）を含み、前記第２プロセッシングユニットは、グラフィック処理装置（ＧＰＵ）を含むことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
カーブレンダリングを行うための方法及び装置、コンピュータプログラム並びに記録媒体等に関する。
【背景技術】
【０００２】
本発明は、ベクトルグラフィックス（vector  graphics）または経路レンダリング（path  rendering）を行う場合、グラフィック処理装置（ＧＰＵ：graphics  processing  unit）を利用した加速性能を向上させるための方法が研究されている。該経路レンダリングの場合、入力データが三角形によって構成されず、コマンド（command）と頂点（vertex）との組み合わせによって構成されている。従って、該経路レンダリングを行うとき、ＧＰＵの加速性能を向上させ難い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明が解決しようとする課題は、カーブレンダリングを行う方法及びその装置を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。該解決しようとする技術的課題は、前述のところのような技術的課題に限定されるものではなく、他の技術的課題が存在することができる。
【課題を解決するための手段】
【０００４】
一側面によるカーブレンダリングを行う方法は、カーブのコントロールポイントに基づいて、前記カーブを分割する程度を示すテッセレーションレベル（tessellation  level）を決定する段階と、前記テッセレーションレベルに基づいて、前記カーブに対応する少なくとも２つの第１サブカーブ（sub-curve）、及び少なくとも１つの三角形（triangle）を生成する段階と、前記少なくとも２つの第１サブカーブ、及び前記少なくとも１つの三角形をレンダリングする段階と、を含む。
【０００５】
他の側面によるカーブレンダリングを行う方法は、中央処理装置（ＣＰＵ）の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、テッセレーションレベルを決定する段階と、前記テッセレーションレベルに基づいて、カーブに対応するプリミティブ（primitive）データを生成する段階と、前記プリミティブデータを利用して、前記カーブをレンダリングする段階と、を含む。
【０００６】
さらに他の側面によるカーブレンダリングを行う装置は、カーブのコントロールポイントに基づいて、前記カーブを分割するテッセレーションレベルを決定し、前記テッセレーションレベルに基づいて、前記カーブに対応する少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成するプロセッサを含む。
【０００７】
さらに他の側面によるカーブレンダリングを行う装置は、中央処理装置（ＣＰＵ）の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、テッセレーションレベルを決定し、前記テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成するプロセッサを含む。
【０００８】
さらに他の側面によるカーブレンダリングを行うシステムは、中央処理装置（ＣＰＵ）；及びグラフィック処理装置（ＧＰＵ）を含み、前記中央処理装置は（ＣＰＵ）は、前記中央処理装置の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、テッセレーションレベルを決定し、前記テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成し、前記グラフィック処理装置（ＧＰＵ）は、前記プリミティブデータを利用して、前記カーブをレンダリングする。
【０００９】
さらに他の側面によるカーブレンダリングを行うシステムは、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）を含み、前記中央処理装置（ＣＰＵ）は、前記中央処理装置（ＣＰＵ）の資源使用比率、及びグラフィック処理装置（ＧＰＵ）の資源使用比率を考慮し、テッセレーションレベルを決定し、前記グラフィック処理装置（ＧＰＵ）は、前記テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成し、前記プリミティブデータを利用して、前記カーブをレンダリングする。
【発明の効果】
【００１０】
本発明によれば、中央処理装置（ＣＰＵ）の余裕資源、及びグラフィック処理装置（ＧＰＵ）の余裕資源によって、適応的にテッセレーションレベルが決定される。従って、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）に過度な負荷が発生することを防止し、高速でカーブレンダリングが行われる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態によるグラフィック処理システムの一例を図示した構成図である。
【図２】一実施形態によるカーブレンダリングを行う方法の一例を示すフローチャートである。
【図３Ａ】一実施形態によるカーブの例を説明するための図面である。
【図３Ｂ】一実施形態によるカーブの例を説明するための図面である。
【図４】一実施形態によるテッセレーションレベルの一例について説明するための図面である。
【図５】一実施形態によるプロセッサが、中央処理装置（ＣＰＵ）の資源使用比率(ＵＣＰＵ）及びグラフィック処理装置（ＧＰＵ）の資源使用比率（ＵＧＰＵ）を考慮し、テッセレーションレベルを決定する一例について説明するための図面である。
【図６】一実施形態によるプロセッサが、複数のカーブが順次に入力される場合、テッセレーションレベルを決定する一例について説明するための図面である。
【図７】一実施形態によるプロセッサが、テッセレーションレベルに基づいて、カーブを分割する一例について説明するための図面である。
【図８】一実施形態によるプロセッサが、ド・カステリョ(De  Casteljau)アルゴリズムを利用してカーブを分割する一例について説明するための図面である。
【図９】一実施形態によるプロセッサが、カーブ（または、サブカーブ）と三角形とをレンダリングする一例について説明するための図面である。
【図１０】一実施形態による、カーブレンダリングを行う方法の他の例を示すフローチャートである。
【図１１】一実施形態によるプロセッサの一例を示す構成図である。
【図１２】一実施形態によるグラフィック処理システムの多様な例を示す構成図である。
【図１３】一実施形態によるグラフィック処理システムの多様な例を示す構成図である。
【図１４】一実施形態によるグラフィック処理システムの多様な例を示す構成図である。
【図１５】一実施形態によるグラフィック処理システムの多様な例を示す構成図である。
【発明を実施するための形態】
【００１２】
本発明の実施形態で使用される用語は、本発明での機能を考慮しながら、可能な限り現在汎用されている一般的な用語を選択したが、それは、当業者の意図、判例、または新たな技術の出現などによって相違する可能性がある。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該発明の説明部分において、詳細にその意味を記載する。従って、本発明で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、本発明の全般にわたる内容とを基に定義されるものである。
【００１３】
明細書全体において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…モジュール」というような用語は、少なくとも１つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によっても具現される。
【００１４】
以下では、添付図面を参考し、本発明の実施形態について、本発明が属する技術分野での当業者が容易に実施することができるように詳細に説明する。しかし、本発明は、さまざまに異なる形態に具現され、ここで説明する実施形態に限定されるものではない。
【００１５】
以下、図面を参照し、本発明の実施形態について詳細に説明する。
【００１６】
図１は、一実施形態によるグラフィック処理システムの一例を図示した構成図である。図１を参照すれば、グラフィック処理システム１は、中央処理装置（ＣＰＵ）１０、グラフィック処理装置（ＧＰＵ）２０及び外部メモリ３０を含む。また、中央処理装置（ＣＰＵ）１０は、内部メモリ１１０を含んでもよく、グラフィック処理装置（ＧＰＵ）２０も、内部メモリ１２０を含んでもよい。
【００１７】
中央処理装置（ＣＰＵ）１０は、経路データ（path  data）を利用して、グラフィック処理装置（ＧＰＵ）２０に伝送されるドローコール（draw  call）を生成する。ここで、該経路は、レンダリングの対象である客体を構成する要素（element）を意味する。言い換えれば、該客体は、少なくとも１以上の経路が連結されて形成された閉多角形（closed  polygon）または閉経路（closed  path）を含んでもよい。例えば、該経路は、ライン（line）またはカーブ（curve）が該当する。
【００１８】
グラフィック処理装置（ＧＰＵ）２０は、ドローコールを受信し、内部メモリ１１０または外部メモリ３０に保存されたプリミティブデータ（primitive  data）を利用して、経路レンダリングを行う。言い換えれば、グラフィック処理装置（ＧＰＵ）２０は、プリミティブデータを利用して、フレームに含まれたピクセルそれぞれのカラー値を演算することができる。ここで、該フレームは、画面にディスプレイされるイメージに対応する概念であり、該フレームに含まれたピクセルそれぞれにカラーが設定されることにより、１つのイメージが構成される。
【００１９】
例えば、グラフィック処理装置（ＧＰＵ）２０は、バーテックスシェーダ（vertex  shader）、ラスタライザ（rasterizer）、フラグメントシェーダ（fragment  shader）、ピクセルシェーダ（pixel  shader）及びフレームバッファ（frame  buffer）を含んでもよい。
【００２０】
該プリミティブは、レンダリングに利用されるエレメントを意味する。ある場合には、１つの経路が１以上のプリミティブの連続によっても構成され、カーブのようなプリミティブは、分割された結果、いくつかのプリミティブにもなる。
【００２１】
外部メモリ３０は、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０が動作するのに必要な情報またはデータを保存し、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０がデータを処理した結果を保存する。例えば、外部メモリ３０は、ＤＲＡＭ（dynamic  random  access  memory）でもある。
【００２２】
内部メモリ１１０，１２０は、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０が頻繁に利用するか、あるいは必ず利用すると予想されるデータを保存することができる。例えば、内部メモリ１１０，１２０は、キャッシュメモリ（cache  memory）でもある。
【００２３】
一方、グラフィック処理装置（ＧＰＵ）２０は、ループブリン（Loop-Blinn）方式を利用して、カーブに対するレンダリングを行うことができる。ここで、該ループブリン方式は、カーブのコントロールポイントによって構成される三角形（triangle）内に含まれるピクセルそれぞれが、カーブ内に含まれるか否かということをループブリン方程式により判断する方式であり、ここで、チャールズ・ループ（Charles  Loop）とジム・ブリン（Jim  Blinn）が共同著作した「Resolution  Independent  Curve  Rendering  using  Programmable  Graphics  Hardware」の内容に基づいた方式を意味する。従って、ループブリン方程式が適用されるピクセルの数が多くなるほど、グラフィック処理装置（ＧＰＵ）２０の演算量が増加する。
【００２４】
一方、中央処理装置（ＣＰＵ）１０は、レンダリングが行われるカーブに対して、テッセレーション（tessellation）を行うことができる。ここで、該テッセレーションは、１つのカーブを複数のサブカーブ（sub-curve）で分割する過程を意味する。従って、カーブに対してテッセレーションが多く行われるほど、中央処理装置（ＣＰＵ）１０の演算量が増加する。
【００２５】
一実施形態による、カーブレンダリングを行う方法によれば、テッセレーションレベル決定において、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵが考慮される。ここで、該資源使用比率は、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０の資源総容量のうち、現在使用中である資源比率を意味する。言い換えれば、一実施形態による、カーブレンダリングを行う方法によれば、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵによって、適応的にテッセレーションレベルが決定されるのである。従って、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０に過度な負荷（load）が発生することを防止することができ、高速でカーブレンダリングが行われる。
【００２６】
以下、図２ないし図１０を参照し、カーブレンダリングを行う方法の例について説明する。
【００２７】
図２は、一実施形態による、カーブレンダリングを行う方法の一例を示すフローチャートである。図２に図示されたカーブレンダリングを行う方法は、中央処理装置（ＣＰＵ）１０で行われてもよいし、及び/又は、グラフィック処理装置（ＧＰＵ）２０で行われてもよい。また、図２に図示されたカーブレンダリングを行う方法は、ハードウェアアクセレレータ（hardware  accelerator）でも遂行される。そのとき、該ハードウェアアクセレレータは、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０に埋め込まれたり（embedded）、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０とは別途の独立した装置として存在したりもする。
【００２８】
以下では、説明の便宜のために、プロセッサが図２の方法を遂行するとして説明する。該プロセッサは、中央処理装置（ＣＰＵ）１０、グラフィック処理装置（ＧＰＵ）２０またはハードウェアアクセレレータに含まれてもよい。
【００２９】
２１０段階において、該プロセッサは、カーブのコントロールポイントに基づいて、カーブを分割するテッセレーションレベル（tessellation  level）を決定する。
【００３０】
該カーブは、複数のコントロールポイントによって具現される。例えば、該カーブは、３個のコントロールポイントによって具現される二次カーブ（quadratic  curve）、または４個のコントロールポイントによって具現されるキュービックカーブ（cubic  curve）にもなる。
【００３１】
該テッセレーションレベルは、カーブを分割する回数に対応する。言い換えれば、該テッセレーションレベルが２である場合、該プロセッサは、カーブを２回分割する。そのとき、該プロセッサは、カーブのコントロールポイントに基づいて、カーブを分割する。例えば、該テッセレーションレベルが１である場合、カーブは、２個のサブカーブに分割され、それにより、１個の三角形が生成される。ここで、三角形の頂点のうち２個は、カーブのコントロールポイントのうち２個と同一である。
【００３２】
該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵを考慮し、テッセレーションレベルを決定することができる。具体的には、該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵが、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより高い場合、テッセレーションレベルを上昇させることができる。また、該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵがグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより低いか、あるいはそれと同じである場合、テッセレーションレベルを低下させることができる。
【００３３】
複数のカーブが順次に入力される場合、該プロセッサは、以前に入力されたカーブのテッセレーションレベルを考慮し、その後に入力されたカーブのテッセレーションレベルを決定することができる。例えば、第１カーブのテッセレーションレベルが決定された後、第２カーブのテッセレーションレベルが決定される場合、該プロセッサは、第１カーブのテッセレーションレベルに所定値を増加させるか、あるいは減少させることにより、第２カーブのテッセレーションレベルを決定することができる。ここで、所定値は、０または１以上の自然数にもなる。
【００３４】
以下、図３Ａないし図６を参照し、プロセッサがテッセレーションレベルを決定する例について説明する。
【００３５】
図３Ａ及び図３Ｂは、一実施形態によるカーブの例について説明するための図面である。
【００３６】
図３Ａには、３個のコントロールポイントによって具現された二次カーブの一例（３１０）が図示されており、図３Ｂには、４個のコントロールポイントによって具現されたキュービックカーブの一例（３２０）が図示されている。
【００３７】
図３Ａを参照すれば、カーブ３１０は、カーブ３１０の開始点を決定するコントロールポイントＰ０、カーブの３１０の終了点を決定するコントロールポイントＰ２、及びカーブの形態を決定するコントロールポイントＰ１によっても具現される。また、図３Ｂを参照すれば、カーブ３２０は、開始点を決定するコントロールポイントＰ３、カーブ３２０の終了点を決定するコントロールポイントＰ６、及びカーブの形態を決定するコントロールポイントＰ４，Ｐ５によっても具現される。
【００３８】
経路データには、経路のジオメトリー（geometry）に係わるデータ、及び経路のスタイル（style）に係わるデータが含まれる。例えば、該経路データには、経路に含まれた複数の頂点それぞれの座標に係わる情報、及び頂点を組み合わせて経路を構成するためのコマンド（command）が含まれる。ここで、該頂点は、経路の開始点に対応する頂点、経路の終了点に対応する頂点を含む。該経路がカーブである場合、カーブの形態を決定するコントロールポイントがさらに含まれてもよい。また、該経路データには、経路が表現されるカラーに係わる情報が含まれる。従って、該経路データを参照すれば、経路がラインであるか、あるいはカーブであるかということが分かり、該経路がカーブである場合には、カーブを具現するコントロールポイントが何であるかということが分かる。
【００３９】
プロセッサは、経路データを参照し、カーブ３１０，３２０に対応するコントロールポイントを確認することができる。従って、該プロセッサは、カーブ３１０，３２０のコントロールポイントに基づいて、カーブ３１０，３２０を分割することができる。具体的には、該プロセッサは、カーブ３１０，３２０が分割された結果として生成される三角形の頂点のうち２個がカーブ３１０，３２０のコントロールポイントのうち２個と同一になるように、カーブを分割することができる。
【００４０】
以下、図４を参照し、プロセッサが決定するテッセレーションレベルについて具体的に説明する。
【００４１】
図４は、一実施形態によるテッセレーションレベルの一例について説明するための図面である。図４には、テッセレーションレベルが０、１、２である場合の一例が図示されている。該テッセレーションレベルは、カーブＣ１０が分割される回数に対応する。例えば、テッセレーションレベルが０である場合には、カーブＣ１０は、分割されず、該テッセレーションレベルが１である場合には、カーブＣ１０は、１回分割され、該テッセレーションレベルが２である場合には、カーブＣ１０は、２回分割される。
【００４２】
図４を参照すれば、該テッセレーションレベルが１である場合、カーブＣ１０は、１回分割される。言い換えれば、カーブＣ１０は、２個の第１サブカーブＣ２０，Ｃ２１に分割される。また、カーブＣ１０が分割されることにより、１個の三角形Ｔ１が生成される。そのとき、三角形Ｔ１の２個の頂点は、カーブＣ１０のコントロールポイントＰ３，Ｐ６と同一である。
【００４３】
該テッセレーションレベルが２である場合、カーブＣ１０は、２回分割される。言い換えれば、カーブＣ１０は、４個の第２サブカーブＣ３０，Ｃ３１，Ｃ３２，Ｃ３３に分割される。具体的には、第１サブカーブＣ２０は、第２サブカーブＣ３０，Ｃ３１に分割され、第１サブカーブＣ２１は、第２サブカーブＣ３２，Ｃ３３に分割される。また、カーブＣ１０が２回分割されることにより、３個の三角形Ｔ１，Ｔ２，Ｔ３が生成される。そのとき、三角形Ｔ１の２個の頂点は、カーブＣ１０のコントロールポイントＰ３，Ｐ６と同一であるということは、前述の通りである。
【００４４】
図４には図示されていないが、該テッセレーションレベルが３である場合、カーブＣ１０は、前述の方法によって３回分割され、最終的には、８個の第３サブカーブ、及び７個の三角形が生成される。整理すれば、該テッセレーションレベルがＮ（Ｎは、２以上の自然数）である場合、第（Ｎ−１）サブカーブに対応する少なくとも２つの第Ｎサブカーブ、及び少なくとも１つの三角形が生成される。
【００４５】
該テッセレーションが中央処理装置（ＣＰＵ）１０で行われると仮定すれば、テッセレーションレベルが高くなるほど、中央処理装置（ＣＰＵ）１０の演算量が多くなる。言い換えれば、中央処理装置（ＣＰＵ）１０に多くの負荷が発生する。反対に、テッセレーションレベルが低くなるほど、グラフィック処理装置（ＧＰＵ）２０の演算量が多くなる。従って、プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵをいずれも考慮し、最適のテッセレーションレベルを決定する。
【００４６】
以下、図５を参照し、プロセッサがテッセレーションレベルを決定する例について具体的に説明する。
【００４７】
図５は、一実施形態によるプロセッサが、中央処理装置（ＣＰＵ）の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）の資源使用比率ＵＧＰＵを考慮し、テッセレーションレベルを決定する一例について説明するための図面である。
【００４８】
図５を参照すれば、該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵが、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより高い場合、現在のテッセレーションレベルは高いので、テッセレーションレベルを低下させる。反対に、該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵが、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより低いか、あるいはそれと同じである場合、現在のテッセレーションレベルは低いので、テッセレーションレベルを上昇させる。
【００４９】
例えば、プロセッサは、下記数式（１）に基づいて、テッセレーションレベルを昇降させる。すなわち、数式（１）を満足すれば、テッセレーションレベルを低下させ、数式（１）を満足しない場合、テッセレーションレベルを上昇させる。
【００５０】
【数１】
2018085103.tif 000003
数式（１）で、ＵＣＰＵは中央処理装置（ＣＰＵ）１０の資源使用比率を意味し、ＵＧＰＵは、グラフィック処理装置（ＧＰＵ）２０の資源使用比率を意味する。また、αは、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０を含むシステムの特性及び応用によって決定される値でもあり、ユーザによって設定される値をも意味する。例えば、ＵＣＰＵ及びＵＧＰＵは、０から１までの間の実数であり、αは、０を超える実数でもある。
【００５１】
中央処理装置（ＣＰＵ）１０内において、リアルタイム処理を支援するためには、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵを、決定された割合未満に維持する必要がある。かような場合、α値を１未満の実数値に設定すれば、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵを、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵに比べて小さく維持することができる。反対に、グラフィック処理装置（ＧＰＵ）２０内において、三次元（３Ｄ：３−dimensional）グラフィックスのリアルタイム処理を支援するためには、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵを、決定された比率未満に維持する必要がある。かような場合、α値を１以上の実数値に設定すれば、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵを中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵに比べて小さく維持することができる。該α値は、システムに固定されず、応用によって、その値を動的に変更させることができる。
【００５２】
数式（１）が満足される場合、該プロセッサは、基準値からテッセレーションレベルを一つ低下させる。反対に、数式（１）が満足されない場合、該プロセッサは、基準値からテッセレーションレベルを一つ上昇させる。一方、数式（１）において、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵが急激に低下した場合、該プロセッサは、基準値からテッセレーションレベルを一つ低下させず、テッセレーションレベルを０に変更させることもできる。ここで、該基準値は、以前カーブのテッセレーションレベルを意味する。
【００５３】
以下、図６を参照し、プロセッサが基準値に基づいて、テッセレーションレベルを決定する例について説明する。
【００５４】
図６は、一実施形態によるプロセッサが、複数のカーブが順次に入力される場合、テッセレーションレベルを決定する一例について説明するための図面である。図６には、最初、第１カーブ６１０が入力され、その後、第２カーブ６２０が順次に入力される例が図示されている。言い換えれば、プロセッサが、第１カーブ６１０のテッセレーションレベルを決定した後、第２カーブ６２０のテッセレーションレベルを決定すると仮定する。
【００５５】
図５を参照して説明したように、プロセッサは、基準値から、テッセレーションレベルを上昇させるか、あるいは減少させることにより、カーブ６１０，６２０のテッセレーションレベルを決定することができ、該基準値は、以前カーブのテッセレーションレベルを意味する。ただし、第１カーブ６１０の場合、最初に入力されたカーブであるために、該基準値は、あらかじめ設定された値（例えば、０）にもなる。
【００５６】
プロセッサが、第１カーブ６１０のテッセレーションレベルを１と決定したと仮定すれば、第２カーブ６２０のテッセレーションレベルは、１からｋ（例えば、１）ほど上昇するか、あるいは低下される。例えば、数式（１）が満足されない場合、プロセッサは、第２カーブ６２０のテッセレーションレベルを２（＝１＋１）と決定することができ、数式（１）が満足される場合、プロセッサは、第２カーブ６２０のテッセレーションレベルを０（＝１−１）と決定することができる。
【００５７】
一方、プロセッサは、カーブ６１０，６２０のテッセレーションレベルを保存することができる。例えば、プロセッサは、テッセレーションレベルを示すデータをメモリに伝送して保存することができる。
【００５８】
再び図２を参照すれば、２２０段階において、プロセッサは、テッセレーションレベルに基づいて、カーブに対応する少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成する。
【００５９】
例えば、プロセッサは、De  Casteljauアルゴリズムを利用して、カーブを分割することにより、少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成することができる。
【００６０】
以下、図７ないし図８Ｂを参照し、プロセッサがテッセレーションレベルに基づいて、カーブを分割する一例について説明する。
【００６１】
図７は、一実施形態による、プロセッサがテッセレーションレベルに基づいて、カーブを分割する一例について説明するための図面である。
【００６２】
図７を参照すれば、テッセレーションレベルが０、１、２である場合、カーブＣ０が分割されるか否か及び分割される場合にはどのように分割されるかについての一例が図示されている。まず、テッセレーションレベルが０である場合、カーブＣ０は、分割されないということは、前述の通りである。
【００６３】
テッセレーションレベルが１である場合、カーブＣ０は、１回分割され、それにより、２個の第１サブカーブＣ１，Ｃ２、及び１個の三角形Ｔ１が生成される。プロセッサは、第１サブカーブＣ１，Ｃ２に係わる情報を含む「Curve＿list」を生成し、三角形Ｔ１に係わる情報を含む「Ｔｒｉ＿list」を生成する。
【００６４】
テッセレーションレベルが２である場合、カーブＣ０は、２回分割され、それにより、４個の第２サブカーブＣ３，Ｃ４，Ｃ５，Ｃ６、及び３個の三角形Ｔ１，Ｔ２，Ｔ３が生成される。具体的には、プロセッサは、カーブＣ０を分割し、第１サブカーブＣ１，Ｃ２を生成し、第１サブカーブＣ１，Ｃ２を分割し、第２サブカーブＣ３，Ｃ４，Ｃ５，Ｃ６を生成する。プロセッサは、第２サブカーブＣ３，Ｃ４，Ｃ５，Ｃ６に係わる情報を含む「Curve＿list」を生成し、三角形Ｔ１，Ｔ２，Ｔ３に係わる情報を含む「Ｔｒｉ＿list」を生成する。
【００６５】
一方、プロセッサは、「Curve＿list」及び「Ｔｒｉ＿list」を保存することができる。言い換えれば、プロセッサは、カーブＣ０及びサブカーブＣ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５，Ｃ６に対応するデータ「Curve＿list」、及び三角形Ｔ１，Ｔ２，Ｔ３に対応するデータ「Ｔｒｉ＿list」を保存することができる。例えば、プロセッサは、「Curve＿list」及び「Ｔｒｉ＿list」をメモリに伝送して保存することができる。
【００６６】
以下では、「プリミティブデータ」という用語が使用され、プリミティブデータは、カーブ（または、サブカーブ）に対応するデータ「Curve＿list」、及び三角形に対応するデータ「Ｔｒｉ＿list」を含む。
【００６７】
以下、図８Ａ及び図８Ｂを参照し、プロセッサがカーブを分割する一例について説明する。
【００６８】
図８Ａ及び図８Ｂは、一実施形態による、プロセッサがDe  Casteljauアルゴリズムを利用して、カーブを分割する一例について説明するための図面である。
【００６９】
図８Ａには、分割以前のカーブ８１０が図示されている。また、図８Ｂには、カーブ８１０が分割されたサブカーブ８１１，８１２が図示されている。カーブ８１０のテッセレーションレベルは、１であると仮定する。
【００７０】
プロセッサは、De  Casteljauアルゴリズムに基づいて、カーブ８１０をサブカーブ８１１，８１２に分割することができる。ここで、De  Casteljauアルゴリズムは、１つのベジェ曲線（Bezier  curve）を２以上のベジェ曲線に分割するのに利用されるアルゴリズムを意味する。De  Casteljauアルゴリズムは、当該技術分野での当業者に自明であるので、それに係わる具体的な説明は省略する。
【００７１】
再び図２を参照すれば、２３０段階において、プロセッサは、少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形をレンダリングする。
【００７２】
プロセッサは、カーブ（または、サブカーブ）と三角形とを区分し、レンダリングすることができる。例えば、プロセッサは、カーブ（または、サブカーブ）は、ループブリン方式を利用してレンダリングし、三角形は、グラフィック処理装置（ＧＰＵ）２０のパイプライン（pipe-line）を利用してレンダリングすることができる。
【００７３】
以下、図９を参照し、プロセッサがカーブ（または、サブカーブ）と三角形とをレンダリングする一例について説明する。
【００７４】
図９は、一実施形態による、プロセッサがカーブ（または、サブカーブ）と三角形とをレンダリングする一例について説明するための図面である。図９に図示されているように、プロセッサがカーブＣ１０を分割（テッセレーションレベル＝１）することにより、２個の第１サブカーブＣ２０，Ｃ２１、及び１個の三角形Ｔ１が生成されたと仮定する。
【００７５】
プロセッサは、第１サブカーブＣ２０，Ｃ２１と三角形Ｔ１とを区分してレンダリングする。例えば、プロセッサは、OpenＧＬ  ＡＰＩを呼び出す（すなわち、ドローコール関数を呼び出す）ことにより、第１サブカーブＣ２０，Ｃ２１と三角形Ｔ１とをレンダリングすることができる。プロセッサは、ループブリン方式を利用して、第１サブカーブＣ２０，Ｃ２１をレンダリングし、グラフィック処理装置（ＧＰＵ）２０のパイプラインを利用して、三角形Ｔ１をレンダリングする。そのとき、プロセッサが第１サブカーブＣ２０，Ｃ２１と三角形Ｔ１とをレンダリングする過程は、並列的に進められる。
【００７６】
プロセッサは、プリミティブデータのうち「Curve＿list」を参照し、第１サブカーブＣ２０に対応する候補ピクセルを選択する。例えば、プロセッサは、第１サブカーブＣ２０のコントロールポイントＰ０，Ｐ３，Ｐ４が構成する三角形９１０内のピクセルを候補ピクセルとして選択することができる。そして、プロセッサは、ループブリン方程式を利用して、候補ピクセルのうち、第１サブカーブＣ２０の内部に位置するピクセル９２０を選択する。そして、プロセッサは、ピクセル９２０にカラーを設定することにより、第１サブカーブＣ２０をレンダリングし、その結果をフレームバッファに保存することができる。
【００７７】
また、プロセッサは、第１サブカーブＣ２０をレンダリングする方式と同一に、第１サブカーブＣ２１をレンダリングすることができる。
【００７８】
プロセッサは、プリミティブデータのうち「Ｔｒｉ＿list」を参照し、三角形Ｔ１内のピクセル９４０を選択する。そして、プロセッサは、ピクセル９４０に、カラーを設定することにより、三角形Ｔ１をレンダリングし、その結果をフレームバッファに保存することができる。例えば、「Ｔｒｉ＿list」は、ＧＬ＿TRIANGLE＿STRIP状に構成され、プロセッサは、ドローコール関数を呼び出すことにより、三角形Ｔ１をレンダリングすることができる。
【００７９】
図１０は、一実施形態による、カーブレンダリングを行う方法の他の例を示すフローチャートである。図１０に図示されたカーブレンダリングを行う方法は、中央処理装置（ＣＰＵ）１０でも遂行され、グラフィック処理装置（ＧＰＵ）２０でも遂行される。また、図１０に図示されたカーブレンダリングを行う方法は、ハードウェアアクセレレータ（hardware  accelerator）でも遂行される。そのとき、該ハードウェアアクセレレータは、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０に埋め込まれてもよく（embedded）、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０とは別途の独立した装置として存在してもよい。
【００８０】
以下では、説明の便宜のために、プロセッサが、図１０の方法を遂行するとして説明する。プロセッサは、中央処理装置（ＣＰＵ）１０、グラフィック処理装置（ＧＰＵ）２０またはハードウェアアクセレレータに含まれてもよい。
【００８１】
１０１０段階において、プロセッサは、中央処理装置（ＣＰＵ）１０の余裕資源、及びグラフィック処理装置（ＧＰＵ）２０の余裕資源を考慮し、テッセレーションレベルを決定する。
【００８２】
該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵが、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより高い場合、テッセレーションレベルを低下させることができる。また、該プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵが、グラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵより低いか、あるいはそれと同じである場合、テッセレーションレベルを上昇させることができる。ここで、該テッセレーションレベルは、カーブを分割する回数に対応する。また、該プロセッサは、該テッセレーションレベルをメモリに伝送して保存することができる。
【００８３】
該プロセッサが該テッセレーションレベルを決定する例は、図４ないし図６を参照して説明した通りである。
【００８４】
１０２０段階において、プロセッサは、テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成する。
【００８５】
該プロセッサは、De  Casteljauアルゴリズムを利用して、カーブを分割することにより、サブカーブ及び三角形を生成することができる。該プロセッサは、分割されていないカーブまたはサブカーブに係わる情報を含む「Curve＿list」を生成し、三角形に係わる情報を含む「Ｔｒｉ＿list」を生成する。また、該プロセッサは、プリミティブデータ（「Curve＿list」及び「Ｔｒｉ＿list」）をメモリに伝送して保存することができる。
【００８６】
該プロセッサがプリミティブデータを生成する例は、図７及び図８を参照して説明した通りである。
【００８７】
１０３０段階において、プロセッサは、プリミティブデータを利用して、カーブをレンダリングする。
【００８８】
該プロセッサは、サブカーブと三角形とを区分してレンダリングする。例えば、該プロセッサは、ループブリン方式を利用して、サブカーブをレンダリングし、グラフィック処理装置（ＧＰＵ）２０のパイプラインを利用して、三角形をレンダリングすることができる。そのとき、該プロセッサがサブカーブのレンダリングと、三角形のレンダリングとを並列的に行うことができる。
【００８９】
該プロセッサがカーブをレンダリングする例は、図９を参照して説明した通りである。
【００９０】
図１ないし図１０を参照して説明したところによれば、プロセッサは、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵによって、適応的にテッセレーションレベルが決定することができる。従って、中央処理装置（ＣＰＵ）１０及びグラフィック処理装置（ＧＰＵ）２０に過度な負荷発生を防止することができ、高速でカーブレンダリングが行われる。
【００９１】
図１１は、一実施形態によるプロセッサの１１００一例を示す構成図である。図１１を参照すれば、プロセッサ１１００は、決定部１１１０及び生成部１１２０を含む。プロセッサ１１００は、多数の論理ゲートのアレイによっても具現され、汎用的なマイクロプロセッサと、該マイクロプロセッサで実行されるプログラムが保存されたメモリとの組み合わせによっても具現される。また、他の形態のハードウェアによっても具現されるということは、本実施形態が属する技術分野での当業者であるならば、理解することができるであろう。
【００９２】
決定部１１１０は、カーブのコントロールポイントに基づいて、カーブを分割するテッセレーションレベルを決定する。具体的には、決定部１１１０は、中央処理装置（ＣＰＵ）１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）２０の資源使用比率ＵＧＰＵを考慮し、テッセレーションレベルを決定することができる。そして、決定部１１１０は、テッセレーションレベルをメモリに伝送することができる。
【００９３】
生成部１１２０は、テッセレーションレベルに基づいて、カーブに対応する少なくとも２つの第１サブカーブ、及び少なくとも１つの三角形を生成する。具体的には、生成部１１２０は、テッセレーションレベルに基づいて、カーブに対応するプリミティブデータを生成する。そして、生成部１１２０は、プリミティブデータをメモリに伝送することができる。
【００９４】
図２ないし図１０を参照して説明したところによれば、一実施形態による、カーブレンダリングを行う方法は、プロセッサによって遂行されると説明したが、それに限定されるものではない。言い換えれば、カーブレンダリングを行う方法は、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０でも遂行される。
【００９５】
以下、図１２ないし図１５を参照し、中央処理装置（ＣＰＵ）１０またはグラフィック処理装置（ＧＰＵ）２０がカーブレンダリングを行う例について説明する。
【００９６】
図１２ないし図１５は、一実施形態によるグラフィック処理システムの多様な例を示す構成図である。
【００９７】
図１２及び図１３には、中央処理装置（ＣＰＵ）１２１０，１３１０がプリミティブデータを生成する例が図示されており、図１４及び図１５には、グラフィック処理装置（ＧＰＵ）１４２０，１５２０がプリミティブデータを生成する例が図示されている。
【００９８】
図１２を参照すれば、中央処理装置（ＣＰＵ）１２１０のプロセッサ１２１１は、メモリ１２１２に保存された経路データを参照し、カーブデータを確認する。例えば、プロセッサ１２１１は、経路内にカーブが存在するか否かということを確認することができる。その後、プロセッサ１２１１は、中央処理装置（ＣＰＵ）１２１０の資源使用比率ＵＣＰＵ、及びグラフィック処理装置（ＧＰＵ）１２２０の資源使用比率ＵＧＰＵを考慮し、テッセレーションレベルを決定する。その後、プロセッサ１２１１は、テッセレーションレベルによって、カーブを分割することにより、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を生成する。その後、プロセッサ１２１１は、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」をメモリ１２１２に保存する。その後、プロセッサ１２１１は、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を利用して、ドローコールを生成し、それにより、グラフィック処理装置（ＧＰＵ）１２２０は、カーブレンダリングを行う。
【００９９】
図１３を参照すれば、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」は、中央処理装置（ＣＰＵ）１３１０及びグラフィック処理装置（ＧＰＵ）１３２０の外部に位置するメモリに保存されてもよい。具体的には、図１３のプロセッサ１３１１が遂行する動作は、図１２のプロセッサ１２１１が遂行する動作と同一である。ただし、プロセッサ１３１１は、外部メモリ１３３０に、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を保存することができ、ドローコールを生成するとき、外部メモリ１３３０に保存されたプリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を利用することができる。
【０１００】
図１４及び図１５を参照すれば、プロセッサ１４１１，１５１１がテッセレーションレベルを決定することは、図１２のプロセッサ１２１１の動作と同一である。ただし、プロセッサ１４１１，１５１１は、テッセレーションレベルに基づいたカーブの分割（すなわち、プリミティブデータの生成）を、グラフィック処理装置（ＧＰＵ）１４２０，１５２０に要請することができる。言い換えれば、グラフィック処理装置（ＧＰＵ）１４２０，１５２０のプロセッサ１４２１，１５２１は、テッセレーションレベルによってカーブを分割することにより、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を生成する。
【０１０１】
一方、図１４に図示された例と、図１５に図示された例との差異は、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」が保存される位置が異なるという点である。言い換えれば、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」は、中央処理装置（ＣＰＵ）１４１０のメモリ１４２１にも保存され、グラフィック処理装置（ＧＰＵ）１５２０のメモリ１５２２にも保存される。もしプリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」がメモリ１５２２に保存される場合、プロセッサ１５１１は、メモリ１５２２に保存されたプリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」を利用して、ドローコールを生成することができる。
【０１０２】
また、図１４及び図１５には図示されていないが、プリミティブデータ「Ｔｒｉ＿list」，「Curve＿list」は、中央処理装置（ＣＰＵ）１４１０，１５１０及びグラフィック処理装置（ＧＰＵ）１４２０，１５２０の外部に位置するメモリにも保存される。
【０１０３】
前述のところによれば、中央処理装置（ＣＰＵ）の余裕資源、及びグラフィック処理装置（ＧＰＵ）の余裕資源によって、適応的にテッセレーションレベルが決定される。従って、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）に過度な負荷が発生することを防止することができ、高速でカーブレンダリングが行われる。
【０１０４】
一方、前述の方法は、コンピュータで実行されるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に、さまざまな手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック記録媒体（例えば、ＲＯＭ（read-only  memory）、ＲＡＭ（random  access  memory）、ＵＳＢ（universal  serial  bus）、フロッピー（登録商標）ディスク、ハードディスクなど）；光学的判読媒体（例えば、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ＤＶＤ（digital  versatile  disc）など）のような記録媒体を含む。
【０１０５】
本実施形態に係わる技術分野での当業者は、前述の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならない。本発明の範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異は、本発明に含まれたものであると解釈されなければならないのである。
【産業上の利用可能性】
【０１０６】
本発明の、カーブレンダリングを行う方法及びその装置は、例えば、グラフィックス関連の技術分野に効果的に適用可能である。
【符号の説明】
【０１０７】
１          グラフィック処理システム
１０，１２１０，１３１０，１４１０，１５１０    中央処理装置（ＣＰＵ）
２０，１２２０，１３２０，１４２０，１５２０    グラフィック処理装置（ＧＰＵ）
３０    外部メモリ
１１０，１２０    内部メモリ
１１００，１２１１，１３１１，１４１１，１４２１，１５１１，１５２１    プロセッサ
１１１０    決定部
１１２０    生成部
１２１２，１３１２，１３３０，１４１２，１５１２，１５２２    メモリ
【図１】
2018085103.tif 000004
【図２】
2018085103.tif 000005
【図３Ａ】
2018085103.tif 000006
【図３Ｂ】
2018085103.tif 000007
【図４】
2018085103.tif 000008
【図５】
2018085103.tif 000009
【図６】
2018085103.tif 000010
【図７】
2018085103.tif 000011
【図８】
2018085103.tif 000012
【図９】
2018085103.tif 000013
【図１０】
2018085103.tif 000014
【図１１】
2018085103.tif 000015
【図１２】
2018085103.tif 000016
【図１３】
2018085103.tif 000017
【図１４】
2018085103.tif 000018
【図１５】
2018085103.tif 000019