2011.12.05

【Android NDK】OpenGLES2.0へ手を出してみる

そろそろOpenGLES1.0も飽きてきたのでOpenGLES2.0で3D表示をしてみたい。

OpenGLES1.0からOpenGLES2.0への変更点

一番大きな固定シェーダーがなくなったことでしょう。

固定シェーダーとはこんな処理のこと

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 プログラミングガイド Open GL ES 2.0 プログラミングガイド
Aaftab Munshi Dan Ginsburg Dave Shreiner アフタブ・ムンシ ダン・ギンズバーグ デーブ・シュライナー 松田 晃一

ピアソン桐原 2009-11-01
売り上げランキング : 32973

Amazonで詳しく見る by G-Tools

ニャッキ格闘列伝 > プログラム >

前の記事:
次の記事:

関連記事

コメントリスト

コメントなし

コメント



*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

こんなタグが使えるみたいよ:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>