読者です 読者をやめる 読者になる 読者になる

GLSurfaceViewの使い方

android sdk1.5から入ったOpenGL ESを簡単に使うためのクラス。
以下、使い方の手順

プロジェクト作成

eclipseでいつもどおりのやり方でプロジェクトを作成。
f:id:kambayashi:20090715003701j:image

GLRendererクラス作成

新規クラスでGLRendererを作成する。
インターフェースでandroid.opengl.GLSurfaceView.Rendererをくっつける。
メソッドスタブの作成で継承された抽象メソッドにチェックを入れておく。
f:id:kambayashi:20090715013246j:image
f:id:kambayashi:20090715003657j:image

onSurfaceChanged()の中に以下の処理を追加

gl.glViewport(0, 0, width, height);

ActivityクラスにGLSurfaceViewインスタンス作成

GLSurfaceViewのインスタンスを作成して、
setRenderer()で先ほど作ったGLRendererインスタンスをセットする。

public class GLActivity extends Activity {
	//OpenGLESビュー
	private GLSurfaceView mGLSurfaceView;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        
        //GLサーフェイスビューを作成して設定
        mGLSurfaceView = new GLSurfaceView(this);
        mGLSurfaceView.setRenderer(new GLRenderer());
        setContentView(mGLSurfaceView);
    }
}

ActivityでonPause(),onResume()をオーバーライドする

eclipse補完入力を使えば簡単。
内部でGLSurfaceViewインスタンスのonPause(),onResume()を呼び出すようにする。

GLRendererのonDrawFrameに画面クリア処理を書く

onDrawFrame()に、引数で渡されるGL操作ハンドルを使って以下の処理を追加。

gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); //画面クリアカラー設定
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); //画面クリア

終わり

ここまで作って実行すると画面が真っ赤になる。
今後のandroidのOpenGL ESのサンプルはこれを土台に作っていく。

●●確認●●

glClearColorの引数を変えてみる

glClearColor()は画面クリア時の色を設定する関数で、
引数は前から順に、赤の強さ、緑の強さ、青の強さ、不透明度を表す。
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);