i’m working in a project where i need to do some off screen rendering and send it to the layer for displaying that is being hosted by WPF.
Initially i completed about 80% of my project using pBuffer but there was performance issue.
Then i rendered my data directly on a screen and the performance was impressive. But the issue i faced is “airspace restriction” with WPF.
Then i came to know about FBO but my hardware was not supporting it.
Then i switched to Direct3D where there is way to render in a WPF surface.
But now i got again the same performance issue because the WPF D3D image is kind of offscreen rendering in Direct3D and the performance will not be same like onscreen.
Now guys i’m again coming to OpenGL and having doubt that, is FBO a really a offscreen rendering with same performance as onscreen. I did some basic study about the FBO and i’m confused whether it will serve my purpose or not.
So before starting with FBO i want to ask, is there any way with FBO so that i can get the impressive performance.
keeping in mind that i cant remove the WPF controls from the screen.
Thanks to all
What is the videocard? If the D3D performance was horrible, then probably the videocard doesn’t support offscreen rendering nicely, thus it’ll underperform with FBOs, too. On decent low-end cards, rendering to an FBO is as fast as onscreen. (obviously then blitting/rasterizing that FBO onscreen will take up to a millisecond or two afterwards).
The card i’m using is intel G33 express chipset or specifically GMA 3100 with latest driver.
The performance with D3D image is better than the pBuffer but its not like onscreen rendering with either D3D or openGL.
My another system is having an FBO support which is i think have GMA 3150 or GMA X3100 which are good for mid level graphics application.
Did i answer your question? can i expect a good performance with FBO keeping my restriction in view?
Thanks for replying
Frankly that’s the worst low-end gpu . (devs disable HW acceleration on it, understandably).
But there is some hope: glCopyTexSubImage2D() . May lead to some garbage offscreen data if your window is covered by another window, but could still be useful.
Ah, do you do double-buffering or just render to the front-buffer?
(I might not be able to help on this issue, but still polling for env-data for others to see if they can lend a hand).
Ya the intel cards are very low end but have to continue with this specific device only. i cant own a dedicated card
Actually my problem is i have to transfer my framebuffer contents to WPF owned layer. I did it using the pBuffer but it was slow.
i can get the window handle from the upper layer where i have to sent the data but there are WPF controls are sitting there already and if i do the onscreen approach i’ll get the airspace problem. Tell me with FBO how i can handle this issue if there are some intermediate solution available.
Which will give me better performance than pBuffer. Some people referring to invisible window rendering approach in some other thread. But i need some specific answers regarding performance.
Thanks for replying
But i need some specific answers regarding performance.
OpenGL is a specification. It does not and cannot give you “specific answers regarding performance.” And since you’re using an Intel GPU, I wouldn’t get my hopes up. OpenGL is using the same hardware as D3D, so if D3D was having performance problems related to hardware, OpenGL won’t fare any better.
The most you can do is to implement it and see what happens.