如何在OpenGL/GLSL中实例化多个基本对象?

如何在OpenGL/GLSL中实例化多个基本对象?,opengl,glsl,Opengl,Glsl,在经典方案中,多次重复绘制(实例)单个对象。通过将对象存储在VBO/IBO中,将各个变换矩阵存储在另一个VBO中,然后调用glDrawArraysInstanced/glDrawerElementsInstanced来实现。但是,我希望在同一个VBO/IBO中存储多个对象,在另一个VBO中,我还希望沿变换矩阵存储我要实例化的对象的索引。假设我有50种树木,它们的网格数据彼此完全不同,因此我无法通过简单地平移/旋转/缩放单个树木物种来创建变化。我必须在一个DrawArrays/DrawElemen

在经典方案中,多次重复绘制(实例)单个对象。通过将对象存储在VBO/IBO中,将各个变换矩阵存储在另一个VBO中,然后调用glDrawArraysInstanced/glDrawerElementsInstanced来实现。但是,我希望在同一个VBO/IBO中存储多个对象,在另一个VBO中,我还希望沿变换矩阵存储我要实例化的对象的索引。假设我有50种树木,它们的网格数据彼此完全不同,因此我无法通过简单地平移/旋转/缩放单个树木物种来创建变化。我必须在一个DrawArrays/DrawElements调用中随机实例化这50个基本对象。我该怎么做?

正常情况下?50个drawInstanced调用,每种类型的对象一个。我怀疑你想要的是。