int main(int argc,const char *argv[]) { s32 ret,i; padInfo padinfo; padData paddata; rsxProgramConst *consts = rsxFragmentProgramGetConsts(fpo); initialize(); ioPadInit(7); sphere = createSphere(3.0f,32,32); donut = createDonut(3.0f,1.5f,32,32); cube = createCube(5.0f); rsxConstOffsetTable *co_table = rsxFragmentProgramGetConstOffsetTable(fpo,consts[lightColor_id].index); u32 const_addr = (u32)((u64)fp_buffer + co_table->offset[0]); setup_shared_buffer(const_addr,(u32)(u64)mem_align(128,128),(u32)(u64)gcmGetLabelAddress(64)); signal_spu_ppu(); signal_spu_rsx(); P = transpose(Matrix4::perspective(DEGTORAD(45.0f),aspect_ratio,1.0f,3000.0f)); setRenderTarget(curr_fb); rsxFinish(context,0); ret = atexit(program_exit_callback); ret = sysUtilRegisterCallback(0,sysutil_exit_callback,NULL); delete cube; running = 1; while(running) { ret = sysUtilCheckCallback(); ioPadGetInfo(&padinfo); for(i=0; i<MAX_PADS; i++) { if(padinfo.status[i]) { ioPadGetData(i, &paddata); if(paddata.BTN_CROSS) { return 0; } } } drawFrame(); flip(); } return 0; }
int32_t rsxFragmentProgramGetConst(rsxFragmentProgram *fp,const char *name) { uint32_t i; rsxProgramConst *fpc = rsxFragmentProgramGetConsts(fp); for(i=0;i<fp->num_const;i++) { char *namePtr; if(!fpc[i].name_off) continue; namePtr = ((char*)fp) + fpc[i].name_off; if(strcasecmp(name,namePtr)==0) return i; } return -1; }