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_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
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函数中可以找到…………:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值