在单个vbo中纹理化多个网格

texturing multiple meshes in a single vbo

本文关键字:网格 纹理化 单个 vbo      更新时间:2023-10-16

我有这个顶点缓冲区对象,它包含顶点(位置、法线和UV)和索引数据,用于绘制3个不同的网格。现在我想为每个网格应用不同的纹理。问题是我只知道如何在顶点缓冲区对象上渲染一个纹理。我该如何以不同的方式对它们进行纹理处理,并在不考虑困难的情况下高效地进行纹理处理。是否有某种纹理缓冲区对象可供我加载纹理,然后与顶点缓冲区对象协调。

glDrawArrays()调用中使用不同的启动/计数,纹理绑定介于两者之间:

glBindTexture( ..., texture1 );
glDrawArrays( ..., obj1_start, obj1_vert_count );
glBindTexture( ..., texture2 );
glDrawArrays( ..., obj2_start, obj2_vert_count );
glBindTexture( ..., texture3 );
glDrawArrays( ..., obj3_start, obj3_vert_count );