OpenGL ES 2.0で、あなたは明らかにモデル行列を設定するView/Model/ProjectionマトリックスをOpenGL ES 2.0の頂点シェーダに渡すにはどうしたらいいですか?
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
、それ以上を行うことはできませんが、GLSL specは、頂点シェーダでそれらにアクセスする方法を説明しますので、私は、これらの行列はまだ何とかで構築されていると思います。
//
// Matrix state. p. 31, 32, 37, 39, 40.
//
uniform mat4 gl_ModelViewMatrix;
uniform mat4 gl_ProjectionMatrix;
uniform mat4 gl_ModelViewProjectionMatrix;
どのようにこれらの値をシェーダに渡しますか?どういうわけかglUniformMatrix4fv
を使用しますか?
OpenGL ES 2.0 Programming Guideのソースコードは、シェーダ部分に役立ちましたが、すべての例では、マトリックス変換をそのまま残して、頂点が-1.0と1.0の間にあることを確認しています。
UPDATE:唯一の答えはglGetUniformLocation
とglUniformMatrix4fv
を使用して、下記のリンクされたコードで行ったように、独自のカスタムモデル/ビュー/投影行列を定義することですので、明らかOpenGL ES Shader Languageがは、gl_ModelViewMatrix
のような事前定義されたエントリをサポートしていません。 。私はOpenGL Shader Builder がをサポートしているので混乱しましたが、これはOpenGL ESではなく、普通のOpenGLです。
私は固定機能のパイプラインを使いたくありません。私が望むならば、私はOpenGL ES 1.1を使い続けることができますが、頂点シェーダとフラグメントシェーダを実験しようとしています。 –
申し訳ありませんが私はより多くの助けができません。 Appleから更新されたサンプルコードを探してみるかもしれません。 このサンプルコードが役立つかどうかわかりません。 http://mgrundmann.com/2009/06/24/simple-opengl-es-20-iphone-example/ – Mark
リンクありがとうございます!彼は、組み込みのものを使用するのではなく、モデルと投影行列のための独自のシェーダー変数を定義することで解決します(つまり、独自の名前を定義し、glUniformを使用して値を更新します)。おそらく、OpenGL ES 2.0のiPhone版には組み込まれていないかもしれません。いずれにせよ、これは私に働くいくつかのコードを書くための回避策で十分です... –