auto image = image_mixer_.begin_pass();\r
BOOST_FOREACH(auto& frame, frames)\r
{\r
+ // Apply root transform and render.\r
if(format_desc_.mode != core::video_mode::progressive)\r
{\r
auto frame1 = make_safe<core::basic_frame>(frame.second);\r
{\r
return context_->begin_invoke([=]() -> safe_ptr<const host_buffer>\r
{\r
- reading_->map();\r
- render_targets_[0]->attach(0);\r
- GL(glClear(GL_COLOR_BUFFER_BIT));\r
- return safe_ptr<const host_buffer>(reading_);\r
+ reading_->map(); // Open host buffer for reading.\r
+ render_targets_[0]->attach(0); // Render to the next target\r
+ GL(glClear(GL_COLOR_BUFFER_BIT)); // Clear the new target\r
+ return make_safe(reading_);\r
});\r
}\r
\r
{\r
context_->begin_invoke([=]\r
{\r
- reading_ = context_->create_host_buffer(format_desc_.size, host_buffer::read_only);\r
- render_targets_[0]->write(*reading_);\r
- std::rotate(render_targets_.begin(), render_targets_.begin() + 1, render_targets_.end());\r
+ reading_ = context_->create_host_buffer(format_desc_.size, host_buffer::read_only); // Create a new host buffer.\r
+ render_targets_[0]->write(*reading_); // Move data to host buffer.\r
+ std::rotate(render_targets_.begin(), render_targets_.begin() + 1, render_targets_.end()); // Set new render target.\r
});\r
}\r
\r