2011.12.05
【Android NDK】OpenGLES2.0へ手を出してみる
そろそろOpenGLES1.0も飽きてきたのでOpenGLES2.0で3D表示をしてみたい。
一番大きな固定シェーダーがなくなったことでしょう。
固定シェーダーとはこんな処理のこと
glLoadIdentity(); glTranslatef( 100.0f, 100.0f, 0 );
頂点 * 行列 = 描画位置 という固定処理で行っていたのが自由に組めるようになる。
OpenGLES2.0では大雑把に書くとこんな感じになる。
頂点に使う情報 * 頂点計算プログラム = 描画位置
こんな感じでプログラムをはさむことでいろんなことをできたり
グラフィックカードへ頂点演算をまるなげできたたりと利点は多い。
自由に組める分、簡単に描画できなくなるという部分もがあったり
OpenGLES1.0からの移行も大変になります。
OpenGLだと幅広いプラットフォームで使えるようにするために
GLSL(OpenGL Shading Language)言語というので記述し
各プラットフォームでコンパイルすることで処理を実行できるようにしている。
Link:GLSL - Wikipedia
これが一般的に言われているシェーダというものになります。
上記ではわかりやすいように頂点での例を挙げましたが
実際はもっと複雑に入り組んでいます。
とりあえずOpenGLES2.0で描画するには以下の2つのシェーダが必要になる。
バーテックスシェーダ | 頂点関係の計算を行う |
---|---|
フラグメントシェーダ | ピクセル描画時の対応を記述する |
サンプルプログラムはこんな感じ
Link:Androidメモ
3D処理は何回か手を出してきたけどなかなか完成までは長い道のりがかかります。
さほどあせらずにちまちま進めていきましょう。
Open GL ES 2.0 プログラミングガイド Aaftab Munshi Dan Ginsburg Dave Shreiner アフタブ・ムンシ ダン・ギンズバーグ デーブ・シュライナー 松田 晃一 ピアソン桐原 2009-11-01 |
関連記事