複数シェーダの切り替え

GLSLは正直初めてなんで調べながらの実装なんだけど、どうにかテクスチャ&カラーのスプライトを描画するところまでできた。

GLSLでは「プログラム」というオブジェクトに「(いくつかの)頂点シェーダ」と「(いくつかの)ピクセルシェーダ」を登録できる。で、「プログラム」を「使う」と宣言することで、登録されたシェーダを使うことになる。

シェーダを切り替えする手段として、希望としては、「プログラム」に登録できるシェーダは、複数まとめて可能なので、最初からいくつかのシェーダを単一「プログラム」に登録しといて後から切り替えることができればシンプルで済む。

でも、その手の APIが見当たらない。

今のところ実現可能そうなのが、それぞれシェーダを組み合わせた複数の「プログラム」を生成して、必要に応じて「プログラム」を切り替える方法。

これは、「使う」glUseProgram っていうAPIがあるので切り替えはできそう。

ここで問題になるのが、シェーダに渡すパラメータの「場所」って概念。パラメータを渡すのに「場所」に対してアクセスするんだけど、これが「プログラム」から「場所」を取得するため、(恐らく)「プログラム」が複数の場合は「場所」も違ってくるはず。管理がメチャメチャ大変になる。

OpenGL ES のドキュメントはまだ少ないので、本家 OpenGL の方の GLSL 関連を探して、どうやって切り替えるのがベストか当たりをつけてから続きの実装にかかりたい。