私はOpenGL ES2.0とGLSLがより新しく、シェーダを使ってイメージを処理したいと考えています。私がXcodeでコーディングしたとき、私は組み込みの変数を使用しました。 gl_Normal
, gl_Vertex
シェーダーの冒頭で直接宣言していませんでした。最後に、エラーメッセージが表示されます。
宣言されていない識別子の使用
gl_Normal
。どうして?
回答:
回答№1は5宣言されていない識別子gl_Normalの使用。どうして?
OpenGL-ES 2では、OpenGL-3コアの後に続いて、定義済みのシェーダ入力変数はなくなりました。 OpenGL-4はあらかじめ定義されたシェーダ出力を使用していました。
代わりに、あなた自身の入力と出力を定義することが期待されます。各入力変数または出力変数は、いわゆる場所に割り当てられています。OpenGLによって暗黙のうちに、 glGetAttribLocation
、またはプログラマが明示的に location
ストレージ修飾子属性または glBindAttribLocation
関数。アウトプットは 断片データの場所.