2011-04-18 72 views
3

我已经加载了波前模型文件(.OBJ和.MTL),并将顶点/索引存储在VBO中进行渲染。现在我只在模型加载时填充VBO。我的问题是......重复使用顶点数据重绘模型的多个实例的最佳方法是什么?目前,我只是为模型的每个实例存储一个变换矩阵(旋转,缩放和平移),并使用相关变换矩阵为每个实例调用draw()函数。如何加载模型并在OpenGL中重复使用

这是完全不正确的方法吗?有什么更好/替代方法可以达到同样的结果?

显然,这只适用于物体相对于其本身是静止的非常基本的模型(即,不管模型的任何部分如何移动,无论它是否是世界方向)。这使我相信确实有更好的方法来做到这一点。

希望我的随笔意义......

回答

4

如果你只是想改变模型的位置,改变变换矩阵是一种合理的方式做到这一点。在后来的OpenGL版本中,您可以使用实例化绘图在单次调用中使用不同转换多次渲染模型,并且可能以这种方式获得一些额外的性能,但是每次都会改变转换矩阵的循环是一个很好的开始点。

如果您实际上为模型设置了动画效果,那就不同了,因为顶点坐标本身必须改变。对于基于关键帧的动画,您可以将每个关键帧加载到单独的缓冲区中,并使顶点着色器使用您提供的统一时间值进行插值。但是这种事情是独立的,只是改变整个模型。

+0

感谢您的回答和澄清。我不需要做一段时间的动画,所以我想我会留下它,直到我需要它:p – 2011-04-18 15:00:28