グラフィックス表示装置
【課題】評価版のグラフィックスソフトウェアを見分けることの出来る処理を施すグラフィックス表示装置を提供する。
【解決手段】VRAMに評価版であることを表示するbitmapのパターンを有するカーソルパターンを格納し、Graphics Display Controller(GDC)の表示レジスタに、カーソルパターンの表示位置等の情報を設定する。GDCの、ハードウェアによってカーソルを表示する処理を使って、bitmapを表示する。カーソルパターンの表示プロセスは、図形の描画実行プロセスと共に呼び出すようにする。
【解決手段】VRAMに評価版であることを表示するbitmapのパターンを有するカーソルパターンを格納し、Graphics Display Controller(GDC)の表示レジスタに、カーソルパターンの表示位置等の情報を設定する。GDCの、ハードウェアによってカーソルを表示する処理を使って、bitmapを表示する。カーソルパターンの表示プロセスは、図形の描画実行プロセスと共に呼び出すようにする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックス表示装置に関する。
【背景技術】
【0002】
従来、評価版と製品版のグラフィックスソフトウェアとを区別する方法は、機能制限を設ける程度の簡易な技術しかなかった。また、従来、評価版グラフィックスソフトウェアのバイナリファイルには不正利用対策が施されていないため、不正に製品に組み込まれても、評価版であることが判別不可能であった。
【0003】
更に、従来手法では、使用しているグラフィックスソフトウェアが評価版であることを表示するbitmapを描画レイヤと同レイヤにソフトウェアで描画することも行われていたが、描画処理速度が遅くなる等の事態が発生していた。
【0004】
すなわち、図1に示す従来技術においては、描画ソフトウェアが描画を行う描画レイヤに、グラフィックスソフトウェアが評価版であることを表示するbitmapを描画していた。ここで、描画とは、表示用メモリに画像データを展開することを示し、表示とは、表示画面に画像を映し出すことを意味する。以下の説明においても同様である。グラフィックスソフトウェアが評価版であることを表示するbitmapを描画レイヤに描画するとは、描画された画像データに上書きするように、bitmapのデータを表示用メモリに書き込むことを意味する。したがって、描画ソフトウェアで描画された描画データは、表示用メモリ上で変更を受けてしまい、描画ソフトウェアで描画された画像を正しく評価することが難しくなると共に、bitmapの描画処理が図形の描画処理に追加されるので、描画処理が遅くなるという事態を引き起こす。
【0005】
図2及び図3は、従来技術の描画処理フローである。
図2において、最初に、ステップS10において、図形描画ルーチンが呼び出され、図形の描画コマンドが生成される。次に、ステップS11において、グラフィックスソフトウェアが評価版であることを表示するbitmapを描画する。ここでは、bitmapの描画のための描画コマンドを生成する。ステップS12において、描画フラッシュ関数を呼び出し、生成された描画コマンドを実行して、描画を行う。図3にあるように、ステップS12の描画フラッシュ関数は、ステップS15において、描画フラッシュ処理を行うものであるが、ユーザアプリケーションから呼び出されるものである。描画フラッシュ関数を呼び出すことで、図形の描画が開始されるため、ユーザは、描画を行う場合には、必ず呼び出さなければならない関数である。
【0006】
特許文献1には、装置IDとソフトウェアコードに埋め込まれた装置IDとを照合し、照合結果に基づいて、ソフトウェアの使用の可否を判断する、ソフトウェアの不正使用を防止する方法が開示されている。
【0007】
特許文献2には、カーソルを表示するための制御回路が開示されている。
【特許文献1】特開2001−265581号公報
【特許文献2】特開平1−169487号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明の課題は、評価版のグラフィックスソフトウェアを見分けることの出来る処理を施すグラフィックス表示装置を提供することである。
【課題を解決するための手段】
【0009】
本発明のグラフィックス表示装置は、図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示装置において、該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納する格納部と、該表示パターンの表示の仕方を示すパラメータを格納する表示レジスタと、ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する表示部とを備える。
【発明の効果】
【0010】
本発明によれば、評価版のグラフィックスソフトウェアを見分けることの出来る処理を施すグラフィックス表示装置を提供することができる。
【発明を実施するための最良の形態】
【0011】
本発明の実施形態においては、図4に示されるように、ソフトウェアで絵を描画する描画レイヤとは別に、カーソルを表示する処理に関連するカーソルレイヤに、ハードウェアを用いて、グラフィックスソフトウェアが評価版であることを表示するbitmapを表示する。すなわち、bitmapを、カーソルを表示する機能(ハードウェアによる表示処理)を使って、表示する。
【0012】
具体的には、以下の機能を備える。
・評価版であることを示すbitmapをカーソル番号0と1(2つのカーソルが表示可能として、カーソルをカーソル番号0と1で特定しているものとする)に設定し、常に一定の位置に表示する。カーソル表示はハードウェア(Graphics Display Controller、以下GDCと略す)が行うため、ソフトウェアの動作とは独立してカーソル表示を行うことが出来、ソフトウェアの描画機能と性能への悪影響はない。
・カーソルパターンはVRAMに配置する。
・グラフィックスソフトウェアが評価版であることを表示するbitmapを表示するタイミングは、以下の描画フラッシュ関数がそれぞれ一定間隔で呼ばれる都度。たとえば100回毎であれば、0、100、200・・・のタイミングで表示する。念のため、ユーザが違法な回避処理を入れていないか、抜き打ちで関連する表示レジスタをチェックして、変更されていた場合は、後述の値を再設定する。
【0013】
<描画フラッシュ関数>
- eglSwapBuffers
- glFlush
- glFinish
上記描画フラッシュ関数は、以下のような意味を持っている。
【0014】
(1)eglSwapBuffers
書式:EGLBoolean eglSwapBuffers(EGLDisplay display, EGLSurface surface);
引数:display EGLDisplayを指定する。
surface EGLウインドウサーフェースを指定する。
説明:BackバッファとFrontバッファを交換する。
補足:EGLは、OpenGL ESと下位ネイティブプラットフォームが提供するウィンドウシステムとの間のインタフェースである。OpenGL ES(OpenGL for Embedded Systems)は、組み込み用途向けOpenGLのサブセット版グラフィックスライブラリである。
【0015】
(2)glFlush
書式:void glFlush(void);
説明:以前に発行したOpenGL ESコマンドの実行を強制的に開始する。これにより、こ
れらのコマンドが有限時間内で完了することが保証される。
【0016】
(3)glFinish
書式:void glFinish(void);
説明:これまでに発行されたOpenGL ESコマンドを全て強制的に完了させる。本関数は、発行済みコマンドの実行が完全に完了するまで戻らない。
【0017】
更に、以下のような機能を備える。
・ユーザがアプリケーションで、カーソル表示をOffにしたり、画面外に座標を設定したり、パレット(カーソルの表示色の設定)を透明色にしたりして、プロテクトが外されることを考慮して、以下の値を再設定する。以下の括弧内の名称はGDCのレジスタ名(後述)である。
- カーソル番号0,1アドレス(CUOA0、CUOA1)
- カーソル番号0,1座標(CUY0_CUX0、CUY1_CUX1)
- カーソルレイヤパレット(L0PAL0〜L0PAL7)※8色程度
- カーソルレイヤイネーブル(DLS)
- メインメモリからVRAMへカーソルパターンをコピーする
- カーソル表示On(CPM_CUTC)
【0018】
以上の構成により、グラフィックスソフトウェアが評価版であることを表示するbitmapをハードウェアで表示するため、ソフトウェアの描画性能への悪影響を最小限に抑えられる。つまり評価版でも製品版とほぼ同等の性能評価ができる。
【0019】
また、評価版グラフィックスソフトウェアが不正に製品に組み込まれても、評価版であることが一意に分かるようになり、不正利用を抑止できる。
更に、製品版グラフィックスソフトウェアの購入検討を不正利用者に促すことができる。
【0020】
本実施形態では、どんな不正対策がされてもカーソル表示状態を永続的に迂回することは不可能なため、確実に不正利用されているか否かが目視確認できる。
図5は、本発明の実施形態のグラフィックス表示装置のシステム構成図である。
【0021】
CPU10は、メインメモリ11、VRAM13、GDC14とバス12によって接続されている。メインメモリ11には、グラフィックスソフトウェアが評価版であることを表示するbitmapのパターンを有する、カーソルのオリジナルパターンが格納される。VRAM13には、ハードウェア表示用カーソルパターンと描画レイヤを格納する。メインメモリ11にあるオリジナルカーソルパターンは、一定間隔ごとにVRAM13にコピーされる。GDC14は、VRAM13にあるカーソルパターンと描画レイヤを参照し、それぞれを表示する。特に、GDC14は、カーソルパターンを読み込み、カーソルパターンの表示を、GDC14に内蔵されている処理回路によるハードウェア処理によって行う。ハードウェア処理による表示は、表示レジスタ16に書き込まれたデータにしたがって行われる。表示レジスタ16は、カーソルアドレス、カーソル座標、カーソルレイヤパレット(色指定)、カーソルレイヤイネーブル、カーソル表示Onの情報が登録される。LCDなどの表示装置15は、オリジナルカーソルパターンで表されるbitmapと共に、描画データを表示画面に表示する。
【0022】
図6は、GDCの表示レジスタのレジスタ名を示す図である。
レジスタCPM_CUTCには、カーソル表示Onを示すビットが設定される。レジスタCUOA0には、カーソル番号0のカーソルパターンのアドレスが設定される。レジスタCUY0_CUX0には、カーソル番号0のカーソルの表示位置座標が設定される。レジスタCUOA1には、カーソル番号1のカーソルパターンのアドレスが、設定される。レジスタCUY1_CUX1には、カーソル番号1のカーソルの表示位置座標が設定される。カーソル番号0と1のカーソルの座標は、固定した位置に互いに並べて1つのbitmapを表示するように設定する。レジスタDLSには、カーソルレイヤイネーブルが設定される。グラフィックスソフトウェアが評価版であることを表示するbitmapを表示する場合には、カーソルレイヤがイネーブルに設定される。レジスタL0PAL0〜LOPAL7には、カーソルレイヤパレット番号0〜7の設定が行われる。これは、カーソルパターンの表示色を設定するものである。
【0023】
図7及び図8は、カーソル表示のためのハードウェア(GDC)の動作を説明する図である。
GDCは、図7に示されるような、VRAMにある描画レイヤの描画データを、内蔵の表示処理部(ハードウェア)によって表示する。次に、表示レジスタに適切な値を設定する。GDCは、VRAMに配置されたカーソルパターンと、表示レジスタ内の情報とを参照して、内蔵の処理部によってカーソルを表示する。描画ソフトウェアによる描画は、VRAMに描画データを展開し、GDCがこれを処理することによって表示が行われる。一方、GDCのハードウェアの表示処理は、表示レジスタに設定されたパラメータとVRAMに格納されるbitmapを指定することによって行われる。すなわち、ハードウェアによる表示は、bitmapとパラメータを指定することにより、ハードウェアがこれらを読み、画像を組み立てて、表示装置に表示するものである。
【0024】
本実施形態の場合、表示レジスタのカーソル番号0座標レジスタにカーソル番号0のカーソルの左上隅の座標を設定し、表示レジスタのカーソル座標1レジスタにカーソル番号1のカーソルの左上隅の座標を設定する。また、表示レジスタのカーソル番号0アドレスレジスタに、VRAMに格納されているカーソル番号0用カーソルパターンのアドレスを設定する。同じく、表示レジスタのカーソル番号1アドレスレジスタに、VRAMに格納されているカーソル番号1用カーソルパターンのアドレスを設定する。更に、カーソルレイヤパレットにカーソルパターンの色を設定する。カーソルレイヤパレットの例としては、RR=RED、GG=GREEN、BB=BLUEとして、L0PAL0〜L0PAL7に、0x00RRGGBBで指定される色を設定する。図8の例では、L0PAL0には、0x00ff0000(赤色)、L0PAL1には、0x0000ff00(緑色)、L0PAL2には、0x000000ff(青色)、L0PAL3には、0x00ff0000(赤色)、L0PAL4には、0x0000ff00(緑色)、L0PAL5には、0x000000ff(青色)、L0PAL6には、0x00ffffff(白色)、L0PAL7には、0x00000000(黒色)が設定されている。
【0025】
図9〜図12は、本発明の実施形態の処理フローである。
図9は、全体処理のフローである。全体処理がスタートすると、ステップS20において、図形描画ルーチンが起動する。この図形描画ルーチンでは、画面に表示する図形を描画するための描画コマンドを生成する。ステップS21において、描画フラッシュ関数を実行する。この描画フラッシュ関数の実行により、ステップS20において生成された描画コマンドが実行され、図形が描画される。ステップS22において、図形描画が終了したか否かが判断される。ステップS22の判断がNoの場合には、ステップS20に戻って、図形の描画を続ける。ステップS22の判断がYesの場合には、全体処理を終了する。本実施形態では、従来技術と異なり、bitmapの描画は、描画フラッシュ関数の実行の中で行われるため、全体処理のフローである図9には、bitmapを描画するためのステップは存在しない。
【0026】
図10は、描画フラッシュ関数の実行フローチャートである。ステップS23において、描画フラッシュ処理が行われ、図形が描画される。次に、ステップS24において、bitmap表示ルーチンが実行される。描画フラッシュ関数は、図形を描画するために必ず実行することが必要であるので、描画フラッシュ関数内部にbitmap表示ルーチンを組み込むことにより、図形を描画するときは必ずbitmapの表示も行われることとなる。
【0027】
図11は、bitmap表示ルーチンの実行フローチャートである。ステップS30において、EVAカウンタに一定間隔値を設定する。一定間隔値は、bitmap表示ルーチンがはじめて呼び出されたときに設定されるもので、任意に値を設定可能である。EVAカウンタは、bitmap表示ルーチンが呼び出されるたびにカウントアップするカウンタで、bitmap表示ルーチンが一定間隔値だけ呼び出されるたびに、新たにカーソルパターンで表示されるbitmapの表示処理を行うものである。このように、一定間隔ごとに、グラフィックスソフトウェアが評価版であることを表示するbitmapを表示しなおすことにより、ユーザによるbitmap非表示化処理を一定間隔ごとに無効化する効果を有する。ステップS31において、EVAカウンタが一定間隔値以上となったか否かが判断される。ステップS31の判断がYesの場合には、ステップS33に進む。ステップS31の判断がNoの場合には、ステップS32において、経過時間が一定値を超えていて、かつ、表示レジスタ内の値が変更されているか否かを判断する。ステップS32の判断がYesの場合には、ステップS33に進み、Noの場合には、ステップS35に進む。ステップS32では、前回のカーソルによるbitmap(カーソルbitmap)の表示からの経過時間が一定値を超えているか否かを判断している。これは、カーソルbitmapを一定時間毎に新たに表示しなおすことを意味する。bitmap表示ルーチンが一定回数呼び出される度に、カーソルbitmapを表示しなおしているが、一定間隔値が知られてしまうと、bitmapを表示させないためにはbitmap非表示化処理を一定間隔ごとに適用すればよいことが分かってしまう。そこで、bitmap非表示化処理を無効にする効果をより確かにするために、システムに搭載されているクロックを使って、一定時間経った場合にも、カーソルbitmapの再表示を行うようにするものである。また、表示レジスタ内の値が変更されているか否かを調べるのは、カーソルbitmapの表示内容が変更され、カーソルbitmapが表示されないように変更されている場合を検出するものである。ステップS33では、EVAカウンタを0にリセットし、ステップS34において、カーソルbitmap表示ルーチンを実行する。ステップS35において、EVAカウンタを1だけカウントアップし、bitmap表示ルーチンを終了する。
【0028】
図12は、カーソルbitmap表示ルーチンの実行フローチャートである。ステップS40において、カーソルアドレスを表示レジスタに設定し、ステップS41において、カーソル座標設定を表示レジスタに行う。ステップS42において、表示レジスタのカーソルレイヤパレットを設定し、ステップS43において、カーソルレイヤイネーブルを設定する。ステップS44において、メインメモリからVRAMにカーソルパターンをコピーし、ステップS45において、カーソル表示をOnにする。これらのステップは、すべて、表示レジスタに値を設定するものであり、カーソルの表示は、GDCのハードウェアが行う。表示レジスタに各値を設定し、カーソルパターンがVRAMにコピーされると、ハードウェアが自動的にこれらの情報を読み込んで、カーソル表示を行うので、ステップS40〜S45の処理の順番は、特に限定されない。
【0029】
以上のように、カーソルbitmapの表示を描画フラッシュ関数の呼び出しルーチンの中で行うことにより、ユーザが図形を表示したいときは、常にカーソルbitmapが表示されるようにすることが出来る。
【0030】
図13は、bitmap表示機能を解除する機能を実現するための処理フローである。
bitmap表示機能を解除する機能を実現するために、プロテクト解除関数を設ける。図13(a)にあるように、プロテクト解除関数の引数に予め決められたコードを指定してプロテクト解除関数を呼び出す。ステップS40において、プロテクト解除コードに引数を設定する。そして、図13(b)に示されるように、描画フラッシュ関数に、ステップS42を追加する。ステップS42では、プロテクト解除関数によって設定されたプロテクト解除コードが有効か否かを判断する。ステップS42の判断がNoの場合には、bitmap表示ルーチンを呼び出し、カーソルbitmapを表示する。ステップS42の判断がYesの場合には、カーソルbitmapを表示しないで、描画フラッシュ関数の実行を終了するようにする。この機能を設けておくことにより、製品版のグラフィックスソフトウェアを、bitmapを表示するようにして評価版として提供し、製品の購入と共に、bitmap表示を解除して、正規の製品版とすることが出来る。
【0031】
図14は、本発明の実施形態を適用したグラフィックスソフトウェアの表示例である。
ティーポットの表示画面の左上に、使用しているグラフィックスソフトウェアが評価版であることを示すbitmapが表示されている。前述したように、このbitmapは、ティーポットの描画が行われるプロセスの中で、ハードウェア処理により表示処理がなされる。ハードウェアを使うので、ソフトウェアによる描画処理が遅くなることも無い。また、ティーポットの描画プロセス中でbitmapが表示されるので、ティーポットのような図形が描画される際には、常に、bitmapが表示されるようになる。更に、前述したように、一定間隔、及び、一定時間毎に、bitmapを表示するようにしたので、bitmap非表示化処理を無効化する効果も有する。また、bitmapはハードウェアによって直接表示され、ティーポットなどの描画された絵の描画データ自体は変更を受けないので、描画データをそのまま取り出すことが出来、描画される絵の評価を楽に行うことが出来る。
【図面の簡単な説明】
【0032】
【図1】従来技術を説明する図である。
【図2】従来技術の描画処理フロー(その1)である。
【図3】従来技術の描画処理フロー(その2)である。
【図4】本発明の実施形態の概念を説明する図である。
【図5】本発明の実施形態のグラフィックス表示装置のシステム構成図である。
【図6】GDCの表示レジスタのレジスタ名を示す図である。
【図7】カーソル表示のためのハードウェア(GDC)の動作を説明する図(その1)である。
【図8】カーソル表示のためのハードウェア(GDC)の動作を説明する図(その2)である。
【図9】本発明の実施形態の処理フロー(その1)である。
【図10】本発明の実施形態の処理フロー(その2)である。
【図11】本発明の実施形態の処理フロー(その3)である。
【図12】本発明の実施形態の処理フロー(その4)である。
【図13】bitmap表示機能を解除する機能を実現するための処理フローである。
【図14】本発明の実施形態を適用したグラフィックスソフトウェアの表示例である。
【符号の説明】
【0033】
10 CPU
11 メインメモリ
12 バス
13 VRAM
14 Graphics Display Controller(GDC)
【技術分野】
【0001】
本発明は、グラフィックス表示装置に関する。
【背景技術】
【0002】
従来、評価版と製品版のグラフィックスソフトウェアとを区別する方法は、機能制限を設ける程度の簡易な技術しかなかった。また、従来、評価版グラフィックスソフトウェアのバイナリファイルには不正利用対策が施されていないため、不正に製品に組み込まれても、評価版であることが判別不可能であった。
【0003】
更に、従来手法では、使用しているグラフィックスソフトウェアが評価版であることを表示するbitmapを描画レイヤと同レイヤにソフトウェアで描画することも行われていたが、描画処理速度が遅くなる等の事態が発生していた。
【0004】
すなわち、図1に示す従来技術においては、描画ソフトウェアが描画を行う描画レイヤに、グラフィックスソフトウェアが評価版であることを表示するbitmapを描画していた。ここで、描画とは、表示用メモリに画像データを展開することを示し、表示とは、表示画面に画像を映し出すことを意味する。以下の説明においても同様である。グラフィックスソフトウェアが評価版であることを表示するbitmapを描画レイヤに描画するとは、描画された画像データに上書きするように、bitmapのデータを表示用メモリに書き込むことを意味する。したがって、描画ソフトウェアで描画された描画データは、表示用メモリ上で変更を受けてしまい、描画ソフトウェアで描画された画像を正しく評価することが難しくなると共に、bitmapの描画処理が図形の描画処理に追加されるので、描画処理が遅くなるという事態を引き起こす。
【0005】
図2及び図3は、従来技術の描画処理フローである。
図2において、最初に、ステップS10において、図形描画ルーチンが呼び出され、図形の描画コマンドが生成される。次に、ステップS11において、グラフィックスソフトウェアが評価版であることを表示するbitmapを描画する。ここでは、bitmapの描画のための描画コマンドを生成する。ステップS12において、描画フラッシュ関数を呼び出し、生成された描画コマンドを実行して、描画を行う。図3にあるように、ステップS12の描画フラッシュ関数は、ステップS15において、描画フラッシュ処理を行うものであるが、ユーザアプリケーションから呼び出されるものである。描画フラッシュ関数を呼び出すことで、図形の描画が開始されるため、ユーザは、描画を行う場合には、必ず呼び出さなければならない関数である。
【0006】
特許文献1には、装置IDとソフトウェアコードに埋め込まれた装置IDとを照合し、照合結果に基づいて、ソフトウェアの使用の可否を判断する、ソフトウェアの不正使用を防止する方法が開示されている。
【0007】
特許文献2には、カーソルを表示するための制御回路が開示されている。
【特許文献1】特開2001−265581号公報
【特許文献2】特開平1−169487号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明の課題は、評価版のグラフィックスソフトウェアを見分けることの出来る処理を施すグラフィックス表示装置を提供することである。
【課題を解決するための手段】
【0009】
本発明のグラフィックス表示装置は、図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示装置において、該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納する格納部と、該表示パターンの表示の仕方を示すパラメータを格納する表示レジスタと、ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する表示部とを備える。
【発明の効果】
【0010】
本発明によれば、評価版のグラフィックスソフトウェアを見分けることの出来る処理を施すグラフィックス表示装置を提供することができる。
【発明を実施するための最良の形態】
【0011】
本発明の実施形態においては、図4に示されるように、ソフトウェアで絵を描画する描画レイヤとは別に、カーソルを表示する処理に関連するカーソルレイヤに、ハードウェアを用いて、グラフィックスソフトウェアが評価版であることを表示するbitmapを表示する。すなわち、bitmapを、カーソルを表示する機能(ハードウェアによる表示処理)を使って、表示する。
【0012】
具体的には、以下の機能を備える。
・評価版であることを示すbitmapをカーソル番号0と1(2つのカーソルが表示可能として、カーソルをカーソル番号0と1で特定しているものとする)に設定し、常に一定の位置に表示する。カーソル表示はハードウェア(Graphics Display Controller、以下GDCと略す)が行うため、ソフトウェアの動作とは独立してカーソル表示を行うことが出来、ソフトウェアの描画機能と性能への悪影響はない。
・カーソルパターンはVRAMに配置する。
・グラフィックスソフトウェアが評価版であることを表示するbitmapを表示するタイミングは、以下の描画フラッシュ関数がそれぞれ一定間隔で呼ばれる都度。たとえば100回毎であれば、0、100、200・・・のタイミングで表示する。念のため、ユーザが違法な回避処理を入れていないか、抜き打ちで関連する表示レジスタをチェックして、変更されていた場合は、後述の値を再設定する。
【0013】
<描画フラッシュ関数>
- eglSwapBuffers
- glFlush
- glFinish
上記描画フラッシュ関数は、以下のような意味を持っている。
【0014】
(1)eglSwapBuffers
書式:EGLBoolean eglSwapBuffers(EGLDisplay display, EGLSurface surface);
引数:display EGLDisplayを指定する。
surface EGLウインドウサーフェースを指定する。
説明:BackバッファとFrontバッファを交換する。
補足:EGLは、OpenGL ESと下位ネイティブプラットフォームが提供するウィンドウシステムとの間のインタフェースである。OpenGL ES(OpenGL for Embedded Systems)は、組み込み用途向けOpenGLのサブセット版グラフィックスライブラリである。
【0015】
(2)glFlush
書式:void glFlush(void);
説明:以前に発行したOpenGL ESコマンドの実行を強制的に開始する。これにより、こ
れらのコマンドが有限時間内で完了することが保証される。
【0016】
(3)glFinish
書式:void glFinish(void);
説明:これまでに発行されたOpenGL ESコマンドを全て強制的に完了させる。本関数は、発行済みコマンドの実行が完全に完了するまで戻らない。
【0017】
更に、以下のような機能を備える。
・ユーザがアプリケーションで、カーソル表示をOffにしたり、画面外に座標を設定したり、パレット(カーソルの表示色の設定)を透明色にしたりして、プロテクトが外されることを考慮して、以下の値を再設定する。以下の括弧内の名称はGDCのレジスタ名(後述)である。
- カーソル番号0,1アドレス(CUOA0、CUOA1)
- カーソル番号0,1座標(CUY0_CUX0、CUY1_CUX1)
- カーソルレイヤパレット(L0PAL0〜L0PAL7)※8色程度
- カーソルレイヤイネーブル(DLS)
- メインメモリからVRAMへカーソルパターンをコピーする
- カーソル表示On(CPM_CUTC)
【0018】
以上の構成により、グラフィックスソフトウェアが評価版であることを表示するbitmapをハードウェアで表示するため、ソフトウェアの描画性能への悪影響を最小限に抑えられる。つまり評価版でも製品版とほぼ同等の性能評価ができる。
【0019】
また、評価版グラフィックスソフトウェアが不正に製品に組み込まれても、評価版であることが一意に分かるようになり、不正利用を抑止できる。
更に、製品版グラフィックスソフトウェアの購入検討を不正利用者に促すことができる。
【0020】
本実施形態では、どんな不正対策がされてもカーソル表示状態を永続的に迂回することは不可能なため、確実に不正利用されているか否かが目視確認できる。
図5は、本発明の実施形態のグラフィックス表示装置のシステム構成図である。
【0021】
CPU10は、メインメモリ11、VRAM13、GDC14とバス12によって接続されている。メインメモリ11には、グラフィックスソフトウェアが評価版であることを表示するbitmapのパターンを有する、カーソルのオリジナルパターンが格納される。VRAM13には、ハードウェア表示用カーソルパターンと描画レイヤを格納する。メインメモリ11にあるオリジナルカーソルパターンは、一定間隔ごとにVRAM13にコピーされる。GDC14は、VRAM13にあるカーソルパターンと描画レイヤを参照し、それぞれを表示する。特に、GDC14は、カーソルパターンを読み込み、カーソルパターンの表示を、GDC14に内蔵されている処理回路によるハードウェア処理によって行う。ハードウェア処理による表示は、表示レジスタ16に書き込まれたデータにしたがって行われる。表示レジスタ16は、カーソルアドレス、カーソル座標、カーソルレイヤパレット(色指定)、カーソルレイヤイネーブル、カーソル表示Onの情報が登録される。LCDなどの表示装置15は、オリジナルカーソルパターンで表されるbitmapと共に、描画データを表示画面に表示する。
【0022】
図6は、GDCの表示レジスタのレジスタ名を示す図である。
レジスタCPM_CUTCには、カーソル表示Onを示すビットが設定される。レジスタCUOA0には、カーソル番号0のカーソルパターンのアドレスが設定される。レジスタCUY0_CUX0には、カーソル番号0のカーソルの表示位置座標が設定される。レジスタCUOA1には、カーソル番号1のカーソルパターンのアドレスが、設定される。レジスタCUY1_CUX1には、カーソル番号1のカーソルの表示位置座標が設定される。カーソル番号0と1のカーソルの座標は、固定した位置に互いに並べて1つのbitmapを表示するように設定する。レジスタDLSには、カーソルレイヤイネーブルが設定される。グラフィックスソフトウェアが評価版であることを表示するbitmapを表示する場合には、カーソルレイヤがイネーブルに設定される。レジスタL0PAL0〜LOPAL7には、カーソルレイヤパレット番号0〜7の設定が行われる。これは、カーソルパターンの表示色を設定するものである。
【0023】
図7及び図8は、カーソル表示のためのハードウェア(GDC)の動作を説明する図である。
GDCは、図7に示されるような、VRAMにある描画レイヤの描画データを、内蔵の表示処理部(ハードウェア)によって表示する。次に、表示レジスタに適切な値を設定する。GDCは、VRAMに配置されたカーソルパターンと、表示レジスタ内の情報とを参照して、内蔵の処理部によってカーソルを表示する。描画ソフトウェアによる描画は、VRAMに描画データを展開し、GDCがこれを処理することによって表示が行われる。一方、GDCのハードウェアの表示処理は、表示レジスタに設定されたパラメータとVRAMに格納されるbitmapを指定することによって行われる。すなわち、ハードウェアによる表示は、bitmapとパラメータを指定することにより、ハードウェアがこれらを読み、画像を組み立てて、表示装置に表示するものである。
【0024】
本実施形態の場合、表示レジスタのカーソル番号0座標レジスタにカーソル番号0のカーソルの左上隅の座標を設定し、表示レジスタのカーソル座標1レジスタにカーソル番号1のカーソルの左上隅の座標を設定する。また、表示レジスタのカーソル番号0アドレスレジスタに、VRAMに格納されているカーソル番号0用カーソルパターンのアドレスを設定する。同じく、表示レジスタのカーソル番号1アドレスレジスタに、VRAMに格納されているカーソル番号1用カーソルパターンのアドレスを設定する。更に、カーソルレイヤパレットにカーソルパターンの色を設定する。カーソルレイヤパレットの例としては、RR=RED、GG=GREEN、BB=BLUEとして、L0PAL0〜L0PAL7に、0x00RRGGBBで指定される色を設定する。図8の例では、L0PAL0には、0x00ff0000(赤色)、L0PAL1には、0x0000ff00(緑色)、L0PAL2には、0x000000ff(青色)、L0PAL3には、0x00ff0000(赤色)、L0PAL4には、0x0000ff00(緑色)、L0PAL5には、0x000000ff(青色)、L0PAL6には、0x00ffffff(白色)、L0PAL7には、0x00000000(黒色)が設定されている。
【0025】
図9〜図12は、本発明の実施形態の処理フローである。
図9は、全体処理のフローである。全体処理がスタートすると、ステップS20において、図形描画ルーチンが起動する。この図形描画ルーチンでは、画面に表示する図形を描画するための描画コマンドを生成する。ステップS21において、描画フラッシュ関数を実行する。この描画フラッシュ関数の実行により、ステップS20において生成された描画コマンドが実行され、図形が描画される。ステップS22において、図形描画が終了したか否かが判断される。ステップS22の判断がNoの場合には、ステップS20に戻って、図形の描画を続ける。ステップS22の判断がYesの場合には、全体処理を終了する。本実施形態では、従来技術と異なり、bitmapの描画は、描画フラッシュ関数の実行の中で行われるため、全体処理のフローである図9には、bitmapを描画するためのステップは存在しない。
【0026】
図10は、描画フラッシュ関数の実行フローチャートである。ステップS23において、描画フラッシュ処理が行われ、図形が描画される。次に、ステップS24において、bitmap表示ルーチンが実行される。描画フラッシュ関数は、図形を描画するために必ず実行することが必要であるので、描画フラッシュ関数内部にbitmap表示ルーチンを組み込むことにより、図形を描画するときは必ずbitmapの表示も行われることとなる。
【0027】
図11は、bitmap表示ルーチンの実行フローチャートである。ステップS30において、EVAカウンタに一定間隔値を設定する。一定間隔値は、bitmap表示ルーチンがはじめて呼び出されたときに設定されるもので、任意に値を設定可能である。EVAカウンタは、bitmap表示ルーチンが呼び出されるたびにカウントアップするカウンタで、bitmap表示ルーチンが一定間隔値だけ呼び出されるたびに、新たにカーソルパターンで表示されるbitmapの表示処理を行うものである。このように、一定間隔ごとに、グラフィックスソフトウェアが評価版であることを表示するbitmapを表示しなおすことにより、ユーザによるbitmap非表示化処理を一定間隔ごとに無効化する効果を有する。ステップS31において、EVAカウンタが一定間隔値以上となったか否かが判断される。ステップS31の判断がYesの場合には、ステップS33に進む。ステップS31の判断がNoの場合には、ステップS32において、経過時間が一定値を超えていて、かつ、表示レジスタ内の値が変更されているか否かを判断する。ステップS32の判断がYesの場合には、ステップS33に進み、Noの場合には、ステップS35に進む。ステップS32では、前回のカーソルによるbitmap(カーソルbitmap)の表示からの経過時間が一定値を超えているか否かを判断している。これは、カーソルbitmapを一定時間毎に新たに表示しなおすことを意味する。bitmap表示ルーチンが一定回数呼び出される度に、カーソルbitmapを表示しなおしているが、一定間隔値が知られてしまうと、bitmapを表示させないためにはbitmap非表示化処理を一定間隔ごとに適用すればよいことが分かってしまう。そこで、bitmap非表示化処理を無効にする効果をより確かにするために、システムに搭載されているクロックを使って、一定時間経った場合にも、カーソルbitmapの再表示を行うようにするものである。また、表示レジスタ内の値が変更されているか否かを調べるのは、カーソルbitmapの表示内容が変更され、カーソルbitmapが表示されないように変更されている場合を検出するものである。ステップS33では、EVAカウンタを0にリセットし、ステップS34において、カーソルbitmap表示ルーチンを実行する。ステップS35において、EVAカウンタを1だけカウントアップし、bitmap表示ルーチンを終了する。
【0028】
図12は、カーソルbitmap表示ルーチンの実行フローチャートである。ステップS40において、カーソルアドレスを表示レジスタに設定し、ステップS41において、カーソル座標設定を表示レジスタに行う。ステップS42において、表示レジスタのカーソルレイヤパレットを設定し、ステップS43において、カーソルレイヤイネーブルを設定する。ステップS44において、メインメモリからVRAMにカーソルパターンをコピーし、ステップS45において、カーソル表示をOnにする。これらのステップは、すべて、表示レジスタに値を設定するものであり、カーソルの表示は、GDCのハードウェアが行う。表示レジスタに各値を設定し、カーソルパターンがVRAMにコピーされると、ハードウェアが自動的にこれらの情報を読み込んで、カーソル表示を行うので、ステップS40〜S45の処理の順番は、特に限定されない。
【0029】
以上のように、カーソルbitmapの表示を描画フラッシュ関数の呼び出しルーチンの中で行うことにより、ユーザが図形を表示したいときは、常にカーソルbitmapが表示されるようにすることが出来る。
【0030】
図13は、bitmap表示機能を解除する機能を実現するための処理フローである。
bitmap表示機能を解除する機能を実現するために、プロテクト解除関数を設ける。図13(a)にあるように、プロテクト解除関数の引数に予め決められたコードを指定してプロテクト解除関数を呼び出す。ステップS40において、プロテクト解除コードに引数を設定する。そして、図13(b)に示されるように、描画フラッシュ関数に、ステップS42を追加する。ステップS42では、プロテクト解除関数によって設定されたプロテクト解除コードが有効か否かを判断する。ステップS42の判断がNoの場合には、bitmap表示ルーチンを呼び出し、カーソルbitmapを表示する。ステップS42の判断がYesの場合には、カーソルbitmapを表示しないで、描画フラッシュ関数の実行を終了するようにする。この機能を設けておくことにより、製品版のグラフィックスソフトウェアを、bitmapを表示するようにして評価版として提供し、製品の購入と共に、bitmap表示を解除して、正規の製品版とすることが出来る。
【0031】
図14は、本発明の実施形態を適用したグラフィックスソフトウェアの表示例である。
ティーポットの表示画面の左上に、使用しているグラフィックスソフトウェアが評価版であることを示すbitmapが表示されている。前述したように、このbitmapは、ティーポットの描画が行われるプロセスの中で、ハードウェア処理により表示処理がなされる。ハードウェアを使うので、ソフトウェアによる描画処理が遅くなることも無い。また、ティーポットの描画プロセス中でbitmapが表示されるので、ティーポットのような図形が描画される際には、常に、bitmapが表示されるようになる。更に、前述したように、一定間隔、及び、一定時間毎に、bitmapを表示するようにしたので、bitmap非表示化処理を無効化する効果も有する。また、bitmapはハードウェアによって直接表示され、ティーポットなどの描画された絵の描画データ自体は変更を受けないので、描画データをそのまま取り出すことが出来、描画される絵の評価を楽に行うことが出来る。
【図面の簡単な説明】
【0032】
【図1】従来技術を説明する図である。
【図2】従来技術の描画処理フロー(その1)である。
【図3】従来技術の描画処理フロー(その2)である。
【図4】本発明の実施形態の概念を説明する図である。
【図5】本発明の実施形態のグラフィックス表示装置のシステム構成図である。
【図6】GDCの表示レジスタのレジスタ名を示す図である。
【図7】カーソル表示のためのハードウェア(GDC)の動作を説明する図(その1)である。
【図8】カーソル表示のためのハードウェア(GDC)の動作を説明する図(その2)である。
【図9】本発明の実施形態の処理フロー(その1)である。
【図10】本発明の実施形態の処理フロー(その2)である。
【図11】本発明の実施形態の処理フロー(その3)である。
【図12】本発明の実施形態の処理フロー(その4)である。
【図13】bitmap表示機能を解除する機能を実現するための処理フローである。
【図14】本発明の実施形態を適用したグラフィックスソフトウェアの表示例である。
【符号の説明】
【0033】
10 CPU
11 メインメモリ
12 バス
13 VRAM
14 Graphics Display Controller(GDC)
【特許請求の範囲】
【請求項1】
図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示装置において、
該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納する格納部と、
該表示パターンの表示の仕方を示すパラメータを格納する表示レジスタと、
前記図形描画とは別個の、ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する表示部と、
を備えることを特徴とするグラフィックス表示装置。
【請求項2】
前記表示部は、前記表示パターンの表示を、前記図形の描画の実行プロセス内で実行することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項3】
前記表示部は、前記図形の描画の実行プロセスが所定回呼び出されるたびに、前記表示パターンの表示プロセスを実行することを特徴とする請求項2に記載のグラフィックス表示装置。
【請求項4】
前記表示部は、所定時間経過ごとに、前記表示パターンの表示プロセスを実行することを特徴とする請求項3に記載のグラフィックス表示装置。
【請求項5】
前記表示部に、所定のコードが設定された場合、前記表示パターンの表示を停止させることを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項6】
前記表示レジスタは、少なくとも、前記表示パターンの前記格納手段内のアドレス、該表示パターンの表示位置座標、該表示パターンの色設定のパラメータを格納することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項7】
前記ハードウェア処理によってカーソルを表示する機能は、前記表示レジスタに前記パラメータを格納することによって、稼動することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項8】
前記表示パターンを表示するルーチンを、CPUによる描画レイヤから切り離し、CPUと異なる前記表示部の制御配下にすることを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項9】
図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示方法において、
該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納し、
該表示パターンの表示の仕方を示すパラメータを格納し、
ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する、
ことを特徴とするグラフィックス表示方法。
【請求項1】
図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示装置において、
該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納する格納部と、
該表示パターンの表示の仕方を示すパラメータを格納する表示レジスタと、
前記図形描画とは別個の、ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する表示部と、
を備えることを特徴とするグラフィックス表示装置。
【請求項2】
前記表示部は、前記表示パターンの表示を、前記図形の描画の実行プロセス内で実行することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項3】
前記表示部は、前記図形の描画の実行プロセスが所定回呼び出されるたびに、前記表示パターンの表示プロセスを実行することを特徴とする請求項2に記載のグラフィックス表示装置。
【請求項4】
前記表示部は、所定時間経過ごとに、前記表示パターンの表示プロセスを実行することを特徴とする請求項3に記載のグラフィックス表示装置。
【請求項5】
前記表示部に、所定のコードが設定された場合、前記表示パターンの表示を停止させることを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項6】
前記表示レジスタは、少なくとも、前記表示パターンの前記格納手段内のアドレス、該表示パターンの表示位置座標、該表示パターンの色設定のパラメータを格納することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項7】
前記ハードウェア処理によってカーソルを表示する機能は、前記表示レジスタに前記パラメータを格納することによって、稼動することを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項8】
前記表示パターンを表示するルーチンを、CPUによる描画レイヤから切り離し、CPUと異なる前記表示部の制御配下にすることを特徴とする請求項1に記載のグラフィックス表示装置。
【請求項9】
図形の描画を行うグラフィックスソフトウェアが評価版であることを示す表示を行うグラフィックス表示方法において、
該グラフィックスソフトウェアが評価版であることを示す表示パターンを格納し、
該表示パターンの表示の仕方を示すパラメータを格納し、
ハードウェア処理によってカーソルを表示する機能によって、該パラメータに指定された表示の仕方で、該表示パターンを表示する、
ことを特徴とするグラフィックス表示方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2010−152430(P2010−152430A)
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願番号】特願2008−326800(P2008−326800)
【出願日】平成20年12月24日(2008.12.24)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願日】平成20年12月24日(2008.12.24)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】
[ Back to top ]