【问题标题】:glUniformLocation returns -1 [closed]glUniformLocation 返回 -1 [关闭]
【发布时间】:2017-07-01 15:31:29
【问题描述】:

我正在尝试使用

将模型矩阵统一为顶点着色器
glUniformMatrix4fv(glGetAttribLocation(shaderProgram, "modelMatrix"),
    1, GL_FALSE, glm::value_ptr(objmesh[0]->modelMatrix));

但是当我使用它时,模型不显示。我用过

int location = glGetAttribLocation(shaderProgram, "modelMatrix");

找到位置,但它只返回-1。我还尝试在顶点着色器中使用手动制作的矩阵(作为单位矩阵),当我这样做时它会起作用。我已经对另一个着色器做了同样的事情,只是一个不同的程序。

objmesh 只是一个 std::vector ,它包含一个带有网格顶点的结构,uvs 等等。到目前为止,modelMatrix 只是一个单位矩阵。

我像这样在顶点着色器中统一矩阵:uniform mat4 modelMatrix;

【问题讨论】:

  • 贴出完整的顶点着色器源代码。
  • 我发现了问题。将其发布在答案部分:)

标签: c++ opengl matrix glm-math uniform


【解决方案1】:

已解决:我不小心使用了 glGetAttribLocation 而不是 glGetUniformLocation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-06
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多