⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glbdefine.h

📁 里面包含了许多实用的游戏开发包
💻 H
字号:
#define def_FILE_IS_GLB		100							//GLB格式的文件
/*---------------------------------------------------------*\
下面是GLB格式定义
\*---------------------------------------------------------*/
#define def_GLB_FILE_ID "VD->GLB"						//GLB文件标识
#define def_GLB_FILE_CURRENT_VERSION 3					//GLB文件版本号
#define def_GLB_FILE_MAX_IMAGE_NUM	1000				//一个GLB文件中最大允许图像数
#define def_GLB_IMAGE_MAX_FRAME_NUM	1000				//一套图像最大允许的帧数
#define def_VD_GLB_FILE_ID_SIZE 20							//文件标识符的长度,包括最后的一个零
#define def_ACT_MAX_NUM			50                  //最大允许的动作数,(不能超过255)

#define def_MAX_GLB_IMAGE_NUM 		2500			//场景中最大允许的GLB图像数

//1. 文件头结构
typedef struct
{
	char		szGlbFileId[def_VD_GLB_FILE_ID_SIZE];	//文件标识。内容为“VD->GLB”
	WORD		wVersion;							//GLB文件的当前版本号。此次的版本号为2
	DWORD		dwFileAvailableSize;				//此文件的有效长度
													//包含若干帧
	WORD		nDescribeSize;						//描述信息的长度,最大2K个字节
	DWORD		dwDescribeOffset;					//描述信息在GLB文件中的偏移量
	DWORD		dwpHold[20];						//保留
	WORD		nTotalImageNumber;					// GLB文件中总共拥有的图像套数,每一套图像
 	char 		*cpDescribeBuff;					//描述信息的缓冲区
	DWORD		**EachImageOffset;					//每一套图像在文件中的偏移量
}GLB_FILE_HEAD;

//2. 动作信息结构
typedef struct
{
	WORD 		nActFrameNumber;			//此动作的单个方向的帧数
	WORD		wActStartFrameOffset;		//此动作的第一帧在总的帧中的偏移量
	BYTE 		byActType;					//此动作的类型
	BYTE		byAspectNumber;				//此动作的方向数
	DWORD		dwActDealy;					//动作的灵敏度,用来控制动作的灵敏度,此
											//值越大,灵敏度越底。比如,在现实世界中
											//走的动作比跑的动作要慢,所以走的灵敏度
											//的值要比跑的灵敏度的值大
	BYTE		byExistSound;				//是否存在声音如果为零表示不存在声音
	DWORD		dwSoundBuffSize;			//声音缓冲区的长度
//	char		*cpSoundBuff;				//声音缓冲区
	LPDIRECTSOUNDBUFFER stpSoundBuff;

}ACT_INFO;

//3. GLB数据区结构
typedef struct
{
	WORD		cxImageWidth;						//图像的宽度,以象素为单位
	WORD		cyImageHeight;						//图像的高度,以象素为单位
	signed short int xLeftUpX;						//图像需要显示时的左上角的差值X
	signed short int yLeftUpY;						//图像需要显示时的左上角的差值Y
	 
				//在旧版本的GLB文件中,一个动作的所有帧(wActFrameNum * byAspectNum)的宽度和高度必
				//须相同,这样将导致数据有很大的浪费,特别在动作为攻击时,如果当前人物手内握着一
				//把剑,在举起剑的时候与剑落下的时候,宽度与高度的一致,将导致此动作的宽度和高度
				//必须取最大宽度和高度作为大家宽度和高度,这样不但增加了数据量,而且在显示图像时
				//加大了数据的传输量,也就导致了屏幕刷新率降低,占用了过多的CPU时间,所以必须,各
				//自独立开来,好处多多。
	DWORD		dwNotAlphaImageCompressSize;   	//不存在Alpha通道的图像数据被
											  	//RLE(行)压缩法压缩后的长度
	WORD 		*wpNotAlphaImageBuff;				//不存在Alpha通道的图像数据缓冲区
				//在GLB文件中的图像数据全部采用RLE压缩法进行了压缩,主要为了减少数据量,加快数据
				//的传输速度
	 DWORD		dwExistAlphaImageCompressSize; 	//存在Alpha通道的图像数据被
											  	//RLE(行)压缩法压缩后的长度
											  	//如果此值为零,则表示不存在
											  	//Alpha通道
	DWORD		dwAlphaCompressSize;   		  	//Alpha通道的数据被Rle(行)压缩法
											  	//压缩后的长度
											  	
	WORD 		*wpExistAlphaImageBuff;				//存在Alpha通道的图像数据缓冲区
											  	
	BYTE 		*bpAlphaBuff;						//Alpha通道数据缓冲区
											  	
													
	WORD		wShadowImageCompressSize;		    //阴影的图像数据被RLE(行)压缩法压
													//缩后的长度,如果此值为零,则表示
													//不存在阴影
	WORD		cxShadowWidth;						//阴影的宽度
	WORD		cyShadowHeight;						//阴影的高度
	signed short int cxShadowOffsetX;				//阴影离图像左上角的偏移量X
	signed short int cyShadowOffsetY;				//阴影离图像左上角的偏移量Y
	WORD		*wpShadowImageBuff;		 			//的图像数据缓冲区
}GLB_EACH_FRAME;

//4. 数据头结构
#define def_IMAGE_ID_SIZE 10
typedef struct
{
	char 		szImageId[def_IMAGE_ID_SIZE];				//图像在GLB文件中的名称,最长9个字符
	WORD		nTotalFrame;				//此套图像的总帧数
	BYTE		nTotalAct;					//此套图像的总动作数
	signed short int 	cxUseGrideWidth;				//占用格子的宽度
	signed short int 	cyUseGrideHeight;			//占用格子的高度
	
	ACT_INFO 	**stpActInfo;				//动作信息,见上面“动作信息结构”
	GLB_EACH_FRAME **stpEachFrame;			//每一帧的数据
}GLB_DATA_HEAD;

typedef struct
{
    GLB_DATA_HEAD *stpGlbImageLink;			//图像缓冲区
    WORD wUseNum;							//使用则计数
}GLB_IMAGE_LINK;							//Glb图像数据缓冲区

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -