- void render(stream& stream, bool local_key, bool layer_key)\r
- {\r
- CASPAR_ASSERT(!stream.empty());\r
- \r
- if(stream.front().transform.get_is_key())\r
- {\r
- stream_key_buffer_[1]->attach();\r
- \r
- BOOST_FOREACH(auto item2, stream)\r
- { \r
- kernel_->draw(channel_.get_format_desc().width, channel_.get_format_desc().height, item2.desc, item2.transform, item2.textures, \r
- make_safe(stream_key_buffer_[0]), nullptr, nullptr);\r
- }\r
-\r
- std::swap(stream_key_buffer_[0], stream_key_buffer_[1]);\r
-\r
- stream_key_buffer_[1]->bind();\r
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, channel_.get_format_desc().width, channel_.get_format_desc().height); \r
- }\r
- else\r
- {\r
- draw_buffer_[1]->attach(); \r
- \r
- BOOST_FOREACH(auto item2, stream)\r
- { \r
- kernel_->draw(channel_.get_format_desc().width, channel_.get_format_desc().height, item2.desc, item2.transform, item2.textures, \r
- make_safe(draw_buffer_[0]), local_key ? stream_key_buffer_[0] : nullptr, layer_key ? layer_key_buffer_ : nullptr); \r
- }\r
-\r
- std::swap(draw_buffer_[0], draw_buffer_[1]);\r
- \r
- draw_buffer_[1]->bind();\r
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, channel_.get_format_desc().width, channel_.get_format_desc().height);\r
- }\r
- }\r
- \r