OpenGL-ES2(Java編)

opengl-es2-java.png

Androidの公式ES2.0解説ページ
API-DemosでのOpenGL ES 2.0のサンプルの場所
API-Demos->Graphics->OpenGL ES->OpenGL ES 2.0

GLES1.0と違ってやらなきゃいけないこと

AndroidManifest.xml

<manifest>要素の子として書く。

    <!-- Tell the system this app requires OpenGL ES 2.0. -->
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />

SurfaceView

SurfaceViewのコンストラクタに以下のコードをRendererをセットする前に加える。

// Create an OpenGL ES 2.0 context.
        setEGLContextClientVersion(2);

Androidの公式サンプルだとActivity内でsetrendererするまでにこれを書いているが、それでもいい。

Renderer

import android.opengl.GLES20;

各関数の引数、GL10 gl,をGL10 unusedに変える。
そして関数の中身のglだったものは、GLES20に変える

Activity(GL1でもGL2でもやること)

Activityのメンバ変数に
private MiffySurfaceView mGLView;
を加える。(MiffySurfaceViewはGLSurfaceViewをextendした自作クラス)
コンストラクタの
super.onCreate(savedInstanceState);
の下に
デフォルトだと
setContentView(R.id.activity_main);
みたいになっているところを消して

        mGLView = new MiffySurfaceView(this);
        setContentView(mGLView);

と書く。

ひな形

package com.example.realtimemigration;
 
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
 
public class MainActivity extends Activity {
    private GLSurfaceView mGLView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mGLView = new MiffySurfaceView(this);
        setContentView(mGLView);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
 
}

サポートサイト Wikidot.com