/* We create a sprite for the title and an animation * with 6 frames. * We also create a mask image for a spot and fade-in * effect. */ static int prepare_title(struct game_title* title) { int f; title->sprite = create_sprite(create_image("res/title.png"), 70, 15); if (title->sprite == NULL) goto error; title->bling = create_animation(); if (title->bling == NULL) goto error; add_frame(title->bling, 0, SECOND / 2, NULL); for (f = 5; f >= 0; f--) add_frame(title->bling, f, SECOND / 10, NULL); title->bling->mode = FREEZE_LAST_FRAME; title->mask = create_target_image(192, 108, color_from_RGB(50, 50, 50)); if (title->mask == NULL) goto error; set_blend_mode(title->mask, MULTIPLY); title->spot = create_image("res/spot.png"); if (title->spot == NULL) goto error; set_blend_mode(title->spot, ADD); return 0; error: ERROR("Unable to prepare title"); cleanup_title(title); return -1; }
// create the shadow object Shadow::Shadow(Renderer* renderer, const String& TextureFile, const Color& color) : Sprite(renderer, TextureFile) { set_color(color); set_blend_mode(BLEND_MODE_BLEND); m_need_redraw = true; }
Light::Light(Renderer* renderer, const String& TextureFile, const Color& color) : Sprite(renderer, TextureFile) { set_color(color); set_anchor(Point::HALF); set_blend_mode(BLEND_MODE_ADD); m_need_redraw = true; }
bool init( memory_pool &xdr_pool, size_t vb_offset ) { uint32_t *ptr = (uint32_t *)xdr_pool.alloc( 0 ); fifo = ptr; geom_desc_t pos, tx0, col; pos.stride = 24; pos.components = 3; pos.format = FLOAT; pos.type = POS0; pos.offset = 0; col.stride = 24; col.components = 4; col.format = HALF; col.type = COL0; col.offset = 16; tx0.stride = 24; tx0.components = 2; tx0.format = HALF; tx0.type = TEX0; tx0.offset = 12; ptr += blend_enable( 1, ptr, Nv3D ); blend_desc_t blend; blend.src_color_blend = ONE; blend.src_alpha_blend = ONE; blend.dst_color_blend = ONE; blend.dst_alpha_blend = ONE; ptr += set_blend_mode( &blend, ptr, Nv3D ); ptr += depth_enable( 0, 1, ptr, Nv3D ); ptr += set_geometry_source( &pos, DDR, vb_offset, ptr, Nv3D ); ptr += set_geometry_source( &col, DDR, vb_offset, ptr, Nv3D ); ptr += set_geometry_source( &tx0, DDR, vb_offset, ptr, Nv3D ); cmd_size = ptr - fifo; xdr_pool.alloc( cmd_size * 4 ); return true; }
void particle_system::set_sorting(const bool state) { sorting = state; set_blend_mode(sorting ? gfx2d::BLEND_MODE::PRE_MUL : gfx2d::BLEND_MODE::ADD); }
~scoped_blend() { set_blend_mode(src_blend_, dest_blend_); set_alphablend_enable(enable_alpha_); }
void set_blend_pair() { set_blend_mode(BlendPair::src_type::value, BlendPair::dest_type::value); }