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

📄 our_main.c

📁 MTK上3D特效的一些开源代码
💻 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
***************************************************************************/

#include "our_math.h"
#include "our_3d.h"
#include "our_draw16.h"
#include "our_draw32.h"
#include "math.h"
#include "our_main.h"
//----------------------------------


//----------------------------------
#define SCALE      1<<(SCALE_1)  

OUR_GLOBAL global;
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


//==============================================
int Game_Init(void)
{
	FIX_POINT3D lit_position={0,-0,-0};
	FIX_POINT3D obj_position={500,0,0};
	
	//=============================================
	OUR_3Dengin_start();	//do at the first
	//=============================================
	//init the camera
	global.cam_work.pos.MM.x=8000;
	global.cam_work.pos.MM.y=8000;
	global.cam_work.pos.MM.z=-8000;
	global.cam_work.target.MM.x=0;
	global.cam_work.target.MM.y=0;
	global.cam_work.target.MM.z=0;
	global.cam_work.width=LCD_W/2;
	global.cam_work.hight=LCD_H/2;
	global.cam_work.focus=800 *LCD_W/800;
	
	//=============================================
	//=============================================
	//init the obj,just fill the pointers of the unit part
	OUR_OBJ_INIT32(&global.obj_cube,	//要初始化的obj的指针                                       
                    MATERIAL_Triangle,  //obj的材质是什么,后详                           
                    &obj_position,      //obj的初始位置
                    SCALE,              //obj的比例,后详
                    8,					//obj有多少个点
                    12,					//obj有多少个三角形
                    global.point_org1,	//obj有多少个三角形
                    global.point_nor1,	//obj有多少个三角形
                    global.point_work1,	//obj有多少个三角形
                    global.triangle_work1,
                    OUR_RGB32(0,255,255,0),
                    global.clr_work1,
                    NULL,
                    global.point_do1,
                    global.Triangle_do1		
                    );
    
	//=============================================
	OUR_creat_cube_mofang(&global.obj_cube,3000);	
	OUR_INIT_Triangle_Normal(&global.obj_cube);
	//=============================================

#define LIT_C 150
	OUR_LIT_INIT32(	&global.lit_con,
					&lit_position,
					OUR_RGB32(0,LIT_C,LIT_C,LIT_C),
					LIT_parallel
					);
	OUR_LIT_INSERT(&global.lit_list,&global.lit_con);
	//--------
	return(1);
	
} // end Game_Init

//================================================================

int Game_Main(UCHAR *video_buffer, int lpitch, int FPS)
{
	//QueryPerformanceCounter(&lpPerformanceCount1);
	
	int i=13,j=0,temp;
	static int x=00,y=00,z=00;
	static int cx=0;
	char work_string[256]; // temp string
	FIX_MATRIX_3X3 mrot_obj,mrot1,mrot_obj_i;		
	static int a[5];
	OUR_3D_POINT n;

	//-----------------------------
	OUR_new_frame_start();
	//-----------------------------	

	OUR_Build_CAM_Rotation_MATRIX3X3(&global.cam_work);//1550t	
	
	//x++;
	y-=1;
	//z+=1;	 
//=================================================================================================
//=================================================================================================

	OUR_XYZ_Rotation_OBJ(x, y, z,&global.obj_cube); 	
	OUR_BACHFACE_OBJ_LIT32(&global.obj_cube,&global.cam_work,global.lit_list);
	OUR_POINT_CHANGE_OBJ(&global.obj_cube,&global.cam_work);
	OUR_Draw_OBJ( &global.obj_cube, video_buffer, LCD_W,CLOR_MOD);
		
//=================================================================================================
//=================================================================================================
	return(global.FrameTH);	
} // end Game_Main

//////////////////////////////////////////////////////////
UCHAR video_buffer[600*800];//*
#if 1
int main(void)
{
	int lpitch=800;
	int FPS;
	Game_Init();
	while(1)
	{
		for(FPS=0;FPS<300;FPS+=5)
		{
		Game_Main(video_buffer,lpitch,FPS);
		}	
		FPS++;
		Game_Init();
	}
}
#endif




//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -