1

我正在尝试更新片段着色器中的纹理,但没有任何运气。看起来着色器只读取一次纹理,然后没有更新。这是我的代码:

  1. 着色器初始化

    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");
    
  2. 着色器更新

    CCGLProgram *shader = mutableSprite.shaderProgram;
    [shader use];
    ccGLBindTexture2DN(1, alphaSprite.texture.name);
    glUniform1i(uniformAlphaTexture, 1);
    

所以我将 alphaSprite 发送到着色器。第一次看起来不错,但是在将孔(rgba)添加到 alphaSprite 并调用代码 #2 后,着色器内的纹理没有更新,它仍然使用初始 alphaSprite 纹理。

4

0 回答 0