There is some conflicting information on the STREAM usage specifier.

Apple's documentation states you should use double buffering and update the stream buffer that is not being read by the GPU.

OpenGL's reference documentation states you should only modify the contents of the buffer once. Which implies you should create a new buffer to write data instead of reusing the existing buffer.

Is there a reason to use the more complicated double buffering technique?


This is what I've experienced:

GL_STATIC_DRAW - for static content, which never changing (examples: terrain, buildings)

GL_DYNAMIC_DRAW - for spontaneously changing data (examples: skybox, units, characters, anything that relies on actual input)

GL_STREAM_DRAW - for constantly updating data (examples: some 2D text like FPS counter, particles)

You can have a tiny FPS drop if you choose the wrong usage.

  • 1
    \$\begingroup\$ This doesn't address the question which was asked. \$\endgroup\$ – Trevor Powell Aug 14 '13 at 23:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.