{\r
if(channel_.get_format_desc().width != write_buffer_->width() || channel_.get_format_desc().height != write_buffer_->height())\r
initialize_buffers();\r
-\r
- auto read_buffer = channel_.ogl().create_host_buffer(channel_.get_format_desc().size, host_buffer::read_only);\r
-\r
+ \r
layer_key_buffer_->clear();\r
draw_buffer_[0]->clear();\r
draw_buffer_[1]->clear();\r
local_key_buffer_[0]->clear();\r
local_key_buffer_[1]->clear();\r
\r
- bool local_key = false;\r
bool layer_key = false;\r
\r
BOOST_FOREACH(auto& layer, layers)\r
- draw(std::move(layer), local_key, layer_key);\r
+ draw(std::move(layer), layer_key);\r
\r
std::swap(draw_buffer_[0], write_buffer_);\r
-\r
- // device -> host. \r
- read_buffer->begin_read(*write_buffer_);\r
-\r
- return read_buffer;\r
+ \r
+ auto host_buffer = channel_.ogl().create_host_buffer(channel_.get_format_desc().size, host_buffer::read_only);\r
+ host_buffer->begin_read(*write_buffer_);\r
+ return host_buffer;\r
}\r
\r
- void draw(layer&& layer, bool& local_key, bool& layer_key)\r
+ void draw(layer&& layer, bool& layer_key)\r
{ \r
+ bool local_key = false;\r
+\r
local_key_buffer_[0]->clear();\r
\r
BOOST_FOREACH(auto& item, layer)\r
draw(std::move(item), local_key, layer_key);\r
\r
layer_key = local_key;\r
- local_key = false;\r
+\r
std::swap(local_key_buffer_[0], layer_key_buffer_);\r
}\r
\r