Beispiel #1
0
static void
run_tests(TestState *state)
{
    int i;

    for(i = 0; i < C_N_ELEMENTS(tests); i++) {
        cg_framebuffer_clear4f(test_fb,
                               CG_BUFFER_BIT_COLOR,
                               0, 0, 0, 1);

        tests[i](state);
    }
}
Beispiel #2
0
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));
}
Beispiel #3
0
static void
paint (void)
{
  cg_pipeline_t *pipeline = cg_pipeline_new (test_dev);
  int width = cg_framebuffer_get_width (test_fb);
  int half_width = width / 2;
  int height = cg_framebuffer_get_height (test_fb);
  cg_vertex_p2_t tri0_vertices[] = {
        { 0, 0 },
        { 0, height },
        { half_width, height },
  };
  cg_vertex_p2c4_t tri1_vertices[] = {
        { half_width, 0, 0x80, 0x80, 0x80, 0x80 },
        { half_width, height, 0x80, 0x80, 0x80, 0x80 },
        { width, height, 0x80, 0x80, 0x80, 0x80 },
  };
  cg_primitive_t *tri0;
  cg_primitive_t *tri1;

  cg_framebuffer_clear4f (test_fb, CG_BUFFER_BIT_COLOR, 0, 0, 0, 0);

  tri0 = cg_primitive_new_p2 (test_dev, CG_VERTICES_MODE_TRIANGLES,
                                3, tri0_vertices);
  tri1 = cg_primitive_new_p2c4 (test_dev, CG_VERTICES_MODE_TRIANGLES,
                                  3, tri1_vertices);

  /* Check that cogl correctly handles the case where we draw
   * different primitives same pipeline and switch from using the
   * opaque color associated with the pipeline and using a colour
   * attribute with an alpha component which implies blending is
   * required.
   *
   * If Cogl gets this wrong then then in all likelyhood the second
   * primitive will be drawn with blending still disabled.
   */

  cg_primitive_draw (tri0, test_fb, pipeline);
  cg_primitive_draw (tri1, test_fb, pipeline);

  test_cg_check_pixel_and_alpha (test_fb,
                                    half_width + 5,
                                    height - 5,
                                    0x80808080);
}
Beispiel #4
0
static void paint_cb(uv_idle_t *idle)
{
    struct demo *demo = idle->data;
    unsigned int i;

    update_catherine_wheel(demo);

    cg_framebuffer_clear4f(demo->fb,
                           CG_BUFFER_BIT_COLOR | CG_BUFFER_BIT_DEPTH,
                           0, 0, 0, 1);

    for (i = 0; i < C_N_ELEMENTS(demo->emitter); i++)
        particle_emitter_paint(demo->emitter[i]);

    cg_onscreen_swap_buffers(demo->fb);

    uv_idle_stop(&demo->idle);
}