在 OpenGL 中使用 spirv,gl_VertexIndex 始终为 0

Rhu*_*age 4 opengl shader spir-v

我正在尝试将 spirv 与OpenGL一起使用。之前在我的着色器中,我必须gl_VertexID计算矩形的 uv,现在我将其替换为gl_VertexIndex.

如果我使用gl_VertexID的代码工作,如果我用gl_VertexIndexspirvvulkan代码的作品,但如果我用gl_VertexIndex的OpenGLgl_VertexIndex始终0

这是我正在使用的测试绘制命令:

glDrawArraysInstancedBaseInstance(GL_TRIANGLES, 0, 6, 1, 2);
Run Code Online (Sandbox Code Playgroud)

不应该gl_VertexIndex05吗?

Nic*_*las 6

无论您使用何种着色语言gl_VertexIndex,OpenGL 中都没有。将 GLSL 编译为用于 OpenGL 的 SPIR-V 时,您应该会遇到编译错误。

话虽如此,gl_VertexIndex和的值之间没有区别gl_VertexID(与gl_InstanceIndexvs.不同gl_InstanceID)。