cannot create FBO-backer surface on windows/linux?

classic Classic list List threaded Threaded
5 messages Options
ac
Reply | Threaded
Open this post in threaded view
|

cannot create FBO-backer surface on windows/linux?

ac
If I set the requested caps with setFBO(true) on Windows (I think on Linux too), the chosen caps still return isFBO() as false. Am I missing something?
Reply | Threaded
Open this post in threaded view
|

Re: cannot create FBO-backer surface on windows/linux?

Sven Gothel
Administrator
On 11/27/2012 04:55 PM, ac [via jogamp] wrote:
> If I set the requested caps with setFBO(true) on Windows (I think on Linux
> too), the chosen caps still return isFBO() as false. Am I missing something?

FBObject backed GLAutoDrawable is only supported via GLDrawableFactory
for offscreen GLAutoDrawables on all platforms.

Only on OSX, certain usual onscreen GLAutoDrawables maybe
forced to use FBO, if they implement OffscreenLayerOption like our AWT GLCanvas.

Note: Our NewtCanvasAWT impl. it's as well, allowing FBO usage for
the NEWT window while attached.

See our many FBO use cases, but you probably simply want to use
  GLDrawableFactory.createOffscreen[Auto]Drawable(..)

Implementing OffscreenLayerOption for other windowing system is possible.
However we see this path only as a last resort, not a desired feature,
since it enforces manual composition to render the content to the
actual onscreen surface of the GLAutoDrawable.

~Sven



signature.asc (909 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: cannot create FBO-backer surface on windows/linux?

Sven Gothel
Administrator
In reply to this post by ac
On 11/27/2012 05:12 PM, Sven Gothel wrote:

> On 11/27/2012 04:55 PM, ac [via jogamp] wrote:
>> If I set the requested caps with setFBO(true) on Windows (I think on Linux
>> too), the chosen caps still return isFBO() as false. Am I missing something?
>
> FBObject backed GLAutoDrawable is only supported via GLDrawableFactory
> for offscreen GLAutoDrawables on all platforms.
>
> Only on OSX, certain usual onscreen GLAutoDrawables maybe
> forced to use FBO, if they implement OffscreenLayerOption like our AWT GLCanvas.
>
> Note: Our NewtCanvasAWT impl. it's as well, allowing FBO usage for
> the NEWT window while attached.
>
> See our many FBO use cases,
One of the many TestFBO* here


<http://jogamp.org/git/?p=jogl.git;a=tree;f=src/test/com/jogamp/opengl/test/junit/jogl/acore;hb=HEAD>

> but you probably simply want to use
>   GLDrawableFactory.createOffscreen[Auto]Drawable(..)
>
> Implementing OffscreenLayerOption for other windowing system is possible.
> However we see this path only as a last resort, not a desired feature,
> since it enforces manual composition to render the content to the
> actual onscreen surface of the GLAutoDrawable.
>
> ~Sven


signature.asc (909 bytes) Download Attachment
ac
Reply | Threaded
Open this post in threaded view
|

Re: cannot create FBO-backer surface on windows/linux?

ac
You mean that I can force the creation of an offscreen autodrawable to "attach" to the main surface on windows by using GLDrawableFactory.createOffscreenDrawable(..)?

I didn't find examples that use GLDrawableFactory.createOffscreenDrawable(), is there any I should look at in particular?

Reply | Threaded
Open this post in threaded view
|

Re: cannot create FBO-backer surface on windows/linux?

Sven Gothel
Administrator
On 11/27/2012 07:04 PM, ac [via jogamp] wrote:
> You mean that I can force the creation of an offscreen autodrawable to
> "attach" to the main surface on windows by using
> GLDrawableFactory.createOffscreenDrawable(..)?

Nope, it's either or.

What I meant is that on OSX FBO usage (GLFBODrawableImpl) is forced
under certain circumstances (Applet, JVM version) and the CALayer compositing
(AWT GLCanvas and NewtCanvasAWT).

We _could_ implement a general FBO usage for all platforms ofc,
and might be a possible last resort (Raspb-Pi, ..).
A similar mechanism is used in GLJPanel.

However, right now this offscreen FBO compositing into
our onscreen GLAutoDrawable components or NewtCanvasAWT is considered
only a last resort solution.

You can ofc do this manually at all times, like:

<http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOOnThreadSharedContext1DemoES2NEWT.java;h=7d9a9c662316f00c5ee9fbe3b7161d9ad08d71ea;hb=HEAD>

or

<http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOOffThreadSharedContextMix2DemosES2NEWT.java;h=3ecf89bfcb8f17a71774151bca6c507263264bdd;hb=HEAD>

>
> I didn't find examples that use GLDrawableFactory.createOffscreenDrawable(),
> is there any I should look at in particular?

<http://jogamp.org/git/?p=jogl.git;a=blob;f=src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java;h=2dc547f39b55a2f0541a960a41bbb9437f78834c;hb=HEAD>

and in general within

<http://jogamp.org/git/?p=jogl.git;a=tree;f=src/test/com/jogamp/opengl/test/junit/jogl/acore;hb=HEAD>

(as posted before)

~Sven



signature.asc (909 bytes) Download Attachment