BSP结构文件分析

来源:互联网 发布:sql中in的用法 编辑:程序博客网 时间:2024/05/16 15:59

一直都想把Hl2的BSP的文件给分析分析,之前也尝试过很多次,可一直进展缓慢,昨天又看了一下一个BSPLoad的源码,终于知道是个什么概念了…………

头文件中包含:BSP文件的版本号等信息.

struct dheader_t
{
    
int            ident;
    
int            version;    
    lump_t        lumps[HEADER_LUMPS];
    
int            mapRevision;                // the map's revision (iteration, version) number (added BSPVERSION 6)
}
;

这个结构体包含以下信息:
ident                         BSP文件类型(id的IBSP, Valve的VBSP)
version                    版本信息
lump_t                    数据块信息数组
mapRevision        地图修改信息

lump_t结构体如下:

struct lump_t
{
    
int        fileofs, filelen;
    
int        version;        // default to zero
    char    fourCC[4];        // default to ( char )0, ( char )0, ( char )0, ( char )0
}
;

fileofs                  偏移位置,也就是在文件中的起始位置
filelen                  长度
version               版本
fourCC[4]           4位字符…………没有太明白它的含义,读取出来都是0

Lump数据结构对应表 宏名 数据结构 LUMP_MODELS dmodel_t LUMP_VERTEXES dvertex_t LUMP_PLANES dplane_t LUMP_NODES dnode_t LUMP_TEXINFO texinfo LUMP_TEXDATA dtexdata_t LUMP_DISPINFO g_dispinfo LUMP_DISP_VERTS g_DispVerts LUMP_DISP_TRIS g_DispTris LUMP_DISP_LIGHTMAP_SAMPLE_POSITIONS g_DispLightmapSamplePositions LUMP_FACE_MACRO_TEXTURE_INFO g_FaceMacroTextureInfos LUMP_FACES dface_t LUMP_FACES_HDR dface_t LUMP_PRIMITIVES dprimitive_t LUMP_PRIMVERTS dprimvert_t LUMP_PRIMINDICES unsigned short LUMP_ORIGINALFACES dface_t LUMP_LEAFFACES dleaffaces[0] LUMP_LEAFBRUSHES dleafbrushes[0] LUMP_SURFEDGES dsurfedges[0] LUMP_EDGES dedge_t LUMP_BRUSHES dbrush_t LUMP_BRUSHSIDES dbrushside_t LUMP_AREAS darea_t LUMP_AREAPORTALS dareaportal_t LUMP_VISIBILITY 1 LUMP_LIGHTING dlightdataLDR LUMP_LIGHTING_HDR dlightdataHDR LUMP_LEAF_AMBIENT_LIGHTING g_LeafAmbientLightingLDR LUMP_LEAF_AMBIENT_LIGHTING_HDR g_LeafAmbientLightingHDR LUMP_ENTITIES dentdata LUMP_WORLDLIGHTS dworldlight_t LUMP_WORLDLIGHTS_HDR dworldlight_t LUMP_LIGHTMAPPAGES g_dLightmapPages LUMP_LIGHTMAPPAGEINFOS g_dLightmapPageInfos LUMP_PORTALS dportal_t LUMP_CLUSTERS dcluster_t LUMP_LEAFWATERDATA dleafwaterdata_t LUMP_PORTALVERTS unsigned short LUMP_CLUSTERPORTALS unsigned short LUMP_PHYSCOLLIDE (void**)&g_pPhysCollide LUMP_VERTNORMALS g_vertnormals[0] LUMP_VERTNORMALINDICES g_vertnormalindices[0] LUMP_CLIPPORTALVERTS g_ClipPortalVerts[0] LUMP_CUBEMAPS g_CubemapSamples[0] LUMP_TEXDATA_STRING_DATA g_TexDataStringData LUMP_TEXDATA_STRING_TABLE g_TexDataStringTable LUMP_OVERLAYS g_Overlays[0] LUMP_WATEROVERLAYS g_WaterOverlays[0] LUMP_MAP_FLAGS flags_lump LUMP_LEAFMINDISTTOWATER g_LeafMinDistToWater[0] LUMP_PAKFILE ( void ** )&pakbuffer LUMP_LEAFS dleaf_t

相关的宏定义在:BSPFILE.H文件中,加载对应的结构体信息在:bsplib.cpp的LoadBSPFile函数中可以找到…………:)
原创粉丝点击