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;

}

并且没有任何东西被渲染。但是如果我用 2.0 替换 sx,它显示得很好。为什么 2.0 没有从 cpp 成功传递到 glsl?

4

0 回答 0