com.docomostar.opt.ui.eruption
インタフェース GraphicsEruption


public interface GraphicsEruption

com.docomostar.opt.ui.eruption パッケージによる 3D 描画を Star の描画フレームワーク内で行うための機能を提供するインタフェースです。

com.docomostar.opt.ui.eruption パッケージによる 3D 描画をサポートする Graphics クラスは、 このインタフェースを実装しなければなりません。

端末によって、このインタフェースが実装された Graphics オブジェクトで、 このインタフェースのメソッドがサポートされていない場合があります。 未サポートの場合、メソッドが呼び出された時点で UnsupportedOperationException が発生します。

com.docomostar.opt.ui.eruption パッケージによる 3D 描画では、内部で OpenGL® ES の機能を 使用して描画が行われます。このインターフェースで定義される beginEruption() と endEruption()により、 OpenGL® ES の使用開始・終了を宣言し、その使用区間内で com.docomostar.opt.ui.eruption パッケージによる描画を行います。

3Dと2Dの共存方法
com.docomostar.opt.ui.eruption パッケージによる 3D 描画と com.docomostar.ui.Graphics による 2D 描画の呼び出しは混在させることができません。 そこで 3D 描画と 2D 描画の切り替えを beginEruption() と endEruption() で明示的に行う必要があります。

アプリケーションは com.docomostar.opt.ui.eruption パッケージによる 3D 描画を開始する際に beginEruption() を呼び出します。
この間の 2D 描画は正常に描画されません。
3D 描画要求を終了した後、 endEruption() を呼び出すことにより、その後の 2D 描画は 3D 描画の上に描き重ねることが 可能となります。
逆に beginEruption()〜endEruption()間以外で com.docomostar.opt.ui.eruption パッケージの API を呼び出した場合、 その呼び出しによる動作も不定です。

3D の反映タイミング

com.docomostar.opt.ui.eruption パッケージが内部で使用する OpenGL® ES は通常、関数 eglSwapBuffers() の呼び出しにより画面への反映を行いますが、GraphicsEruption では endEruption() 呼び出し後に画面への反映が行われます。実際の反映タイミングは機種依存となります。 但し、2D 描画と同様に Graphics.lock() により Graphics がロックされている場合、Graphics.unlock(boolean) 時に反映されます。

その他の 3D 描画との競合

com.docomostar.opt.ui.eruption による 3D 描画と、従来の com.docomostar.ui.graphics3d.Graphics3D 及び com.docomostar.opt.ui.j3d.Graphics3D による描画は 同時に使用することはできません。
先発優先となり、最初に使用された 3D グラフィクス機能が有効になります。

com.docomostar.ui.ogl.GraphicsOGL との競合

com.docomostar.ui.ogl.GraphicsOGL の beginDrawing() から endDrawing() の区間と、 本クラスの描画開始メソッドbeginEruption()から描画終了メソッドendEruption() の区間は相互に排他されます。一方の区間に他方の beginメソッド を呼び出すと、 OpenGL® ES による描画が不可能な場合に発生する例外 IllegalStateException が発生します。 ただし、上記区間が入れ子にならなければ、GraphicsOGL による描画と com.docomostar.opt.ui.eruption パッケージによる描画を重ねることが可能ですが、描画内容は保証されません。 GraphicsOGL による描画を行った後で、com.docomostar.opt.ui.eruption パッケージで描画する場合は、 Graphics3D.syncContext()を呼び出してOpenGL® ES の 状態を初期化してから行う必要があります。

コード例

 UserCanvas extends StereoscopicCanvas {

     public void paint(Graphics g) {

         GraphicsOGL ogl = (GraphicsOGL)g;
         GraphicsEruption ge = (GraphicsEruption)g; // GraphicsEruptionインターフェースを実装している。
         com.docomostar.opt.ui.eruption.Graphics3D erpg3d
            = com.docomostar.opt.ui.eruption.Graphics3D.getInstance();

         ogl.beginDrawing();

         [GraphicsOGLによる描画]

         ogl.endDrawing(); // GraphicsOGL.beginDrawing - endDrawingと
                           // GraphicsEruption.beginEruption - endEruptionは入れ子にできないので
                           // GraphicsOGLの使用終了を宣言する。

         ge.beginEruption();

         erpg3d.syncContext(); // GraphicsOGLで描画した後で com.docomostar.opt.ui.eruption パッケージの API で描画する時は明示的に初期化する。

         [erpg3d(com.docomostar.opt.ui.eruption パッケージの API)による描画]

         ge.endEruption();


         [beginEruption - endEruptionの外で com.docomostar.opt.ui.eruption パッケージの API が呼ばれたら例外発生]

    }
 }

 Display.setCurrent(new UserCanvas());
 
 


メソッドの概要
 void beginEruption()
           com.docomostar.opt.ui.eruption パッケージによる描画開始を宣言します。
 void endEruption()
           com.docomostar.opt.ui.eruption パッケージによる描画終了を宣言します。
 

メソッドの詳細

beginEruption

void beginEruption()

com.docomostar.opt.ui.eruption パッケージによる描画開始を宣言します。

endEruption()を呼び出す前にこのメソッドが 2 度以上呼ばれた場合、2 度目以降は無視されます。

例外:
com.docomostar.lang.IllegalStateException -
OpenGL® ES による描画が不可能な場合に発生します。
com.docomostar.lang.IllegalStateException -
com.docomostar.ui.graphics3d.Graphics3D 及び com.docomostar.opt.ui.j3d.Graphics3D による描画を行った後に呼び出した場合に発生します。
com.docomostar.lang.IllegalStateException -
StereoscopicCanvas 左右描画方式において、 このメソッドを呼び出した場合に発生します。

endEruption

void endEruption()

com.docomostar.opt.ui.eruption パッケージによる描画終了を宣言します。

beginEruption()と対にならずに呼ばれた場合、この処理は無視されます。



NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。