/*=========================================== NoNameNo Simple Diffuse Light Sample Code With 3 Light sources. Note : This torus hardcoded obj will be removed when we will have nice primitive functions. ============================================*/ #include #include #include #include #include #include "gfx/font.h" extern Mtx _GRR_view; typedef struct GRRLIB_3dObj { int NbFace; guVector *Pos; guVector *Tex; guVector *Nrm; int *FacPos; int *FacTex; int *FacNrm; } GRRLIB_3dObj; #include "torus.h" void GRRLIB_Draw3dObj(GRRLIB_3dObj obj, u32 col, bool tex, bool norm){ int i; GX_Begin(GX_TRIANGLES, GX_VTXFMT0, obj.NbFace*3); for(i=0;i0) Amb--; } if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_A){zlight++; } if(WPAD_ButtonsHeld(0) & WPAD_BUTTON_B){zlight--; } GRRLIB_3dMode(0.1,1000,45,0,0,1); GRRLIB_ObjectView(0,0,0, a,a*2,a*3, 3,3,3); GRRLIB_InitLight(GX_LIGHT0, (guVector){-6, 0, zlight}, 0xFF0000FF); GRRLIB_InitLight(GX_LIGHT1, (guVector){ 6, 0, zlight}, 0x00FF00FF); GRRLIB_InitLight(GX_LIGHT2, (guVector){ 0,-6, zlight}, 0x0000FFFF); GRRLIB_LightSwitch(GX_LIGHT0|GX_LIGHT1|GX_LIGHT2,RGBA(Amb,Amb,Amb,0xFF),0x808080FF,0); GRRLIB_Draw3dObj(torus,0,0,1); a+=0.5f; GRRLIB_LightOff(); // Switch To 2D Mode to display text GRRLIB_2dMode(); GRRLIB_Printf((640-(16*35))/2, 20, tex_font, 0xFFFFFFFF, 1, "(PLUS / MINUS) AMBIENT = 0X%02X%02X%02XFF",Amb,Amb,Amb,Amb); GRRLIB_Printf((640-(16*35))/2, 36, tex_font, 0xFFFFFFFF, 1, " (A / B) ZLIGHT = %f ",zlight); GRRLIB_Render(); } GRRLIB_Exit(); // Be a good boy, clear the memory allocated by GRRLIB GRRLIB_FreeTexture(tex_font); exit(0); }