1日1HaloWars状態のMonshoです。
さすがに慣れてきたのでヒロイックでも余裕です。
そろそろいろいろ縛りプレーでもしようかな。
GLES2.0プログラムその02はシェーダコンパイルです。
なぜいきなりシェーダなのかというと、GLES2.0には固定シェーダがないからです。
単色トライアングルを出すだけでもシェーダを書かなければいけません。
GLES2.0のシェーダは頂点シェーダとフラグメントシェーダに分かれています。
頂点シェーダはそのままの意味で、フラグメントシェーダはピクセルシェーダのことです。
ピクセルシェーダといった方がわかりやすいかもしれませんが、ここではフラグメントシェーダと言うことにしましょう。
今回使用するシェーダプログラムは以下の通りです。
// 頂点シェーダコード attribute highp vec4 myVertex; uniform mediump mat4 myPMVMatrix; void main(void) { gl_Position = myPMVMatrix * myVertex; } // フラグメントシェーダコード void main (void) { gl_FragColor = vec4(1.0, 1.0, 0.66 ,1.0); } |
簡単に説明しましょう。
頂点シェーダは入力頂点座標 myVertex を入力行列 myPMVMatrix で変換しています。
これを gl_Position に出力していますが、この変数は出力頂点座標となります。ここからポリゴンが画面のどこに描画されるか計算するわけです。
フラグメントシェーダは gl_FragColor に定数カラーを出力しています。実際に画面に出てくる色がこの変数です。
このコードは外部のテキストファイルに書き込んでおいてもかまいません。最終的にプログラム内部で文字列としてメモリに格納されていればOKです。