I want to implement delayed output of video frames in my program, similar to the example below. This example is obviously not suitable because it involves encoding and decoding the textures, which is very slow. The reason I’m doing this encoding and decoding is that I haven’t found a way to deep copy textures. I want to use a higher-performance method for deep copying, or use asynchronous multithreading to accomplish this task, but I don’t know how to do it. Additionally, when I tried to implement deep copying asynchronously in my C# program, it didn’t seem to have the desired effect, and the performance was still poor. My use case is as follows: A camera inputs the image via DeckLink, and this image should have a 4K resolution and be 60FPS. I need to delay the rendering of this image because it needs to be synchronized and composited with CG images output by the UE program.
Did you try the CopyTexture node?
Yes, I’ve tried that, but it’s just a shallow copy. I need to store the textures in a queue for delayed retrieval. If I use it to copy and store in the queue, all the images in the queue are from the current frame because they point to the same address.@tonfilm
Are you looking for the TextureQueue? Here is an example: TextureQueue.vl (12.2 KB)
2 Likes