OpenGLを勉強するにあたっては、下記の本がとっても分かりやすいかと思います。
とはいえ、やっぱり最初は難しいのですが、2Dの部分までやりこめば、OpenGLのパターンがわかってくるかと思います。
基本的には、
1、全体を構築
2、表示したいものを決めて、それに合わせた描画関数を作る
3、2で作ったものを使いまわす。
の3段階でOpenGLは割とカンタンに使えるようになりました。
ただ、本の通りに作ってみたら、テクスチャの破棄の時点で、下記のエラーが表示されていました。
E/libEGL(6891): call to OpenGL ES API with no current context (logged once per thread)
赤文字なので、エラーなんですが、
本では、メインのActivityのonPauseで、Texttureを消しましょう。としているのだけど、「そこから呼ぶのはだめ」というエラーが表示されます。
TextureManager.deleteAll(Global.gl1);
上記の実行で、詳しくは本を読めばわかるのですが、テクスチャを用意した時にメモリ解放の為、その描画を離れる時はテクスチャを破棄しましょう。っていう関数部分です。
で、いろいろエラーを検索してもあまり引っかからなかったのですが、
せんりつの昼行灯:AndroidのOpenGL ESでのテクスチャの扱いについて
こちらのブログで同じ内容でひっかかったのかと思うのですが、解決方法がしるされていました。
_gLSurfaceView.queueEvent(new Runnable() { public void run() { TextureManager.deleteAll(Global.gl1); } });
これだけでした。_gLSurfaceViewはOpenGLを組み込んでいるSurfaceViewですが、
エラーが発生しなくなりました。
※実際にどこに設置するかで、エラーは発生したりしなかったりを調べるのが割とデリケートでしたが。。。
OpenGLをお使いの方はぜひお気をつけくださいませ。