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