int main(void) { device_t device; int states[] = { RENDER_STATE_TEXTURE, RENDER_STATE_COLOR, RENDER_STATE_WIREFRAME }; int indicator = 0; int kbhit = 0; float alpha = 1; float pos = 3.5; TCHAR *title = _T("Mini3d (software render tutorial) - ") _T("Left/Right: rotation, Up/Down: forward/backward, Space: switch state"); if (screen_init(800, 600, title)) return -1; device_init(&device, 800, 600, screen_fb); camera_at_zero(&device, 3, 0, 0); init_texture(&device); device.render_state = RENDER_STATE_TEXTURE; while (screen_exit == 0 && screen_keys[VK_ESCAPE] == 0) { screen_dispatch(); device_clear(&device, 1); camera_at_zero(&device, pos, 0, 0); if (screen_keys[VK_UP]) pos -= 0.01f; if (screen_keys[VK_DOWN]) pos += 0.01f; if (screen_keys[VK_LEFT]) alpha += 0.01f; if (screen_keys[VK_RIGHT]) alpha -= 0.01f; if (screen_keys[VK_SPACE]) { if (kbhit == 0) { kbhit = 1; if (++indicator >= 3) indicator = 0; device.render_state = states[indicator]; } } else { kbhit = 0; } draw_box(&device, alpha); screen_update(); Sleep(1); } return 0; }
/** Initialize the device subsystem */ void device_init (void) { device_t *dev; U8 i; max_balls = MACHINE_MAX_BALLS; counted_balls = MACHINE_TROUGH_SIZE; missing_balls = 0; live_balls = 0; kickout_unlock_all (); held_balls = 0; device_game_start_errors = 0; for (i=0; i < NUM_DEVICES; i++) { dev = device_entry (i); device_clear (dev); device_register (i, &device_properties_table[i]); } }