我正在尝试更新片段着色器中的纹理,但没有任何运气。看起来着色器只读取一次纹理,然后没有更新。这是我的代码:
着色器初始化
CCGLProgram *shader = [[CCGLProgram alloc] initWithVertexShaderFilename:@"vertex.vsh" fragmentShaderFilename:@"fragment.fsh"]; [shader addAttribute:@"P" index:0]; [shader addAttribute:@"Cl" index:1]; [shader addAttribute:@"st" index:2]; [shader link]; [shader updateUniforms]; mutableSprite.shaderProgram = shader; uniformAlphaTexture = glGetUniformLocation(shader->_program, "alphaTexture");
着色器更新
CCGLProgram *shader = mutableSprite.shaderProgram; [shader use]; ccGLBindTexture2DN(1, alphaSprite.texture.name); glUniform1i(uniformAlphaTexture, 1);
所以我将 alphaSprite 发送到着色器。第一次看起来不错,但是在将孔(rgba)添加到 alphaSprite 并调用代码 #2 后,着色器内的纹理没有更新,它仍然使用初始 alphaSprite 纹理。