# OpenGL FBO stops rendering

## Recommended Posts

Hi, I'm having a problem with my FBO's not showing any rendering after a window resize, and was wondering if anyone else has come across this. details: - running on win2K, ATI9800, - catalyst 6.2 (as directed to by the ATI driver selection webpage) - this is a windowed application, not full screen. - the gui is completely opengl based. All fine apart from: if the window resizes by a any amount via the top edge, if the window is maximized, or sometimes if the window is resized by a large amount, it seems that sometimes an application window/framebuffer resize can cause FBO's to stop rendering, with no GL or FBO errors reported. the application continues to work in all other respects, including gui. has anyone else seen this behaviour? many thanks, JD

##### Share on other sites
ah... just wanted to add that the application is multi-threaded, multi-context and has been very stable until i started to allow gui window resize, and that only FBO's seem to be effected. I know the ATI drivers can be ropey, I even managed to get them to fix a bug a few years back, but has anyone seen only FBO's stop responding?

##### Share on other sites
OK... seemed to fix this,

but I've been able to reduce the number of FBOs I require and everything is working lovely now.

##### Share on other sites
Oh dear

This isn't fixed, it can still fall over at any point. Also it once reported a fbo status which was unkown (dont know the number yet, not any of the standard errors, will catch it next time).

I've got checks for writing and reading back from the FBO's and the FrameBuffer.

Sometimes I can draw and read back from the FBO's and it all looks ok, until you try and use it as a texture, in which case I just get back the prev fbo.texture contents.
And sometimes it fails to even draw to the FBO.

In ether state the rest of the gl system carries on without any problems.

I can pull down and rebuild just the FBO's when this happens and it does recover, but this grinds the display. BTW its reproducable far more quickly the more graphics memory I use.

I wonder if the texture/fbo management in the driver has a bug or memory leak. So when it reallocates memory due to a FrameBuffer resize it loses some handles during shuffling the stuff around.

any ideas would be very welcome.

##### Share on other sites
Just off the top of my head are you setting the glViewPort() each time you render to a FBO... Meaning do you call glViewPort() in the FBO code also to setup the size you want... Please post some code. I am aiming in the dark here. :)

##### Share on other sites
Since it's Win 2k, ATI is not updating their drivers. Perhaps you can ignore this OS and just require XP and above.
It's a shame since Win2k is as nice as XP.

You could also try another similar card like 9500, 9600, 9700 and see if it makes a difference.

##### Share on other sites
Thank you people for your responses, I think I've got to the bottom of this now.

It had been a while since I'd checked the amount of resources I was requiring at different quality settings.

Basically, running the program at the higher quality setting wasn't just slowing stuff down, but could cause the graphic driver to fall over, by losing handles to textures/fbos or more often then not going into a such a major cache/paging routine that a gl function at some point would take upto 500ms on this machine (sometimes repeatedly until a different rendering sequence happens).

Once I realised this - I managed to rearrange the architecture to optimise texture/fbo caching as best I can, and if I run it at a lower quality setting on this card, everythings stable. I can mostly auto-recover from the handle corruption (since this only happens on framebuffer resize and can be detected) and if the system becomes slugish then I can suggest the user lowers the quality setting.

A last word, I was pretty impressed by how well the driver was managing considering the threashing i was giving it!

Thanks again

## Create an account

Register a new account

• ## Partner Spotlight

• ### Forum Statistics

• Total Topics
627682
• Total Posts
2978617
• ### Similar Content

• Both functions are available since 3.0, and I'm currently using glMapBuffer(), which works fine.
But, I was wondering if anyone has experienced advantage in using glMapBufferRange(), which allows to specify the range of the mapped buffer. Could this be only a safety measure or does it improve performance?
Note: I'm not asking about glBufferSubData()/glBufferData. Those two are irrelevant in this case.
• By xhcao
Before using void glBindImageTexture(    GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), does need to make sure that texture is completeness.
• By cebugdev
hi guys,
are there any books, link online or any other resources that discusses on how to build special effects such as magic, lightning, etc. in OpenGL? i mean, yeah most of them are using particles but im looking for resources specifically on how to manipulate the particles to look like an effect that can be use for games,. i did fire particle before, and I want to learn how to do the other 'magic' as well.
Like are there one book or link(cant find in google) that atleast featured how to make different particle effects in OpenGL (or DirectX)? If there is no one stop shop for it, maybe ill just look for some tips on how to make a particle engine that is flexible enough to enable me to design different effects/magic
let me know if you guys have recommendations.
• By dud3
How do we rotate the camera around x axis 360 degrees, without having the strange effect as in my video below?
Mine behaves exactly the same way spherical coordinates would, I'm using euler angles.
Tried googling, but couldn't find a proper answer, guessing I don't know what exactly to google for, googled 'rotate 360 around x axis', got no proper answers.

References:
Code: https://pastebin.com/Hcshj3FQ
The video shows the difference between blender and my rotation:

• By Defend
I've had a Google around for this but haven't yet found some solid advice. There is a lot of "it depends", but I'm not sure on what.
My question is what's a good rule of thumb to follow when it comes to creating/using VBOs & VAOs? As in, when should I use multiple or when should I not? My understanding so far is that if I need a new VBO, then I need a new VAO. So when it comes to rendering multiple objects I can either:
* make lots of VAO/VBO pairs and flip through them to render different objects, or
* make one big VBO and jump around its memory to render different objects.
I also understand that if I need to render objects with different vertex attributes, then a new VAO is necessary in this case.
If that "it depends" really is quite variable, what's best for a beginner with OpenGL, assuming that better approaches can be learnt later with better understanding?

• 9
• 13
• 12
• 10
• 12