Also, Nicol Bolas is the name of the chaos dragon from Magic The Gathering. Coincidence? Lol.
Anyway, the description is quite concise in my opinion.
A framebuffer object is a place to stick images so that you can render to them. Color buffers, depth buffers, etc all go into a framebuffer object.
A renderbuffer is like a texture, but with two important differences:
- It is always 2D and has no mipmaps. So it's always exactly 1 image.
So you're talking about two mostly separate concepts. Renderbuffers do not have to be "for depth testing." That is a common use case for renderbuffers, because if you're rendering the colors to a texture, you usually don't care about the depth. You need a depth because you need depth testing for hidden-surface removal. But you don't need to sample from that depth. So instead of making a depth texture, you make a depth renderbuffer.
- You cannot read from a renderbuffer. You can attach them to an FBO and render to them, but you can't sample from them with a texture access or something.
But renderbuffers can also use colors rather than depth formats. You just can't attach them as textures. You can still blit from/to them, and you can still read them back withglReadPixels. You just can't read from them in a shader.
http://stackoverflow.com/questions/9850803/glsl-renderbuffer-really-required
So you can't really use a renderbuffer for anything yourself. You put it in there so the system has a place to write things.
The framebuffers are for things you plan to work with.
So you can't really use a renderbuffer for anything yourself. You put it in there so the system has a place to write things.
The framebuffers are for things you plan to work with.