When rendering using glVertexPointer and friends with the usage they were originally implemented with, youd pass a pointer to the specific data before making a draw call
glEnableClientState(…)
glPointer(…)
…
glDraw(…)
…
glDisableClientState(…)
with vbos, are these calls now strictly for setup? and dont need to be called before each glDraw* once vbo has been bound
// vbo setup usage?
glGenBuffers()
glBindBuffer()
glBufferData()
glEnableClientState(…)
gl*Pointer(…)
…
// vbo draw simply…?, with no need for glPointer calls before
// draw call?
glBindBuffer()
glDraw(…) // just do the call?
Im asking because because im confused by two sources. The first is the nVIDIA’s “Using VBO’s” document which says
“Avoid Calling glVertexPointer() more than once per VBO…”
“…glVertexPointer should be called one time for one VBO…”
“…The binding operation is cheap compared to the setup of various pointers…”
which makes me think they should only be called at setup…
The other source is the small code examples at the bottom of the ARB VBO spec. Where they seem to call gl*Pointer just before drawing whether they are giving a traditional usage example or an example of using VBOs
So im wondering, if gl*pointer calls do setup, and are potentially costly do you only call them when setting up the VBO?