- UID
- 3169
注册时间2005-9-17
阅读权限20
最后登录1970-1-1
以武会友
该用户从未签到
|
这段时间由硬件转网络工程了,(貌似还是和硬件接触的多)
好久没发文章,先来一篇菜文..(别说我骗贴)
文章没什么高深技术,只希望对需要的人有帮助....
如果你懂这个就飘过,如果不懂,可以停留一、二分钟浏览一下
最近看一个游戏引擎(2D方面的),其实以前就研究过,只是他现在更新到16版了.
有对2D游戏感兴趣的可以访问官网:http://relishgames.com
他已经开放源代码
先说一段前话,记得以前14版时,屏蔽run-time logo,只需要在系统初始化之前
hge->System_Initiate()
加下面一段代码
System_SetState((hgeState)14, 0xFACE0FF)
就可以屏蔽logo,但现在的16版已经不能这样做了...
这个logo是版权logo..估计是作者更新了部分代码...但由于他开源..也就方便研究了..
在源代码中,发现有个数组hgelogo[],头两个字节是0x5089,0x474E...
虽然根据上下文来看也能看出他是一个图片文件..但对于类型当时就不是很清楚了
后来在支持论坛搜索了一下相关信息还有放了一篇求助贴,最后隐约想起来,这个是PNG文件的文件头,这才让我想起了一件事,当是在程序员(游戏创造)杂志中看到过一篇关于PNG文件格式的说明...
如果你把一个*.png图片文件,另存为*.bin,用下面这段程序,你也能建立自己的16进制图片信息....他将保存到一个logo.h中
- #include <stdio.h>
- void main()
- {
- unsigned short c;
- unsigned int n=0;
- FILE *fin =fopen("data.bin","rb");
- FILE *fout=fopen("logo.h" ,"wb");
- if(!fin||!fout) {printf("not found data.bin!\n");return;}
- fprintf(fout,"unsigned short logo[]={\r\n");
- while(1)
- {
- fread(&c, sizeof(unsigned short), 1,fin);
- if(feof(fin)) break;
- fprintf(fout,"0x%04X,",c);
- if(++n%16==0) fprintf(fout,"\r\n");
- }
- fseek(fout,-1,SEEK_CUR);
- fprintf(fout,"\r\n};\r\n");
- fclose(fout);
- fclose(fin);
- }
复制代码
代码很容易看懂,在此就不做解释了...:lol: |
|