0

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 に正常に渡されないのはなぜですか?

4

0 に答える 0