您的位置:首页 > 其它

BSP结构文件分析

2007-08-03 10:59 525 查看
一直都想把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_MODELSdmodel_t
LUMP_VERTEXESdvertex_t
LUMP_PLANESdplane_t
LUMP_NODESdnode_t
LUMP_TEXINFOtexinfo
LUMP_TEXDATAdtexdata_t
LUMP_DISPINFOg_dispinfo
LUMP_DISP_VERTSg_DispVerts
LUMP_DISP_TRISg_DispTris
LUMP_DISP_LIGHTMAP_SAMPLE_POSITIONSg_DispLightmapSamplePositions
LUMP_FACE_MACRO_TEXTURE_INFOg_FaceMacroTextureInfos
LUMP_FACESdface_t
LUMP_FACES_HDRdface_t
LUMP_PRIMITIVESdprimitive_t
LUMP_PRIMVERTSdprimvert_t
LUMP_PRIMINDICESunsigned short
LUMP_ORIGINALFACESdface_t
LUMP_LEAFFACESdleaffaces[0]
LUMP_LEAFBRUSHESdleafbrushes[0]
LUMP_SURFEDGESdsurfedges[0]
LUMP_EDGESdedge_t
LUMP_BRUSHESdbrush_t
LUMP_BRUSHSIDESdbrushside_t
LUMP_AREASdarea_t
LUMP_AREAPORTALSdareaportal_t
LUMP_VISIBILITY
LUMP_LIGHTINGdlightdataLDR
LUMP_LIGHTING_HDRdlightdataHDR
LUMP_LEAF_AMBIENT_LIGHTINGg_LeafAmbientLightingLDR
LUMP_LEAF_AMBIENT_LIGHTING_HDRg_LeafAmbientLightingHDR
LUMP_ENTITIESdentdata
LUMP_WORLDLIGHTSdworldlight_t
LUMP_WORLDLIGHTS_HDRdworldlight_t
LUMP_LIGHTMAPPAGESg_dLightmapPages
LUMP_LIGHTMAPPAGEINFOSg_dLightmapPageInfos
LUMP_PORTALSdportal_t
LUMP_CLUSTERSdcluster_t
LUMP_LEAFWATERDATAdleafwaterdata_t
LUMP_PORTALVERTSunsigned short
LUMP_CLUSTERPORTALSunsigned short
LUMP_PHYSCOLLIDE(void**)&g_pPhysCollide
LUMP_VERTNORMALSg_vertnormals[0]
LUMP_VERTNORMALINDICESg_vertnormalindices[0]
LUMP_CLIPPORTALVERTSg_ClipPortalVerts[0]
LUMP_CUBEMAPSg_CubemapSamples[0]
LUMP_TEXDATA_STRING_DATAg_TexDataStringData
LUMP_TEXDATA_STRING_TABLEg_TexDataStringTable
LUMP_OVERLAYSg_Overlays[0]
LUMP_WATEROVERLAYSg_WaterOverlays[0]
LUMP_MAP_FLAGSflags_lump
LUMP_LEAFMINDISTTOWATERg_LeafMinDistToWater[0]
LUMP_PAKFILE( void ** )&pakbuffer
LUMP_LEAFSdleaf_t
相关的宏定义在:BSPFILE.H文件中,加载对应的结构体信息在:bsplib.cpp的LoadBSPFile函数中可以找到…………:)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: