Я хотел бы знать, почему глобальная переменная gl_InstanceID всегда имеет значение 0.
Неважно, какую инстансированную функцию рисования я использую.
Мой проект написан на OpenGL 3.3 с помощью GLFW и GLAD .
Кроме того, в моем вершинном шейдере мне приходилось использовать ключевое слово flat всякий раз, когда я хочу передать gl_InstanceID фрагментному шейдеру, но это не имеет значения, поскольку переменная in все равно будет ноль.
Справочные страницы Хроноса гласят:
Если текущий примитив не происходит из экземпляра
команда, значение 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);