]> git.sesse.net Git - casparcg/blobdiff - core/mixer/image/image_mixer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / core / mixer / image / image_mixer.cpp
index 7d1d595e0e60313cbf1fcd25f5276461a0e8147f..c0f82f07d1a4095e40631d774b72f8d5677997c8 100644 (file)
@@ -145,9 +145,45 @@ public:
        void draw(layer&& layer, std::shared_ptr<device_buffer>& layer_key_buffer)\r
        {                                       \r
                std::shared_ptr<device_buffer> local_key_buffer;\r
+                               \r
+               std::shared_ptr<device_buffer> atomic_draw_buffer;              \r
+               std::shared_ptr<device_buffer> atomic_local_key_buffer;\r
 \r
                BOOST_FOREACH(auto& item, layer)\r
+               {\r
+                       //if(item.transform.get_is_atomic()) // layers need to be atomic in-order to support blend-modes properly\r
+                       //{\r
+                       //      if(!atomic_draw_buffer)\r
+                       //      {\r
+                       //              atomic_draw_buffer = channel_.ogl().create_device_buffer(channel_.get_format_desc().width, channel_.get_format_desc().height, 4);       \r
+                       //              channel_.ogl().clear(*atomic_draw_buffer);\r
+                       //      }\r
+\r
+                       //      draw(std::move(item), atomic_draw_buffer, atomic_local_key_buffer, nullptr);\r
+                       //}\r
+                       //else\r
+                       //{\r
+                       //      if(atomic_draw_buffer)\r
+                       //      {\r
+                       //              pixel_format_desc desc;\r
+                       //              desc.pix_fmt = pixel_format::bgra;\r
+                       //              desc.planes.push_back(pixel_format_desc::plane(channel_.get_format_desc().width, channel_.get_format_desc().height, 4));\r
+\r
+                       //              std::vector<safe_ptr<device_buffer>> textures;\r
+                       //              textures.push_back(make_safe(atomic_draw_buffer));\r
+                       //              \r
+                       //              atomic_draw_buffer.reset();\r
+                       //              atomic_local_key_buffer.reset();\r
+                       //              \r
+                       //              render_item atomic_item(desc, std::move(textures), image_transform(), video_mode::progressive, nullptr);\r
+                       //              draw(std::move(atomic_item), draw_buffer_, local_key_buffer, layer_key_buffer);\r
+                       //      }\r
+\r
+                       //      draw(std::move(item), draw_buffer_, local_key_buffer, layer_key_buffer);\r
+                       //}\r
+\r
                        draw(std::move(item), local_key_buffer, layer_key_buffer);\r
+               }\r
                \r
                std::swap(local_key_buffer, layer_key_buffer);\r
        }\r