いよいよ難関のOpenGLです。
難しそうですが、ちょっと挑戦してみることにします。
素人が勉強がてらに書いてみたものですが、参考になればと思います(`・ω・´)
OpenGLを使うにはGLSurfaceViewという特別なViewを利用します。
名前的にSurfaceViewの親戚みたいなものなんでしょうか。
何はともあれ、最初はActivityに追加するところから始めます(^ω^)
GLSurfaceViewの派生クラスをActivityに追加
GLSurfaceViewの派生クラスSampleGlViewを作り、アクティビティのonCreateでインスタンスを生成。
onResume,onPauseで同名の関数を呼び出すようにします。
・SampleActivity.java
SampleGlView glView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); glView = new SampleGlView(this); setContentView(glView); } @Override protected void onResume(){ super.onResume(); glView.onResume(); } @Override protected void onPause(){ super.onPause(); glView.onPause(); }
Rendererインターフェースを実装したオブジェクトをセット
次にGLSurfaceViewの派生クラスSampleGlViewを作成します。
このViewの中で Renderer というインターフェイスを実装したオブジェクトをセットします。
れんだらー?と最初は聞きなれない単語に戸惑いましたが、
レンダリング(描画)を行う為のオブジェクトなのでレンダラーというみたいです。
・SampleGlView.java
import android.content.Context; import android.opengl.GLSurfaceView; public class SampleGlView extends GLSurfaceView { SampleRenderer renderer; public SampleGlView(Context context) { super(context); renderer = new SampleRenderer(); setRenderer( renderer ); } }
Rendererの関数(onSurfaceCreated、onSurfaceChanged、onDrawFrame)を実装する
SampleRendererを作成します。インポートするもの
import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.opengl.GLSurfaceView.Renderer;
SampleRendererの中では、onSurfaceCreated、onSurfaceChanged、onDrawFrame関数を作成します。
・SampleRenderer.java
public class SampleRenderer implements Renderer{ @Override public void onDrawFrame(GL10 gl) { } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { } }
SurfaceViewを作成して描画処理をやったので名前でピンと来ました、
onSurfaceCreatedは初期化時、
onSurfaceChangedは画面変更時(横向き、縦向きの変化)に呼び出されます。
そしてonDrawFrame。
これが描画処理を行う関数のようです。
SurfaceViewの時に使ったRun関数みたいなものでしょうか。
とりあえずは今回はここまでです(´ω`)
次回は描画処理の方法を紹介したいです。
ピンバック: 【Android】アンドロイドでOpenGLを使ってみる(2Dテクスチャ描画編) | 桜花満開
ピンバック: 【Android】アンドロイドでOpenGLを使ってみる(2Dアニメーション編) | 桜花満開
ピンバック: 【Androidアプリ開発】オープンソースゲームエンジン「Andengine」を導入してみる | 桜花満開/テンシホタル