gl_InstanceID始终为零

问题描述 投票:-3回答:1

我想知道为什么gl_InstanceID全局变量总是设置为0.我使用的是什么实例化绘制函数并不重要。

我的项目是在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);
opengl glsl opengl-3
1个回答
0
投票

如果您正在为您的OpenGL项目等使用RenderDoc,并且像我一样想检查gl_InstanceID的值,那么您可以通过单击显示在Instance字段右侧的Mesh Output选项卡中的微小向上箭头从零向前推进它。 this图片。

© www.soinside.com 2019 - 2024. All rights reserved.