gl_InstanceID始终为零

时间:2019-03-27 07:48:20

标签: opengl glsl opengl-3

我想知道为什么 gl_InstanceID 全局变量总是设置为0。 我使用的是什么 instanced 绘制函数都没关系。

我的项目是在 GLFW GLAD 的帮助下用 OpenGL 3.3 编写的。 同样在我的顶点着色器中,每当我想将 gl_InstanceID 传递给片段着色器时,都必须使用 flat 关键字,但这并不重要,因为 in 变量仍为零。

Khronos参考页状态:

  

如果当前图元不是源自实例绘制   命令,gl_InstanceID的值为零。

但是在循环中,我使用的是类似的东西:

    glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT);

    glUseProgram(program0);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, texture0);

    glBindVertexArray(VAO);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IBO);
    glDrawElementsInstancedBaseVertex(GL_TRIANGLES, 1536, GL_UNSIGNED_INT, NULL, 255, 0);

1 个答案:

答案 0 :(得分:0)

如果您正在将RenderDoc用于OpenGL项目等,并且像我一样想要检查 gl_InstanceID 的值,则可以从零开始 ,方法是单击微小的实例字段右侧的网格输出标签中的向上箭头 this图片。