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

Reply via email to