I’m using the grabscreen function to get the pixels of each frame from some shader output to save into a video with ofxqtvideosaver, but the images being recorded are showing up kind of funky. I get a small band about ~75px or so of my image running across the bottom of each frame. The band appears to have been cut from the top of the frame, vertically flipped, and then slapped on the bottom.
I’m recording 1920x1080, which is larger than the resolution of my laptop. I’ve noticed if I use my work computer (which has a larger than 1080p display), and launch my app at fullscreen so none of the image is offscreen, the band does not show up. I can also save larger than display resolution video just fine if I am not using grabscreen, which is why I think the problem may be originating there. Actually if I save at 1000px height or smaller, it doesn’t happen, so it is definitely being caused by being off the bottom of the screen. The part that is offscreen on the width dimension renders fine though.
The code is really straightforward, I allocate the ofImage screen in setup and then at the end of update()
screen.grabScreen(0, 0, 1920, 1080); saver.addFrame(screen.getPixels());
Does anyone know what would cause something like this to happen? If not, what is the best/or an alternative way to save the output of a shader into video? Converting it to pixels seems like an unnecessary computation. Can be saved straight from the texture?
I uploaded an image of the problem here, you can see the bottom strip that is not supposed to be there. I’m not sure what other details to include to help debug this…For what it’s worth vertical sync doesn’t seem to make a difference whether it’s on or off.
Thanks for your help!