代码之家  ›  专栏  ›  技术社区  ›  Geraldo Christiano

在实例计数设置为0的情况下调用glMultiDrawElementsIndirect时gl_DrawID的值

  •  1
  • Geraldo Christiano  · 技术社区  · 1 年前

    假设我在一个VBO中有三个网格A、B、C,并使用 glMultiDrawElementsIndirect 其中A、B和C的实例计数分别设置为1、0和1,绘制计数设置为3。顶点着色器中gl_DrawID的值是多少?A的(顶点)是0,B是1,C是2,还是跳过B并将1分配给C?

    这个 reference website 声明这“相当于”调用多个 glDrawElementsInstancedBaseVertexBaseInstance 和平局一样多,所以答案应该是第一种情况。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Nicol Bolas    1 年前

    “绘制”不是实例。多绘制中的特定绘制可以有实例,但这些都是独立的。实例是具有不同实例索引(和/或每个即时VS输入)的相同网格的重复。绘制使用不同的网格( 能够 是同一个网格,但不必是)。

    的绘图ID A 将为0, B 将有1,并且 C 将有2个。但由于您将实例计数设置为0, B 根本不会被画出来。然而,它仍然算作绘图调用,因此绘图ID将不受未绘制事实的影响。

    推荐文章