static void redraw(Data *data) { cg_framebuffer_t *fb = data->fb; cg_framebuffer_clear4f(fb, CG_BUFFER_BIT_COLOR, 0, 0, 0, 1); cg_framebuffer_push_matrix(fb); cg_framebuffer_translate(fb, data->center_x, -data->center_y, 0.0f); cg_primitive_draw(data->triangle, fb, data->pipeline); cg_framebuffer_pop_matrix(fb); cg_onscreen_swap_buffers(CG_ONSCREEN(fb)); }
static bool draw_rectangle (TestState *state, int x, int y, TestDepthState *rect_state) { uint8_t Cr = MASK_RED (rect_state->color); uint8_t Cg = MASK_GREEN (rect_state->color); uint8_t Cb = MASK_BLUE (rect_state->color); uint8_t Ca = MASK_ALPHA (rect_state->color); cg_pipeline_t *pipeline; cg_depth_state_t depth_state; cg_depth_state_init (&depth_state); cg_depth_state_set_test_enabled (&depth_state, rect_state->test_enable); cg_depth_state_set_test_function (&depth_state, rect_state->test_function); cg_depth_state_set_write_enabled (&depth_state, rect_state->write_enable); cg_depth_state_set_range (&depth_state, rect_state->range_near, rect_state->range_far); pipeline = cg_pipeline_new (test_dev); if (!cg_pipeline_set_depth_state (pipeline, &depth_state, NULL)) { cg_object_unref (pipeline); return false; } cg_pipeline_set_color4ub (pipeline, Cr, Cg, Cb, Ca); cg_framebuffer_set_depth_write_enabled (test_fb, rect_state->fb_write_enable); cg_framebuffer_push_matrix (test_fb); cg_framebuffer_translate (test_fb, 0, 0, rect_state->depth); cg_framebuffer_draw_rectangle (test_fb, pipeline, x * QUAD_WIDTH, y * QUAD_WIDTH, x * QUAD_WIDTH + QUAD_WIDTH, y * QUAD_WIDTH + QUAD_WIDTH); cg_framebuffer_pop_matrix (test_fb); cg_object_unref (pipeline); return true; }