0

我正在寻找一种方法来执行 glDrawElementsInstancedBaseVertex 但每个实例具有不同的基本顶点。

基本上我必须渲染很多具有不同模型空间坐标的立方体(边界框)。每个立方体都有自己的 modelToCamera 矩阵,该矩阵通过实例化数组属性传递给顶点着色器。

问题是我有一个要渲染的 16 个索引的列表,每个立方体都相同,除了它们的 baseVertex 部分,我想在单个绘制调用中渲染每个立方体,而不需要 16 * numberOfCube 索引。

那么有没有办法改变每个实例的 baseVertex 呢?

4

1 回答 1

2

不,你不能那样做。此外,在您的情况下也没有理由想要这样做。如果每个立方体都有自己的“模型空间坐标”自己的“modelToCamera 矩阵”......那么你就有冗余信息。

所有立方体都彼此相似。一个立方体和另一个立方体之间的唯一区别是它的变换:缩放、旋转、平移。您可以取一个单位立方体并对其应用变换以将其变成任何其他立方体。

由于您对每个立方体应用不同的变换,因此所有立方体可能只是一遍又一遍重复的相同初始顶点。

但是,不要指望这会给您带来很大的性能提升;对像立方体这样的微小对象进行实例化通常没有多大帮助。

于 2013-06-14T15:09:06.013 回答