📄 our_main.c
字号:
/**************************************************************************
Copyright (C) jianbo miao Corporation. All Rights Released.
this is a 3d engin named our_3d_engin.
our_3d_engin feature:
1:there is no float.
2:it do the 3d things all by softwear.
3:base on 1 and 2 , it can execution on arm which have no 3d hardwear accelerate.
if you have any suggestion or question,pls contact with me
mail:miaojb@126.com
msn:miaojianbo@hotmail.com
qq:30209027
2008/01/01
***************************************************************************/
//#ifndef OUR_MAIN_C
#define OUR_MAIN_C
#include "our_math.h"
#include "our_main.h"
#include "our_3d.h"
#include "our_cpu.h"
#include "our_draw16.h"
#include "our_draw32.h"
#include "our_bmp.h"
#include "math.h"
//include c
#if 1
#include "our_math.c"
#include "our_3d.c"
#include "our_draw16.c"
#include "our_draw32.c"
#include "our_module.c"
#include "our_font.c"
#include "desk.c"
#include "6ca.c"
#include "6cm.c"
#include "6ex.c"
#include "6fg.c"
#include "6fm.c"
#include "6gp.c"
#include "6ie.c"
#include "6mg.c"
#include "6mm.c"
#include "6pb.c"
#include "6sc.c"
#include "6st.c"
#include "5bd.c"
#include "opt.c"
#include "opt1.c"
#include "opt2.c"
#endif
//----------------------------------
#define OUR_MF 1
#define SCAN (1<<(SCALE_1) )
#define MF_R 500
//#define MF_D 2500
//#define MOVE_STEP_NUM 625
//#define MOVE_STEP 625
//#define STEP_JD 10
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
OUR_GLOBAL global;
//==============================================
OUR_BMP_INFO* BMP_IFO[25];
//OUR_BMP_INFO* BMP_IFO[22];
int frame=10000;
OUR_3D_LIT_PTR lit_list=0;
static int first=1;
static int x2[6];
static int x=-128<<8,y=0,z=00;
static int xin=00,yin=00,zin=00;
enum
{
OUR_MMI_TOP,
OUR_MMI_SUB,
OUR_MMI_OPT,
};
//int statud=TOP;
#define SUP_STATE_NUM 12
#define OPT_BACK_CLR 0x202f
typedef struct
{
short top_state;
short opt_state;
short opt_select;
short opt_select_max;
short sub_state_raw;
short sub_state_line;
}OUR_3D_MMI_STATE;
OUR_3D_MMI_STATE mmi_state;
int OUR_THIRD_mmi(UCHAR *video_buffer, int key, int FPS);
void OUR_OJB_STATE_INIT()
{
//cube obj
x=-128<<8;
y=0;
z=00;
xin=00;
yin=00;
zin=00;
//=============================================
mmi_state.opt_select=0;
mmi_state.opt_select_max=19;
mmi_state.opt_state=0;
mmi_state.sub_state_line=3;
mmi_state.sub_state_raw=0;
mmi_state.top_state=OUR_MMI_TOP;
//=============================================
}
int OUR_3D_Init(void)
{
int i=0;
FIX_POINT3D lit_position={0,0,-2000};
OUR_OJB_STATE_INIT();
if(!first)
{
return 1;
}
first=0;
//=============================================
OUR_3Dengin_start(); //do at the first
//=============================================
global.cam_work.pos.MM.x=0;
global.cam_work.pos.MM.y=-0000;
global.cam_work.pos.MM.z=-6000;
global.cam_work.target.MM.x=0;
global.cam_work.target.MM.y=0000;
global.cam_work.target.MM.z=000;
global.cam_work.width=LCD_W/2;
global.cam_work.hight=LCD_H/2;///(THREE_NUM+1);
global.cam_work.focus=1130 *LCD_W/400;
//global.cam_work.focus=530 *LCD_W/400;
OUR_Build_CAM_Rotation_MATRIX3X3(&global.cam_work);//1550t
//=============================================
global.cam_work2.pos.MM.x=0;
global.cam_work2.pos.MM.y=-0000;
global.cam_work2.pos.MM.z=4000;
global.cam_work2.target.MM.x=0;
global.cam_work2.target.MM.y=0000;
global.cam_work2.target.MM.z=000;
global.cam_work2.width=LCD_W/2;
global.cam_work2.hight=(LCD_H)/16;///(THREE_NUM+1);
global.cam_work2.focus=400 *LCD_W/400;
//global.cam_work2.focus=300 *LCD_W/400;
OUR_Build_CAM_Rotation_MATRIX3X3(&global.cam_work2);//1550t
//=============================================
i=0;
BMP_IFO[i]=&BMP_IFO_bd;//up boarder
i++;
BMP_IFO[i]=&BMP_IFO_bd;//up boarder
i++;
BMP_IFO[i]=&BMP_IFO_bd;//butt boarder
i++;
BMP_IFO[i]=&BMP_IFO_bd;//3//butt boarder
i++;
BMP_IFO[i]=&BMP_IFO_6pb;// 0
i++;
BMP_IFO[i]=&BMP_IFO_6ca;//
i++;
BMP_IFO[i]=&BMP_IFO_6st;//
i++;
BMP_IFO[i]=&BMP_IFO_6fg;// 3
i++;
BMP_IFO[i]=&BMP_IFO_6mg;// 4
i++;
BMP_IFO[i]=&BMP_IFO_6mm;
i++;
BMP_IFO[i]=&BMP_IFO_6ie;
i++;
BMP_IFO[i]=&BMP_IFO_6cm;
i++;
BMP_IFO[i]=&BMP_IFO_6fm;//8
i++;
BMP_IFO[i]=&BMP_IFO_6sc;
i++;
BMP_IFO[i]=&BMP_IFO_6gp;
i++;
BMP_IFO[i]=&BMP_IFO_6ex;
i++;
BMP_IFO[i]=&BMP_IFO_bd;
i++;
BMP_IFO[i]=&BMP_IFO_bd;
i++;
BMP_IFO[i]=&BMP_IFO_bd;
i++;
BMP_IFO[i]=&BMP_IFO_bd;//19
i++;
BMP_IFO[i]=&BMP_IFO_opt;//20
i++;
BMP_IFO[i]=&BMP_IFO_desk;//21BMP_IFO_opt;//
i++;
BMP_IFO[i]=&BMP_IFO_opt1;//22
i++;
BMP_IFO[i]=&BMP_IFO_opt2;//23
i++;
BMP_IFO[i]=&BMP_IFO_opt2;//24
i++;
//========================================
for(i=0;i<20;i++)
{
// BMP_IFO[i]=&BMP_IFO_bmp0;
}
//=============================================
//=============================================
global.point_obj_pos.MM.x=0;
global.point_obj_pos.MM.y=0;//MF_D*(THREE_NUM-1)/2 -MF_D*i;
global.point_obj_pos.MM.z=0;
//=============================================
OUR_OBJ_INIT32(&global.obj,
//MATERIAL_Triangle_T,
//MATERIAL_wire,
//MATERIAL_point_1,//+MATERIAL_cmp_z,
MATERIAL_bmp,//+MATERIAL_pre_z,
//MATERIAL_Triangle_1,//+MATERIAL_cmp_z,
&global.point_obj_pos,
SCAN,
P_NUM,T_NUM,
//32,64,
global.point_org1,
global.point_nor1,
global.point_work1,
global.triangle_work1,
OUR_RGB32(255,255,255),
global.clr_work1,
BMP_IFO,
global.point_do1,
global.Triangle_do1
);
//=============================================
OUR_OBJ_INIT32(&global.obj2,
//MATERIAL_Triangle_T,
//MATERIAL_point_1P,
//MATERIAL_point_1,//+MATERIAL_cmp_z,
MATERIAL_bmp,//+MATERIAL_pre_z,
//MATERIAL_Triangle_1,//+MATERIAL_cmp_z,
&global.point_obj_pos,
SCAN,
P_NUM2,T_NUM2,
//32,64,
global.point_org2,
global.point_nor2,
global.point_work2,
global.triangle_work2,
OUR_RGB32(255,255,255),
global.clr_work2,
&BMP_IFO[22],
global.point_do2,
global.Triangle_do2
);
//=============================================
OUR_creat_three(&global.obj2);
OUR_creat_ball_cube(&global.obj,MF_R);
//OUR_creat_M(&global.obj,MF_R);
//OUR_creat_square_mg(&global.obj,MF_R);
//OUR_creat_cube(&global.obj,MF_R);
OUR_INIT_Triangle_Normal(&global.obj);
//OUR_INIT_Point_Normal(&global.obj);
OUR_INIT_Triangle_Normal(&global.obj2);
//OUR_INIT_Point_Normal(&global.obj);
//=============================================
// OUR_LIT_INIT32(&global.point_lit,0,
// CLR clr, UINT sta)global.point_lit
#define LIT_C 200
OUR_LIT_INIT32( &global.point_lit,
&lit_position,
OUR_RGB32(LIT_C,LIT_C,LIT_C),
//LIT_condition
LIT_point
);
OUR_LIT_INSERT(&lit_list,&global.point_lit);
//=============================================
return(1);
} // end Game_Init
//================================================================
#define KEY_STEP_NUM 6
#define KEY_STEP_TO_ALL (1<<15)
#define KEY_STEP (KEY_STEP_TO_ALL/KEY_STEP_NUM)
int OUR_3D_Main(UCHAR *video_buffer, int key, int FPS)
{
//QueryPerformanceCounter(&lpPerformanceCount1);
int i=13,j=0,temp;
int scal=SCAN;
int buff_start=0;
// static int x=-128<<8,y=0,z=00;
//static int x2=0,y2=0,z2=00;
// static int xin=00,yin=00,zin=00;
char work_string[50]; // temp string
int a[5];
FIX_POINT3D n;
static int KEY_STEP_y=(KEY_STEP_TO_ALL/KEY_STEP_NUM) ;
//while(1)
{
//-----------------------------
OUR_new_frame_start();
//------------------------
//=================================================================================================
#define KEY_TIME 40
if(key==97)//in
{
if(OUR_MMI_TOP==mmi_state.top_state)
{
mmi_state.top_state=OUR_MMI_SUB;
z=0;
x=-128<<8;
if(1==(mmi_state.sub_state_line>>1))
{
KEY_STEP_y=KEY_STEP;
yin-=KEY_STEP_NUM;
}
if(2==(mmi_state.sub_state_line>>1))
{
KEY_STEP_y=2*KEY_STEP;
yin-=KEY_STEP_NUM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -