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件) を見る