需要帮助组织BSP几何渲染的类型差异

时间:2011-04-26 00:38:22

标签: c++ opengl bsp

我目前正在尝试将其他格式转换为Quake 3 BSP格式。 Quake格式包括verticies,faces,indicies和texture。

根据我必须使用的信息:

我的顶点是x,y和z位置的3个浮点结构。

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

我的纹理格式正确。

我的主要问题是:

  1. BSP格式的面孔是否等同于多边形?
  2. BSP格式的标志是什么?他们是指示要求还是更多?

2 个答案:

答案 0 :(得分:1)

Quake3文件格式与Quake2中使用的格式非常相似,并且在翻码上有一篇关于Quake2 BSP文件的精彩文章:

http://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml

答案 1 :(得分:0)

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

glDrawArrays(GL_TRIANGLES, first_face->index, num_faces);

这种几何体的批处理比Quake2产生了大量的性能改进,因为每个面可能有不同数量的顶点,面不能被集中到单个绘制操作中:你必须改为调用glDrawArrays(或对于每个多边形,更糟糕的是,glVertex3f in loop)。这一关键差异是为什么Quake3的环境可以包含比Quake2复杂10倍的原因。

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