- BOOST_FOREACH(auto& item, layer)\r
- {\r
- if(layer_draw_buffer.first & item.transform.get_field_mode())\r
- item.blend_mode = blend_mode::normal; // Disable blending and just merge, it will be used when merging back into render stack.\r
- else\r
- {\r
- item.blend_mode = blend_mode::replace; // Target field is empty, no blending, just copy\r
- layer_draw_buffer.first |= item.transform.get_field_mode();\r
- }\r
-\r
- draw_item(std::move(item), *layer_draw_buffer.second, local_key_buffer, layer_key_buffer); \r
- }\r
- \r
- render_item item;\r
- item.pix_desc.pix_fmt = pixel_format::bgra;\r
- item.pix_desc.planes = list_of(pixel_format_desc::plane(channel_.get_format_desc().width, channel_.get_format_desc().height, 4));\r
- item.textures = list_of(layer_draw_buffer.second);\r
- item.transform = image_transform();\r
- item.blend_mode = layer_blend_mode;\r
-\r
- kernel_.draw(channel_.ogl(), std::move(item), *draw_buffer, nullptr, nullptr);\r
+ BOOST_FOREACH(auto& item, layer.second)\r
+ draw_item(std::move(item), layer_draw_buffer, layer_key_buffer, local_key_buffer, local_mix_buffer); \r
+ \r
+ draw_mixer_buffer(layer_draw_buffer, std::move(local_mix_buffer), blend_mode::normal); \r
+ draw_mixer_buffer(draw_buffer, std::move(layer_draw_buffer), layer.first);\r