jvcleave / ofxImGui

Use ImGui in openFrameworks
293 stars 124 forks source link

Memory leak in ofxImGui::loadPixels(ofPixels& pixels) #32

Open Bk8 opened 8 years ago

Bk8 commented 8 years ago

Im loading pixels from a video and RAM usage starts to increase a lot;

jvcleave commented 8 years ago

I don't think I would use loadPixels for this - see https://github.com/jvcleave/ofxImGui/blob/develop/example-experimental/src/ofApp.cpp

On May 1, 2016, at 2:46 AM, Bk8 notifications@github.com wrote:

Im loading pixels from a video and RAM usage starts to increase a lot;

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/jvcleave/ofxImGui/issues/32

Bk8 commented 8 years ago

Thanks I figured out what I was doing wrong. I wanted to embed the video player in a gui window, but the problem was I was leaking every frame of the video, I was using:

fingerMovieThumb=gui.loadPixels(fingerMovie.getPixels()); ImGui::Image((ImTextureID)(uintptr_t)fingerMovieThumb, ImVec2(vidWidth,vidHeight));

so to free the memory I'm using now:

glDeleteTextures(1,&fingerMovieThumb);

and this solves the problem, it would be nice to have a ofxImGui method to remove unnecessary frames instead of using opengl functions.

jvcleave commented 8 years ago

You shouldn't need pixels at all as the moviePlayer has a texture reference you can pass in. However getting that texture into the right format can be a bit tricky (which is why I use the FBO in the above link)

jordiexvision commented 7 years ago

However getting that texture into the right format can be a bit tricky (which is why I use the FBO in the above link)

@jvcleave could you please elaborate on how tricky would it be and why? I'm also writing a video module using ImGui so I wonder what will be the best way to pass the texture to ImGui. Will the use of ofFBO be much slower? what are the requirements of the machine if using ofFBO vs ofTexture?

Thank you so much for the wonderful addon. In my opinion this is by far the best gui we've got (oF ppl) so far :)

jvcleave commented 7 years ago

The hard part is getting an ofVideoPlayer to output a GL_TEXTURE_2D which I didn't have much luck with.

Fbos are fast - doubt if you will see any difference

jordiexvision commented 7 years ago

Thank you for your reply! I will give it a try with your suggestion (ofVideoPlayer = ofFBO) and see how far i get.

jordiexvision commented 7 years ago

I just saw there is a patch to support loading pixels without alpha: https://github.com/jvcleave/ofxImGui/issues/24

Somehow related to the ofVideoPlayer example.