Android 4.0(API Level 14)からTextureViewというViewが登場し、OpenGL ESの応用範囲が格段に広くなりましたが、GLSurfaceViewに相当する補助クラスが未だに登場していません。
Google的には必要ないという考えかもしれませんが、SurfaceViewよりもTextureViewでOpenGL ESを扱ったほうが非常に楽なため、俺俺GLTextureViewクラスを公開しました。
詳細はREADME.mdにも記述されています。
GLSurfaceViewとの相違点
使い方はGLSurfaceViewとほぼ変わりありません。 ですが、おおまかに次の点が異なります。
- リソース解放用にonSurfaceDestroy()を追加した
- requestRender()の設計が異なる
- 初期化用のメソッド名が異なる
- 基本的にEnumを定義し、それをメソッドへ渡すようにしています
サンプルコード
- githubには次のサンプルがコミットされています
例えば、GLTextureViewでOpenGL ES 2.0を初期化し、レンダリングスレッドを作成するコードは次のようになります。
public class SimpleGL20Activity extends Activity implements Renderer { static final String TAG = SimpleGL20Activity.class.getSimpleName(); GLTextureView glTextureView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); glTextureView = new GLTextureView(this); // Setup GLTextureView { glTextureView.setVersion(GLESVersion.OpenGLES20); // set OpenGL Version // glTextureView.setSurfaceSpec(SurfaceColorSpec.RGBA8, true, false); // Default RGBA8 depth(true) stencil(false) // glTextureView.setRenderingThreadType(RenderingThreadType.BackgroundThread); // Default BackgroundThread glTextureView.setRenderer(this); } setContentView(glTextureView); } @Override protected void onPause() { glTextureView.onPause(); super.onPause(); } @Override protected void onResume() { super.onResume(); glTextureView.onResume(); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { Log.d(TAG, "onSurfaceCreated"); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { Log.d(TAG, String.format("onSurfaceChanged(%d x %d)", width, height)); } @Override public void onDrawFrame(GL10 gl) { GLES20.glClearColor(0, (float) Math.random(), (float) Math.random(), 1.0f); GLES20.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); } @Override public void onSurfaceDestroyed(GL10 gl) { Log.d(TAG, String.format("onSurfaceDestroyed")); } }
- 作者: 日経ソフトウェア
- 出版社/メーカー: 日経BP社
- 発売日: 2013/02/23
- メディア: 雑誌
- クリック: 2回
- この商品を含むブログを見る
- 作者: 山下武志
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/07/21
- メディア: 大型本
- 購入: 3人 クリック: 71回
- この商品を含むブログ (8件) を見る