24 static vec3_t pos = {0, 0, 0};
25 static quat_t rot = {0, 0, 0, 1};
27 int main(int argc, char **argv)
29 fbsize = fb_width * fb_height * fb_bpp / CHAR_BIT;
31 init_logger("demo.log");
38 if((use_mouse = have_mouse())) {
39 printf("initializing mouse input\n");
40 set_mouse_limits(0, 0, fb_width, fb_height);
41 set_mouse(fb_width / 2, fb_height / 2);
44 if(!(fb_pixels = malloc(fbsize))) {
45 fprintf(stderr, "failed to allocate backbuffer\n");
49 if(!(vmem_back = set_video_mode(fb_width, fb_height, fb_bpp))) {
52 if(!(vmem_front = page_flip(FLIP_NOW))) {
53 /* page flipping not supported */
54 vmem_front = vmem_back;
56 assert(vmem_back != vmem_front);
59 if(demo_init(argc, argv) == -1) {
69 while((key = kb_getkey()) != -1) {
70 demo_keyboard(key, 1);
74 demo_keyboard(getch(), 1);
77 if(quit) goto break_evloop;
80 mouse_bmask = read_mouse(&mouse_x, &mouse_y);
83 time_msec = get_msec();
101 void swap_buffers(void *pixels)
104 /* just memcpy to the front buffer */
109 memcpy(vmem_front, pixels, fbsize);
112 /* attempt page flipping */
116 if((next = page_flip(opt.vsync ? FLIP_VBLANK_WAIT : FLIP_NOW))) {
117 assert(next == vmem_back);
118 vmem_back = vmem_front;
121 /* failed to page flip, assume we drew in the front buffer then
122 * and just wait for vsync if necessary