需求:为了不然别人看到游戏图片内容,减少文件数量,会用到图片打包工具。
本节讲述白枫制作的NGE2图片打包工具的使用。
使用很简单:
1 加载资源包,会加载资源信息
[code="libnge2"]
packInit("DATA.BIN");// 把资源包信息加载到内存
[/code]
2 打开资源包与得到该资源里某个图片的大小:
[code="libnge2"]
//这里开一个独立的fd,需要自己释放,本例用
//设置image_load_fp的第三个参数为1来释放这个fd
int fd = packOpenAsync("demo0.jpg"); // 得到资源包里图片的文件指针
int size = packSize("demo0.jpg"); // 得到资源包里图片的大小
[/code]
3调用图片load的fp的函数(字体文件也可以)
注意用packOpenAsync打开的需要自己释放,这里给
设置image_load_fp的第三个参数autoclose为1来释放这个fd
[code="libnge2"]if(fd>0 && size>0)
bg = image_load_fp(fd,size,1,DISPLAY_PIXEL_FORMAT_8888,1);[/code]
4 资源包不用后就可以释放了
[code="libnge2"]
//清除
packFini();
[/code]
==============================================
[code="libnge2"]
#include "libnge2.h"
#include "package.h"
image_p bg = NULL;
void DrawScene();
void btn_down(int keycode);
void btn_up(int keycode);
extern "C"
int main(int argc,char* argv[])
{
NGE_Init(INIT_ALL);
InitInput(btn_down,btn_up,1);
packInit("DATA.BIN"); // 把资源包加载到内存
//这里开一个独立的fd,需要自己释放,本例用
//设置image_load_fp的第三个参数为1来释放这个fd
int fd = packOpenAsync("demo0.jpg"); // 得到资源包里图片的文件指针
int size = packSize("demo0.jpg"); // 得到资源包里图片的大小
// 从文件读取图片
if(fd>0 && size>0)
bg = image_load_fp(fd,size,1,DISPLAY_PIXEL_FORMAT_8888,1);
while(1) {
InputProc();
DrawScene();
LimitFps(60);
}
image_free(bg);
bg = NULL;
//清除
packFini();
NGE_Quit();
return 0;
}
void DrawScene()
{
BeginScene(1);
if(bg) ImageToScreen(bg,0,0);
EndScene();
}
void btn_down(int keycode)
{
switch(keycode)
{
case PSP_BUTTON_UP:
break;
case PSP_BUTTON_DOWN:
break;
case PSP_BUTTON_LEFT:
break;
case PSP_BUTTON_RIGHT:
break;
case PSP_BUTTON_TRIANGLE:
break;
case PSP_BUTTON_CIRCLE:
break;
case PSP_BUTTON_CROSS:
break;
case PSP_BUTTON_SQUARE:
break;
case PSP_BUTTON_SELECT:
break;
case PSP_BUTTON_START:
break;
}
}
void btn_up(int keycode)
{
switch(keycode)
{
case PSP_BUTTON_UP:
break;
case PSP_BUTTON_DOWN:
break;
case PSP_BUTTON_LEFT:
break;
case PSP_BUTTON_RIGHT:
break;
case PSP_BUTTON_TRIANGLE:
break;
case PSP_BUTTON_CIRCLE:
break;
case PSP_BUTTON_CROSS:
break;
case PSP_BUTTON_SQUARE:
break;
case PSP_BUTTON_SELECT:
break;
case PSP_BUTTON_START:
break;
}
}
[/code]
剩下的部分请看源代码
最后说下包制作工具:
在最新的libnge2的tool目录下有,本例下面的包里也有请先看说明,比较简单 |