我正在编写一个程序,它将数据从 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?