クラス概要

クラス概要




DrawDeviceクラスはOpenGLの初期化、設定を行うクラスです。
アンドロイドのOpenGLはアクティビティと密接に関わっているので
その仕様に合わせて設計します。

まず、OpenGLを使用するアクティビティを確認しましょう。

OpenGLを使うアクティビティ
public class OpenGlActivity extends Activity
{
    //  コンストラクタ
    public  OpenGlActivity()
    {
        super();

        m_View  = null;
    }

    //  作成
    @Override
    public void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );

        m_View  = new GLSurfaceView( this );
        m_View.setRenderer( this );

        setContentView( m_View );
    }

    //  再開
    @Override
    public void onResume()
    {
        super.onResume();

        m_View.onResume();
    }

    //  一時停止
    @Override
    public void onPause()
    {
        m_View.onPause();

        super.onPause();
    }

    //  サーフェイスが作られた
    @Override
    public void onSurfaceCreated( GL10 gl, EGLConfig config )
    {
        //  ここでOpenGL初期化
    }

    //  サーフェイスのサイズが変わった
    @Override
    public void onSurfaceChanged( GL10 gl, int width, int height )
    {
        //  ここでビューポート設定
    }

    //  描画フレーム
    @Override
    public void onDrawFrame( GL10 gl )
    {
        //  ここで毎フレーム描画
    }



    private GLSurfaceView   m_View;
}

重要なのは onSurfaceCreated()、onSurfaceChanged()、onDrawFrame() です。
OpenGLを操作するのは各メソッドに渡ってきている”GL10”クラスです。
このクラスをアクティビティが管理しているのでDrawDeviceクラスが持つのは危険ですね。
なので、各メソッドでGL10を渡すようにします。
とりあえず用意するメソッドはこのようなメソッドです。

Create()
OpenGLの初期化
onSurfaceCreated()で呼び出す。
UpdateDrawArea()
ビューポートの設定
onSurfaceChanged()で呼び出す。
Begin()
フレーム毎の描画開始の宣言。
onDrawFrame()で呼び出す。
ここでGL10をDrawDeviceに持たせる。
そうすることによってフレーム中の描画がGL10を気にせず行えるようになる。
End()
フレーム毎の描画終了宣言。
onDrawFrame()で呼び出す。
Begin()で持っていたGL10をここで開放しておく。

具体的な内容は次から説明していきます。



<前のページ
次のページ>