C++ 需要帮助组织BSP几何体渲染的不同类型吗

C++ 需要帮助组织BSP几何体渲染的不同类型吗,c++,opengl,bsp,C++,Opengl,Bsp,我目前正在尝试将另一种格式转换为Quake 3 BSP格式。地震格式包括垂直、面、标记和纹理 根据我必须处理的信息: 我有垂直,这是x,y和z位置的3个浮点结构 我有多边形,我可以假设是面。这些多边形都是三角形的,是对顶点索引和纹理的引用 我有正确格式化的纹理 我的主要问题是: BSP格式的面是否等效于多边形 BSP格式中的标识是什么?它们是垂直的标志还是更多的标志 Quake3的BSP格式将所有面表示为三角形(程序员有时称为“三角形汤”)。这对于硬件渲染来说比Quake2的格式更有效,其中面可

我目前正在尝试将另一种格式转换为Quake 3 BSP格式。地震格式包括垂直、面、标记和纹理

根据我必须处理的信息:

我有垂直,这是x,y和z位置的3个浮点结构

我有多边形,我可以假设是面。这些多边形都是三角形的,是对顶点索引和纹理的引用

我有正确格式化的纹理

我的主要问题是:

  • BSP格式的面是否等效于多边形
  • BSP格式中的标识是什么?它们是垂直的标志还是更多的标志

  • Quake3的BSP格式将所有面表示为三角形(程序员有时称为“三角形汤”)。这对于硬件渲染来说比Quake2的格式更有效,其中面可以是任意边的多边形(3+顶点)。如果所有面都是三角形,则可以通过一次调用绘制多个面,前提是这些面共享相同的材质:

    glDrawArrays(GL_TRIANGLES, first_face->index, num_faces);
    
    与Quake2相比,这种几何体的批处理产生了巨大的性能改进,因为每个面可能有不同数量的顶点,所以不能将面集中到单个绘制操作中:必须为每个多边形调用glDrawArrays(或者更糟的是,glVertex3f in loop)。这一关键区别就是为什么地震3的环境的复杂性是地震2的10倍

    无论如何,请记住,索引不仅仅是顶点块中的索引。它们也是漫反射通道和光照贴图通道的纹理坐标的索引。希望这有帮助