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

📄 our_main.c

📁 这是一个简单的3d动画mmi,这是模拟器上的
💻 C
📖 第 1 页 / 共 4 页
字号:
/**************************************************************************
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 + -