需要帮助组织不同类型的BSP几何渲染
Need help organizing difference in types for BSP geometry rendering
我目前正在尝试将另一种格式转换为Quake 3 BSP格式。《Quake》的格式包括垂直、面、索引和纹理。
根据我必须处理的信息:
我有垂直,这是3个浮点结构的x, y和z位置。
我有多边形,我可以假设它们是面。多边形都是三角形的,是顶点索引和纹理的引用。
我有正确的纹理格式。
我的主要问题是:
- BSP格式的面是否等同于多边形?
- BSP格式的索引是什么?它们是指向顶点还是指向更大的顶点?
Quake3的BSP格式将所有面表示为三角形(有时被程序员称为"三角形汤")。这对于硬件渲染来说比Quake2的格式更有效,后者的面可以是任意边的多边形(3+顶点)。当所有面都是三角形时,你可以用一个调用绘制多个面,前提是这些面共享相同的材质:
glDrawArrays(GL_TRIANGLES, first_face->index, num_faces);
这种几何批处理产生了巨大的性能优于Quake2,因为每个面可能有不同数量的顶点,所以面不能集中到单个绘制操作中:您必须为每个多边形调用glDrawArrays(或者更糟的是,循环中调用glVertex3f)。这个关键的区别就是为什么Quake3的环境可以包含10倍于Quake2的复杂性。
无论如何,记住这些指标不仅仅是指向顶点块的指标。它们也是漫反射和光贴图通道的纹理坐标索引。
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- OpenGL将纹理四边形渲染为(0,0)
- 按需渲染帧
- 使用专用显卡进行 OpenGL 渲染时帧速率较低
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 在C++中释放内存期间,迭代器与指针有何不同
- dx11 渲染到纹理仅显示透明颜色
- 在 opengl 中渲染 obj 文件时出现黑窗口
- Qt 如何渲染 mainwidget
- C++ SDL2:如何将矩形渲染到多个视口中
- 纹理单位重叠?渲染了错误的纹理
- Qt OpenGL 渲染到纹理性能问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- SDL_ttf清除我之前和将来的所有渲染
- 向 vulkan 管道添加额外的 UBO 会停止所有几何体渲染
- 类中的 C++ int 被设置为值,似乎不知从何而来
- 尝试渲染像素坐标时,简单线条渲染失败
- 从预先构建的BSP树进行渲染
- 需要帮助组织不同类型的BSP几何渲染