我的网格类有一个单一的 VAO 索引,以及一个顶点、颜色、tex 坐标、法线和索引(如果使用)的缓冲区的索引。我将 Wavefront .obj 文件加载到该网格类中,并将所有组视为一个 VBO,然后分别加载单个材质并在绘制网格之前绑定它。这很好用,但我现在希望支持具有多种材料的 .obj 文件。
最简单的方法是为 .obj 中使用不同材质的每个组创建一个新的网格实例,并将它们分组到一个 meshGroup 对象或其他东西中,更好的(?)方法是在我的网格的 VAO 中支持多个 VBO ,在绘制每个缓冲区时分配不同的材质。第二种方法比另一种更快(因为每个网格而不是每个组只有 VAO 绑定),还是我可以退出并使用第一种方法?
编辑:我通过使用方法 1 并为具有不同材料的网格的每个部分创建一个单独的网格实例(和关联的 VAO)来实现它。我敢肯定这不是最好的方法,所以如果有人有任何见解,将不胜感激!