我想知道为什么 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);
答案 0 :(得分:0)
如果您正在将RenderDoc用于OpenGL项目等,并且像我一样想要检查 gl_InstanceID 的值,则可以从零开始 ,方法是单击微小的实例字段右侧的网格输出标签中的向上箭头 this图片。