我一直在尝试学习OpenGL一段时间创建一个简单的3D游戏,但在尝试设置制服没有工作了。我用一个相当旧的mac,但我不认为这有任何关系。
这是我设定制服的密码:
Texture texture = createTexture("./res/images/atlas.png");
bindTexture(&texture, 1);
setUniform1i(&shader, "u_Texture", 1);
setUniform1i的代码为:
void setUniform1i(const Shader *shader, char *name, int i1)
{
int loc = getUniformLocation(shader, name);
bindShader(shader);
glUniform1i(loc, i1);
}
这是我的片段着色器:
# version 120
uniform sampler2D u_Texture;
varying vec2 v_texCoor;
void main()
{
vec4 texColor = texture2D(u_Texture, v_texCoor);
gl_FragColor = texColor;
}
需要注意的一点是,我可以在顶点着色器中设置一个模型视图投影矩阵均匀,所以我不知道为什么设置另一个均匀会导致错误。
1条答案
按热度按时间guykilcj1#
你的着色器绑定正确吗?我也遇到过同样的问题,但绑定时问题解决了。
glUseProgram(program);