gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:09:17 33 4
gpt4 key购买 nike

我目前正在尝试将另一种格式转换为 Quake 3 BSP 格式。 Quake 格式包括顶点、面、索引和纹理。

根据我必须处理的信息:

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

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

我的纹理格式正确。

我的主要问题是:

  1. BSP 格式的面等同于多边形吗?
  2. 什么是 BSP 格式的索引?它们是顶点的指标还是更多?

最佳答案

Quake3 的 BSP 格式将所有面表示为三角形(有时被程序员称为“三角形汤”)。这比 Quake2 的格式更有效地渲染硬件,后者的面可以是任意边的多边形(3 个以上的顶点)。当所有面都是三角形时,您可以通过一次调用绘制多个面,前提是这些面共享相同的 Material :

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

与 Quake2 相比,这种几何批处理产生了巨大的性能改进,因为每个面可能有不同数量的顶点,所以面不能集中到单个绘制操作中:您必须改为调用 glDrawArrays(或更糟糕的是,glVertex3f 在循环中)对于每个多边形。这个关键区别就是为什么 Quake3 的环境可以包含 Quake2 的 10 倍的复杂性。

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

关于c++ - 需要帮助组织 BSP 几何渲染的类型差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784748/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com