【教程07】图片也歪歪-图像旋转



yl_ls
2009-03-19 21:02:54

[url=http://www.iacger.com]http://www.iacger.com[/url] 首发

本例使用的图片在 libnge2 的 win32buildsin 目录下,包括之前的教程都应该放在此目录中运行[code=c]#include "libnge2.h"

// 用于 RenderQuad 的颜色掩码
int mask4444 = MAKE_RGBA_4444(255,255,255,255);

// 退出标识
int game_quit = 0;

// 当前要显示的图像结构指针
image_p img;

// 按下键处理
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:
game_quit = 1;
break;
case PSP_BUTTON_START:
game_quit = 1;
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:
game_quit = 1;
break;
case PSP_BUTTON_START:
game_quit = 1;
break;
}
}

// 用户绘图函数
void DrawScene()
{
// 为开始绘图准备
BeginScene(1);

// 绘制图片
DrawImage(img, 0, 0, 0, 0, 0, 0, 0, 0);

// 绘制旋转的图片
RenderQuad(img, 0, 0, 256, 256, 250, 0, 1, 1, 45, mask4444);

// 完成绘图并显示
EndScene();
}

extern "C"
int main(int argc, char* argv[])
{
// nge 初始化
NGE_Init(INIT_VIDEO);

// 载入图片
img = image_load("images/nge2logo.png", DISPLAY_PIXEL_FORMAT_4444, 1);

// 修改用于图片旋转时的中心点
img->rcentrex = 128;
img->rcentrey = 128;

// 设置自定义按钮处理函数
InitInput(btn_down,btn_up,1);

while ( !game_quit )
{

// 显示帧数显示
ShowFps();

// 要求 nge2 处理按键,它将使用 InitInput 定义的函数来处理
InputProc();

// 调用用户绘图函数
DrawScene();

}
// 释放图片

image_free(img);

// nge 退出处理
NGE_Quit();
return 0;
}[/code]效果图:
[img]http://www.iacger.com/bbs/attachment.php?id=5379&u=1639&extension=gif&attach=1237444782_0.gif&attachpath=1/6/3/9[/img]