【问题标题】:Can't render Quake 3 bsp format无法呈现 Quake 3 bsp 格式
【发布时间】:2014-03-14 17:36:37
【问题描述】:

我正在为我的 3D 引擎编写 *.bsp Quake 3 文件的加载器和渲染器。我支持格式版本 46 (0x2e)。在我使用非常简单的地图之前,一切都渲染得很好。简单地图的几何图形在我的引擎和我在互联网上找到的渲染器(http://www.paulsprojects.net/opengl/q3bsp/q3bsp.html)下都能正确渲染。这是截图:

我尝试使用我的渲染器渲染更复杂的地图(来自:http://lvlworld.com/),并使用我发现的一个渲染器来比较结果。并且两个渲染器都存在场景中存在孔洞的问题(这里和那里缺少三角形)。 当我检查地图时,我不知道是什么导致了这些问题,它们都是相同的版本。有人遇到过这个问题吗?

编辑:一些非常复杂的地图可以正确渲染。它让我更加困惑:)。

【问题讨论】:

  • 再次加载地图是否会丢失相同的三角形?

标签: opengl rendering binary-tree file-format quake


【解决方案1】:

这个 bsp 加载器的创建者做错了。我修好了。 只需编辑 LoadData 函数,并将所有面部数据(除了网格和补丁)放入一个数组并进行渲染。对我有用,没有更多的“漏洞”。这是一段代码:

int currentFace = 0;

for( int i = 0; i < facesCount; i++ ) {
    if( faceData[i].type != SW_POLYGON )
        continue;

    m_pFaces[i].texture = faceData[i].texture;
    m_pFaces[i].lightmapIndex = faceData[i].lightmapIndex;
    m_pFaces[i].firstVertexIndex = faceData[i].firstVertexIndex;
    m_pFaces[i].vertexCount = faceData[i].vertexCount;
    m_pFaces[i].numMeshIndices = faceData[i].numMeshIndices;
    m_pFaces[i].firstMeshIndex = faceData[i].firstMeshIndex;

    f_bspType[i].faceType = SW_FACE; // Custom one.
    f_bspType[i].typeFaceNumber = currentFace;

    currentFace++;
}

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多