小编Ayu*_*ush的帖子

glGetUniformLocation()返回-1,即使在顶点着色器中使用

我正在尝试使用法线渲染一个简单的立方体.我正在使用以下代码初始化着色器.

void initShader(const char* vertexShaderPath, const char* fragmentShaderPath){
    cout<<"Initializing Shaders"<<endl<<"==="<<endl;
    cout<<"Vertex shader ";
    vs = loadShader(vertexShaderPath, GL_VERTEX_SHADER);
    cout<<"Fragment shader ";
    fs = loadShader(fragmentShaderPath, GL_FRAGMENT_SHADER);

    cout<<"Creating program: ";
    program = glCreateProgram();
    if(0==program) cout<< "Failed"<<endl; else cout<< "OK"<<endl;

    glAttachShader(program, vs);
    glAttachShader(program, fs);

    cout<<"Linking program: ";
    glLinkProgram(program); 
    GLint linkstatus = 0;
    glGetProgramiv(program, GL_LINK_STATUS, &linkstatus);
    if(GL_TRUE==linkstatus) cout<<"OK"<<endl; else cout<<"Failed" <<endl;

    cout<<endl<<endl<<"Memory status"<<endl<<"==="<<endl;

    mvpmat = glGetUniformLocation(program,"mvpMatrix");
    mvmat = glGetUniformLocation(program,"mvMatrix");
    normalmat = glGetUniformLocation(program,"normalMatrix");

    cout << "mvpMatrix: "<<mvpmat<<" mvMatrix: "<<mvmat<<" normalMatrix: " << normalmat<<endl;
}
Run Code Online (Sandbox Code Playgroud)

最后一个cout语句的输出如下所示(编译或链接期间没有错误).

mvpMatrix: …
Run Code Online (Sandbox Code Playgroud)

c++ opengl glsl

1
推荐指数
1
解决办法
636
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1