将gl_InstanceID绑定为统一位置合法吗?

问题描述 投票:0回答:1

我有一个GLSL着色器,它使用由glDrawArraysInstanced all设置的gl_InstanceID输入变量。我希望此着色器可以与未设置gl_InstanceID的drawcall一起使用。在这里,我想手动设置gl_InstanceID统一样式。

在这些情况下,将glInstanceID绑定为统一的行为是否合法/已定义的行为?

          GLint const instanceIdx = glGetUniformLocation(pid, "gl_InstanceID");

谢谢

opengl opengl-es
1个回答
0
投票

[如果您尝试手动提供gl_InstanceID的值,则由于多种原因而无法将其位置设置为统一,这主要是因为非统一。它是内置的vertex shader input variable,它与顶点属性(用户提供,不是内置的)不同。

对于不使用实例化的任何绘图调用,gl_InstanceID的值为零。如果您希望此类调用的值不为零,则不可能。 GLSL 4.60 / ARB_shader_draw_parameters中的gl_BaseInstance将跟踪BaseInstance draw calls中的基本实例值。因此,您可以使用它来有效地设置实例索引。

但是没有那,您无能为力。

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