多次渲染相同的模型

Val*_*tin 6 opengl 3d performance rendering

我正在尝试做的,基本上有一个模型,它被多次渲染,具有不同的平移和旋转.

所以我知道如何使用Array BuffersArray Element Buffers(Vertex Buffer Objects),我的问题是.现在,当我将模型加载到VBO最佳方法时,如果我想用不同的平移和旋转多次渲染它.

我有2个理论可以做到这一点.(虽然我在问什么是最好的方法).

  1. 将模型加载到一个模型中VBO,然后glDrawArrays对我想要渲染的每个模型继续调用并应用平移和旋转.

  2. 将模型VBO多次加载一次.然后相同的模型被多次存储,最终使用大量内存.

附加: 在做的1路,四叉树和/或截,可以使用这将最大限度地减少需要渲染的模型数量.

如果我想要高FPS并且仍然可以节省尽可能多的内存,那么这些方法中的哪一种最适合做,或者是否有另一种更好的方法?

只是为了澄清我不会问如何渲染使用VBO's或如何渲染一般,我问的是当你想多次渲染相同的模型时最好的方法是什么.

测试模型

这只是测试模型的图像.

演示模型

编辑

我目前正在使用OpenGL版本4.2.0,我在Windows桌面计算机上使用它.

Mic*_* IV 4

为了最大限度地减少绘制调用和统一传输,您可以使用glDrawArrayInstanced()。这样,您可以在一次绘制调用中提交任意数量的原始对象实例!每个实例的矩阵您可以打包到 UBO(统一缓冲区对象)中并使用gl_InstanceID访问每个实例的顶点着色器中的那些