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

📄 our_module.c

📁 mtk 3d 菜单演示,可以用于mt6225/mt6226等以上平台.
💻 C
📖 第 1 页 / 共 2 页
字号:
        {	1,	-1,	-1	},// 7
    };
    char triangle[][3]={	
        {	0,	1,	2	},// 0
        {	0,	2,	3	},// 1
        {	4,	7,	6	},// 2
        {	4,	6,	5	},// 3
        
        {	1,	5,	6	},// 4
        {	1,	6,	2	},// 5
        {	0,	4,	5	},// 6
        {	0,	5,	1	},// 7
        
        {	0,	3,	7	},// 8
        {	0,	7,	4	},// 9
        {	2,	6,	7	},// a
        {	2,	7,	3	},// b
    };
    CLR clr[]={0xff0000,0x00ff00,0x0000ff,0xffff00,0xff00ff,0x00ffff};
    for(i=0;i<8;i++)
    {
        point_org[i].MM.x= CUBE_1R*point[i][0];
        point_org[i].MM.y= CUBE_1R*point[i][1];
        point_org[i].MM.z= CUBE_1R*point[i][2];
    }
    for(i=0;i<12;i++)
    {
        triangle_work[i].p1=triangle[i][0];
        triangle_work[i].p2=triangle[i][1];
        triangle_work[i].p3=triangle[i][2];
        
        obj->clor[i]=clr[i>>1];
        
    }
    
}

//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
void OUR_creat_three(OUR_3D_OBJ_PTR obj)
{
#define CUBE_R1 400
#define CUBE_L 3500
    int i;
    //int U_MAX;
    //int V_MAX;
    //U_MAX = obj->bmp_info->width;
    //V_MAX = obj->bmp_info->height;
    
    FIX_POINT3D_PTR	point_org=obj->pPoints;
    OUR_3D_TRAG_PTR	triangle_work=obj->pTriangle;
    int point[][3]={	
        {	CUBE_L/2,	CUBE_R1*0.866,    CUBE_R1/2	},// 0  //sin60=0.866
        {	CUBE_L/2,	-CUBE_R1*0.866,  CUBE_R1/2	},// 0  //sin60=0.866
        {	CUBE_L/2,	0,	                    -CUBE_R1	},// 0  //sin60=0.866
        
        {	-CUBE_L/2,	CUBE_R1*0.866,  CUBE_R1/2	},// 0  //sin60=0.866
        {	-CUBE_L/2,	-CUBE_R1*0.866, CUBE_R1/2	},// 0  //sin60=0.866
        {	-CUBE_L/2,	0,	                    -CUBE_R1	},// 0  //sin60=0.866
    };
    char triangle[][3]={	
        {	0,	2,	5	},// 0
        {	0,	5,	3	},// 1
        
        {	2,	1,	4	},// 0
        {	2,	4,	5	},// 1
        
        {	1,	0,	3	},// 0
        {	1,	3,	4	},// 1
        
        
    };
    
#define U_MAX_3 63
    
#define V_MAX_3 255
    
    int uv[][3]={	
        {UV_BUILD(1,1),		UV_BUILD(U_MAX_3,1),	UV_BUILD(U_MAX_3,V_MAX_3)	},
        {UV_BUILD(1,1),		UV_BUILD(U_MAX_3,V_MAX_3),	UV_BUILD(1,V_MAX_3)		},
        //{UV_BUILD(U_MAX_3,V_MAX_3),		UV_BUILD(U_MAX_3,10),	UV_BUILD(10,10)},
        //{UV_BUILD(10,V_MAX_3),		UV_BUILD(U_MAX_3,V_MAX_3),UV_BUILD(10,10)},
    };
    
    CLR clr[]={0xff0000,0x00ff00,0x0000ff,0xffff00,0xff00ff,0x00ffff};
    for(i=0;i<6;i++)
    {
        point_org[i].MM.x= point[i][0];
        point_org[i].MM.y= point[i][1];
        point_org[i].MM.z= point[i][2];
        if(MATERIAL_point_1P==(obj->material &MATERIAL_MASK))
        {
            obj->clor[i]=clr[i];
        }
    }
    for(i=0;i<6;i++)
    {
        triangle_work[i].p1=triangle[i][0];
        triangle_work[i].p2=triangle[i][1];
        triangle_work[i].p3=triangle[i][2];
        
        
        if(MATERIAL_Triangle_T==(obj->material &MATERIAL_MASK))
        {
            obj->clor[i]=clr[i>>1];
        }
        else if(MATERIAL_bmp==(obj->material &MATERIAL_MASK))
        {
            triangle_work[i].uv1=uv[i%2][0];
            triangle_work[i].uv2=uv[i%2][1];
            triangle_work[i].uv3=uv[i%2][2];
            triangle_work[i].bmp_index=i/2;
        }
    }
    
}
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
void OUR_creat_square(OUR_3D_OBJ_PTR obj)
{
#define CUBE_R 1000
    int i;
    //int U_MAX;
    //int V_MAX;
    //U_MAX = obj->bmp_info->width;
    //V_MAX = obj->bmp_info->height;
    
    FIX_POINT3D_PTR	point_org=obj->pPoints;
    OUR_3D_TRAG_PTR	triangle_work=obj->pTriangle;
    int point[][3]={	
        {	0,	-1,	0	},// 0
        {	0,	-1,	2	},// 1
        {	0,	1,	2	},// 2
        {	0,	1,	0	},// 3
    };
    char triangle[][3]={	
        {	0,	1,	2	},// 0
        {	0,	2,	3	},// 1
        {	2,	1,	0	},// 0
        {	3,	2,	0	},// 1
    };
    

    
    int uv[][3]={	
        {UV_BUILD(1,1),		UV_BUILD(U_MAX,1),	UV_BUILD(U_MAX,V_MAX)	},
        {UV_BUILD(1,1),		UV_BUILD(U_MAX,V_MAX),	UV_BUILD(1,V_MAX)		},
        {UV_BUILD(U_MAX,V_MAX),		UV_BUILD(U_MAX,1),	UV_BUILD(1,1)},
        {UV_BUILD(1,V_MAX),		UV_BUILD(U_MAX,V_MAX),UV_BUILD(1,1)},
    };
    
    for(i=0;i<4;i++)
    {
        point_org[i].MM.y= CUBE_R*point[i][0];
        point_org[i].MM.x= CUBE_R*point[i][1];
        point_org[i].MM.z= CUBE_R*point[i][2];
    }
    for(i=0;i<4;i++)
    {
        triangle_work[i].p1=triangle[i][0];
        triangle_work[i].p2=triangle[i][1];
        triangle_work[i].p3=triangle[i][2];
        
        
        triangle_work[i].uv1=uv[i][0];
        triangle_work[i].uv2=uv[i][1];
        triangle_work[i].uv3=uv[i][2];
        
    }
    
}
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
void OUR_creat_mg(OUR_3D_OBJ_PTR obj,int r)
{
    //#define CUBE_R 300
    int i;
    //int U_MAX;
    //int V_MAX;
    //U_MAX = obj->bmp_info->width;
    //V_MAX = obj->bmp_info->height;
    
    FIX_POINT3D_PTR	point_org=obj->pPoints;
    OUR_3D_TRAG_PTR	triangle_work=obj->pTriangle;
    int point[][2]={
        
        {	2,	0	},// 1
        {	2,	1	},// 2
        {	1,	1	},// 3
        
        {	1,	2	},// 4
        {	2,	2	},// 5
        {	2,	3	},// 6
        {	1,	3	},// 7
        
        {	1,	4	},// 8
        {	2,	4	},// 9
        {	2,	5	},// 10
        
        {	4,	5	},// 11
        {	4,	3	},// 12
        {	5,	3	},// 13
        
        {	5,	2	},// 14
        {	4,	2	},// 15	
        {	4,	0	},// 0
        
    };
    char triangle[][3]={	
        {	0,1,		16	},// 0
        {	16,1,		17	},// 1
    };
    
//#define U_MAX 128
    
//#define V_MAX 128
    
    int uv[][3]={	
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,0),	UV_BUILD(U_MAX,V_MAX)	},
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,V_MAX),	UV_BUILD(0,V_MAX)		},
        {UV_BUILD(U_MAX,V_MAX),		UV_BUILD(U_MAX,0),	UV_BUILD(0,0)},
        {UV_BUILD(0,V_MAX),		UV_BUILD(U_MAX,V_MAX),UV_BUILD(0,0)},
    };
    
    for(i=0;i<obj->point_num/2;i++)
    {
        point_org[i].MM.x= CUBE_R*(point[i][0])-CUBE_R*3;
        point_org[i].MM.y= CUBE_R*(point[i][1])-CUBE_R*3;
        point_org[i].MM.z= -200;
    }
    for(;i<obj->point_num;i++)
    {
        point_org[i].MM.x= CUBE_R*(point[i-obj->point_num/2][0]-3);
        point_org[i].MM.y= CUBE_R*(point[i-obj->point_num/2][1]-3);
        point_org[i].MM.z= 200;
    }
    
    triangle_work[0].p1=triangle[0][0];
    triangle_work[0].p2=triangle[0][1];
    triangle_work[0].p3=triangle[0][2];
    
    triangle_work[1].p1=triangle[1][0];
    triangle_work[1].p2=triangle[1][1];
    triangle_work[1].p3=triangle[1][2];
    for(i=2;i<obj->triangle_num;i++)
    {
        triangle_work[i].p1=triangle_work[i-2].p1+1;
        triangle_work[i].p2=triangle_work[i-2].p2+1;
        triangle_work[i].p3=triangle_work[i-2].p3+1;
        
        
        //triangle_work[i].uv1=uv[i][0];
        //triangle_work[i].uv2=uv[i][1];
        //triangle_work[i].uv3=uv[i][2];
        
    }
    
}

//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
void OUR_creat_square_mg(OUR_3D_OBJ_PTR obj,int r)
{
    //#define CUBE_R 1000
    int i;
    //int U_MAX;
    //int V_MAX;
    //U_MAX = obj->bmp_info->width;
    //V_MAX = obj->bmp_info->height;
    
    FIX_POINT3D_PTR	point_org=obj->pPoints;
    OUR_3D_TRAG_PTR	triangle_work=obj->pTriangle;
    int point[][3]={	
        {	0,	-1,	0	},// 0
        {	2,	-1,	0	},// 1
        {	2,	1,	0	},// 2
        {	0,	1,	0	},// 3
    };
    char triangle[][3]={	
        {	0,	1,	2	},// 0
        {	0,	2,	3	},// 1
    };
    
//#define U_MAX 128
    
//#define V_MAX 128
    
    int uv[][3]={	
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,0),	UV_BUILD(U_MAX,V_MAX)	},
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,V_MAX),	UV_BUILD(0,V_MAX)		},
        {UV_BUILD(U_MAX,V_MAX),		UV_BUILD(U_MAX,0),	UV_BUILD(0,0)},
        {UV_BUILD(0,V_MAX),		UV_BUILD(U_MAX,V_MAX),UV_BUILD(0,0)},
    };
    
    for(i=0;i<4;i++)//obj->point_num
    {
        point_org[i].MM.y= CUBE_R*point[i][0];
        point_org[i].MM.x= CUBE_R*point[i][1];
        point_org[i].MM.z= CUBE_R*point[i][2];
    }
    for(i=0;i<2;i++)//obj->triangle_num
    {
        triangle_work[i].p1=triangle[i][0];
        triangle_work[i].p2=triangle[i][1];
        triangle_work[i].p3=triangle[i][2];
        
        
        //	triangle_work[i].uv1=uv[i][0];
        //	triangle_work[i].uv2=uv[i][1];
        //	triangle_work[i].uv3=uv[i][2];
        
    }
    
}
void OUR_creat_M(OUR_3D_OBJ_PTR obj,int r)
{
    //#define CUBE_R 300
    int i;
    //int U_MAX;
    //int V_MAX;
    //U_MAX = obj->bmp_info->width;
    //V_MAX = obj->bmp_info->height;
    
    FIX_POINT3D_PTR	point_org=obj->pPoints;
    OUR_3D_TRAG_PTR	triangle_work=obj->pTriangle;
    int point[][2]={	
        {	0,	0},// 0
        {	2,	3},// 1
        {	6,	3},// 2
        {	6,	-3},// 3
        {	3,	-3},// 3				
        {	3,	2},// 0
        {	1,	-3},// 1
        
        {	-1,	-3},// 1			
        {	-3,	2},// 0
        {	-3,	-3},// 3	
        {	-6,	-3},// 3
        {	-6,	3},// 2
        {	-2,	3},// 1				
        {	-0,	0},// 0
    };
    char triangle[][3]={	
        {	1,0,		14	},// 0
        {	1,14,		15	},// 1
    };
    char triangle_2[][3]={	
        {	0,	1,	5	},// 0
        {	1,	2,	5	},// 1
        {	2,	3,	4	},// 0
        {	2,	4,	5	},// 1
        {	6,	0,	5	},// 1
        
        {	0,	6,	7	},// 0
        
        {	0,	7,	8	},// 1
        {	12,	0,	8	},// 1
        {	11,	12,	8	},// 1
        {	9,	11,	8	},// 1
        {	9,	10,	11	},// 1
    };
    
//#define U_MAX 128
    
//#define V_MAX 128
    
    int uv[][3]={	
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,0),	UV_BUILD(U_MAX,V_MAX)	},
        {UV_BUILD(0,0),		UV_BUILD(U_MAX,V_MAX),	UV_BUILD(0,V_MAX)		},
        {UV_BUILD(U_MAX,V_MAX),		UV_BUILD(U_MAX,0),	UV_BUILD(0,0)},
        {UV_BUILD(0,V_MAX),		UV_BUILD(U_MAX,V_MAX),UV_BUILD(0,0)},
    };
    
    for(i=0;i<obj->point_num/2;i++)
    {
        point_org[i].MM.x= CUBE_R*(point[i][0]);
        point_org[i].MM.y= CUBE_R*(point[i][1]);
        point_org[i].MM.z= -200;
    }
    for(;i<obj->point_num;i++)
    {
        point_org[i].MM.x= CUBE_R*(point[i-obj->point_num/2][0]);
        point_org[i].MM.y= CUBE_R*(point[i-obj->point_num/2][1]);
        point_org[i].MM.z= 200;
    }
    
    triangle_work[0].p1=triangle[0][0];
    triangle_work[0].p2=triangle[0][1];
    triangle_work[0].p3=triangle[0][2];
    
    triangle_work[1].p1=triangle[1][0];
    triangle_work[1].p2=triangle[1][1];
    triangle_work[1].p3=triangle[1][2];
    for(i=2;i<28;i++)
    {
        triangle_work[i].p1=triangle_work[i-2].p1+1;
        triangle_work[i].p2=triangle_work[i-2].p2+1;
        triangle_work[i].p3=triangle_work[i-2].p3+1;
        //triangle_work[i].uv1=uv[i][0];
        //triangle_work[i].uv2=uv[i][1];
        //triangle_work[i].uv3=uv[i][2];
        
    }
    for(i=0;i<11;i++)
    {
        triangle_work[i+28].p1=triangle_2[i][0];
        triangle_work[i+28].p2=triangle_2[i][1];
        triangle_work[i+28].p3=triangle_2[i][2];
        //triangle_work[i].uv1=uv[i][0];
        //triangle_work[i].uv2=uv[i][1];
        //triangle_work[i].uv3=uv[i][2];
        
    }
    for(i=0;i<11;i++)
    {
        triangle_work[i+28+11].p1=triangle_2[i][0]+14;
        triangle_work[i+28+11].p2=triangle_2[i][2]+14;
        triangle_work[i+28+11].p3=triangle_2[i][1]+14;
        //triangle_work[i].uv1=uv[i][0];
        //triangle_work[i].uv2=uv[i][1];
        //triangle_work[i].uv3=uv[i][2];
        
    }
    
    
}
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
//FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

#endif
#endif


⌨️ 快捷键说明

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