C++ プログラムの関数から頂点シェーダーにデータを送信するプログラムを作成しています。プログラム ID は、次のように関数に渡されます。
void setUpOrtho(GLuint program) {
glUseProgram( program );
GLint myUniformLocation = glGetUniformLocation( program, "sx" );
glUniform1f( myUniformLocation, 2.0 );
}
シェーダーに渡されるデータは引数であると想定されています glsl コードは次のとおりです。
attribute vec4 vPosition;
uniform float sx;
void main() {
mat4 M = mat4( sx, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0 );
gl_Position = M*vPosition;
}
そして、何もレンダリングされません。しかし、sx を 2.0 に置き換えると、問題なく表示されます。2.0 が cpp から glsl に正常に渡されないのはなぜですか?