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

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

假设我在一个 VBO 中有 3 个网格 A、B、C,并使用

glMultiDrawElementsIndirect
,A、B 和 C 的实例计数分别设置为 1、0 和 1,绘制计数设置为 3。顶点着色器中 gl_DrawID 的值? A(的顶点)是 0,B 是 1,C 是 2 还是会跳过 B 并将 1 分配给 C?

参考网站指出,这“相当于”调用多个

glDrawElementsInstancedBaseVertexBaseInstance
,因此答案应该是第一种情况。

c++ glsl opengl-4
1个回答
0
投票

“抽奖”不是实例。多重抽奖中的特定抽奖可以有实例,但这些是单独的事物。实例是具有不同实例索引(和/或每瞬时 VS 输入)的相同网格的重复。绘制使用不同的网格(它可以是相同的网格,但不一定是)。

A
的绘制ID将为0,
B
将为1,
C
将为2。但由于您将实例计数设置为0,所以根本不会绘制
B
。不过,它仍然算作一次绘制调用,因此绘制 ID 不会因为未绘制而受到影响。

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