BSP结构文件分析

一直都想把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函数中可以找到…………:)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值