我正在寻找一种方法来做一个glDrawElementsInstancedBaseVertex,但每个实例都有不同的基本顶点。
基本上我必须渲染很多具有不同模型空间坐标的立方体(边界框)。 每个多维数据集都有自己的modelToCamera矩阵,通过实例数组属性传递给顶点着色器。
问题是我有一个16个要呈现的索引的列表,除了它们的baseVertex部分之外,每个立方体都是相同的,我想在一个绘制调用中渲染每个立方体,而没有16 * numberOfCube索引
那么有没有办法改变每个实例的baseVertex?
答案 0 :(得分:2)
不,你不能这样做。此外,你也没有理由想要这样做。如果每个立方体都有自己的“模型空间坐标”和它自己的“modelToCamera矩阵”......那么你就有冗余信息。
所有立方体彼此相似。一个立方体与另一个立方体之间的唯一差异是它的变换:缩放,旋转,平移。您可以获取单位多维数据集并对其应用变换以将其转换为任何其他多维数据集。
由于您正在对每个立方体应用不同的变换,因此您的所有立方体可能只是反复重复的相同初始顶点。
然而,不要指望这会给你带来很多性能提升;像立方体这样的微小物体的实例化通常没有多大帮助。