Accumulation buffer ...


I was experimenting with accumulation buffer. I’ve made a simple program and when it started it was running in great speed of 1 fps. It’s rather strange, I think, while I made only a few calls to accumulation buffer - one glAccum(GL_ACCUM, 0.25) and one glAcuum(GL_RETURN, 0.5). So what is wrong? Does it always run so slow??

Thanks for your advice…

it runs slow because the accumulation buffer sucks. It draw your scene a number of times before displaying it. What do you need the accum buffer for?

as far as i know, accumulation buffer is implemented in software on many (all ???) video card.
when you call glAccum(…), the color buffer (video memory) is copied in the accumulation buffer (main memory).
it is very slow …

Well it doesn’t matter what I am doing with accumulation buffer. There are plenty of interestig effects you can achive with it (at least from what I’ve heard). I just can’t belive it works so terrible! Meaby it isn’t supported with GPUs but it can’t work so slow. If that what you say is truth the accumulation buffer would be useless. What’s more - I used only two calls to accumulation buffer. Meaby reason is in initializing OpenGL?



if lets say for example you are trying to do motion blur or scene anti-aliasing on a cube. yes the accum buffer is fine but lets say you try to use motion blur or anti aliasing on a car with a million vertices even calling the accum buffer twice(which does nothing for motion blur) doubles the amount of time that it takes to render the scene. you are rendering 2 millon vertices instead of 1 million. Really there are better ways of doing things than using the accum buffer.

Indeed, your problem is that the accumulation buffer is emulated in software. Hardware accumulation buffers are supported only by some very recent graphics hardware, for example the ATI 9700 or the 3dLabs VP. OTOH, the GeForceFX still implements the accumulation buffer in software only.


OK. Now I see that accumulation buffer isn’t as interesting as I thought. But still… I’m not 100% sure about that