サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > OpenGLでGLES1.0じゃなくGLES20を使った一番簡単なサンプル@tryGLES2000a
Google Play AAKAKAxSOFTへ

OpenGLでGLES1.0じゃなくGLES20を使った一番簡単なサンプル@tryGLES2000a

実行ファイル(APK)やサンプル(zip)をダウンロードする
tryGLES2000aの実行イメージ

GLES2.0のテストプログラム
塗りつぶすだけでほかには何もしない。

— 気をつけること
定義してあるGLSurfaceViewCustをmain.xmlのビューに直接書き込んである

スクリーンのタイトルはlayout/main.xmlのGraphical Layoutの右上の「Theme」と
書いてあるコンボボックスから「Theme.noTitleBar」を選ぶことで消すことができる

OpenGLのバージョンの設定
setRendererする前にsetEGLContextClientVersionで設定する

— 関連項目
GLSurfaceView
GLSurfaceView.Renderer
onPause
onResume
Theme.noTitleBar
setEGLContextClientVersion

///////////////////////////////////////////////////////////////////////////
package trial.sample.trygles2000a;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import trial.sample.trygles20.R;

import android.app.Activity;
import android.content.Context;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.AttributeSet;

public class TryGLES2000AActivity extends Activity {
    
    private GLSurfaceViewCust mGlView;  // 関連づけるGLSurfaceView
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        ///////////////////////////////////////////////////////////////////////////
        // main.xml内のビューと関連づける
        this.mGlView = (GLSurfaceViewCust)this.findViewById(R.id.glsurfaceviewcust1);
        ///////////////////////////////////////////////////////////////////////////
    }

    /** 電話がかかってきたり、最前面から外れたときに呼ばれる */
    @Override
    protected void onPause() {
        super.onPause();
        
        ///////////////////////////////////////////////////////////////////////////
        // GLSurfaceViewを止める(画面が出てないときは停止)
        this.mGlView.onPause();
        ///////////////////////////////////////////////////////////////////////////
    }

    /** アクティビティが開始、再開されたときに呼ばれる */
    @Override
    protected void onResume() {
        super.onResume();
        
        ///////////////////////////////////////////////////////////////////////////
        // GLSurfaceViewを再開する(画面がでたら再開)
        this.mGlView.onResume();
        ///////////////////////////////////////////////////////////////////////////
    }
    
}


///////////////////////////////////////////////////////////////////////////
// GLSurfaceViewの拡張
class GLSurfaceViewCust extends GLSurfaceView {

    private GLRenderer mRenderer;   // GLSurfaceViewに登録するレンダラー
    
    // コンストラクタ
    public GLSurfaceViewCust(Context context) {
        super(context);
        this.init(context);
    }

    // コンストラクタ
    public GLSurfaceViewCust(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.init(context);
    }
    
    /** 初期化する */
    private void init(Context context) {

        // 描画オブジェクトの登録
        this.mRenderer = new GLRenderer();
        ///////////////////////////////////////////////////////////////////////////
        // OpenGL ES 2.0を指定する
        // このタイミングで無いとエラー出る
        this.setEGLContextClientVersion(2);
        ///////////////////////////////////////////////////////////////////////////
        this.setRenderer(this.mRenderer);
    }
    
}


///////////////////////////////////////////////////////////////////////////
// GLSurfaceView.Renderer拡張
class GLRenderer implements GLSurfaceView.Renderer {
    
    /** 毎フレーム呼ばれる */
    public void onDrawFrame(GL10 gl) {
        ///////////////////////////////////////////////////////////////////////////
        // GL10が引数についてるけどGLES2.0を使うので無視してGLES20系の物を使う
        ///////////////////////////////////////////////////////////////////////////
        // 背景をクリア
        GLES20.glClearColor(0.3f, 0.3f, 0.3f, 1.0f);
        // 各バッファのクリア
        GLES20.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    }

    public void onSurfaceChanged(GL10 gl, int width, int height) {
        // TODO 自動生成されたメソッド・スタブ
        
    }

    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        // TODO 自動生成されたメソッド・スタブ
        
    }
}
APKファイルをダウンロード サンプルプロジェクトをダウンロード

, , , ,

Androidでメニューボタンの処理サンプル@tryMenuButton00 AndroidのGLES20(OpenGL)を使ってポリゴンを表示するサンプル@tryGLES2001

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>