Hi Victor, Happy to hear you could get it to work!
Have a good weekend! Dirk On Sat, Dec 12, 2020 at 4:43 AM Victor Haefner <victor.haef...@gmail.com> wrote: > Good morning, > > just a final update on this issue, now its working: > - added a baseFramebufferID in FrameBufferObject::deactivate > - removed texBuf->setReadBack(true); when creating the fbo, this was > messing with rendering to texture. > > thanks for the help! > > best regards, > Victor > > > On Fri, Dec 11, 2020 at 7:51 PM Victor Haefner <victor.haef...@gmail.com> > wrote: > >> Hmm, I realized the simplestage does also allow to register pre/post >> render functors >> In the pre render function the active fbo corresponds to the stage fbo >> I the post render function too. >> When changing the fbo in the pre render function the stage draws to the >> widget as expected. >> When changing it in the post rendering it does nothing. >> In OSGRenderPartition.cpp, in doExecution, the postrender functions are >> called before _pRenderTarget->deactivate >> I guess the fbo gets deactivated then.. >> >> furthermore the active FBO during renderEnter and renderLeave corresponds >> to the gtk fbo, >> thus replacing them wont help. >> >> I may still try with a stage as you suggested, >> >> best regards, >> Victor >> >> On Fri, Dec 11, 2020 at 5:48 PM Carsten Neumann < >> carsten.p.neum...@gmail.com> wrote: >> >>> Hello Victor, >>> >>> On Fri, Dec 11, 2020 at 10:54 AM Victor Haefner < >>> victor.haef...@gmail.com> wrote: >>> >>>> ..hmm, I think thats what glarea is already doing, and rendering most >>>> scenes works perfectly. >>>> It is only when using a stage that the gtk fbo get unbound. >>>> >>> >>> right, I meant putting a Stage at the top of your scene graph so that >>> OpenSG does not attempt to render anything into the default frame buffer >>> and manually blit that image to the GtkGLArea. >>> >>> >>>> I thought I could rebind them on renderLeave of the stage, but >>>> subclassing it is tricky ;) >>>> Any hints on how to do this without necessarly registering a new type >>>> in OpenSG? >>>> I just want to override the renderLeave function. >>>> >>>> Maybe is there another way by messing with the render action? >>>> I'm not sure.. >>>> >>> >>> I believe there is a CallbackStage (or similar name) that allows you to >>> execute code before/after the subtree below that stage is rendered; that >>> should allow you to bind the Gtk framebuffer object. >>> >>> Cheers, >>> Carsten >>> >>> >>> >>>> On Thu, Dec 10, 2020 at 11:18 PM Carsten Neumann < >>>> carsten.p.neum...@gmail.com> wrote: >>>> >>>>> Hello Victor, >>>>> >>>>> hmm, I can't really claim to have any understanding of how this works >>>>> any longer, but a quick look at >>>>> Source/System/Window/FrameBufferObjects/OSGFrameBufferObject.cpp:740 >>>>> suggests that it always binds the default framebuffer (i.e. >>>>> glBindFramebuffer(0)) when deactivating an FBO - it doesn't look like >>>>> there >>>>> is a customization point for this behaviour. >>>>> Can you perform all your OpenSG rendering into an FBO and when it has >>>>> completed manually blit to the GtkGLArea? It's a bit unnecessary work >>>>> performing that extra copy, but may be the quickest way to get it running. >>>>> >>>>> Cheers, >>>>> Carsten >>>>> >>>>> On Thu, Dec 10, 2020 at 3:24 PM Victor Haefner < >>>>> victor.haef...@gmail.com> wrote: >>>>> >>>>>> Hello everyone, >>>>>> >>>>>> I just ported my application from Gtk2 to Gtk3. >>>>>> Until now I used gtkglext to render with OpenSG into a widget. >>>>>> There is a gtk3 port of gtkglext, but I had artifacts that I couldn't >>>>>> get rid of. >>>>>> So I tried GtkGLArea, it works, but I have a problem when using >>>>>> framebuffers (for example for texture rendering). >>>>>> GtkGLArea does not render directly to the window but instead to a >>>>>> framebuffer and later cairo drawns the framebuffer to the widget vie a >>>>>> shared GL context.. >>>>>> When I use a framebuffer from OpenSG then once the rendering to it is >>>>>> done, OpenSG resets the buffer with glBindFramebuffer(0) if I recall >>>>>> correctly. >>>>>> Normally this would be fine, but with the GtkGLArea it results in a >>>>>> black window. >>>>>> Instead It would need to bind to the framebuffers from the gtkglarea. >>>>>> There is a convenience function to do this, how can I tell OpenSG to >>>>>> call it after using a framebuffer? >>>>>> >>>>>> best regards, >>>>>> Victor >>>>>> _______________________________________________ >>>>>> Opensg-users mailing list >>>>>> Opensg-users@lists.sourceforge.net >>>>>> https://lists.sourceforge.net/lists/listinfo/opensg-users >>>>>> >>>>> _______________________________________________ >>>>> Opensg-users mailing list >>>>> Opensg-users@lists.sourceforge.net >>>>> https://lists.sourceforge.net/lists/listinfo/opensg-users >>>>> >>>> _______________________________________________ >>>> Opensg-users mailing list >>>> Opensg-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/opensg-users >>>> >>> _______________________________________________ >>> Opensg-users mailing list >>> Opensg-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/opensg-users >>> >> _______________________________________________ > Opensg-users mailing list > Opensg-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensg-users >
_______________________________________________ Opensg-users mailing list Opensg-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensg-users