Repeated GL Pointer Call Inquiry

Hey everyone, I’m currently working on something for OpenGL ES 2, and I have a question regarding the glEnableVertexAttribArray() and glVertexAttribPointer() calls.

I more or less understand what they do. However, I’m curious as to if it’s necessary to call them every single time you send data to the GPU. Basically I’m calling them once each for both the XYZ coordinates and the UV coordinates, then sending my data from a FloatBuffer with glBufferSubData(). I’m then calling glDrawElements() as I’m drawing via indices.

I’m wondering, though, if I can avoid making these four calls every single time I draw. Any advice regarding whether or not this is possible would be greatly appreciated.

If it was an option, I would just use VAOs, but I’d prefer not to use any of the extensions as I want to ensure device compatibility.

Thank you in advance!

Edit: Completely forgot to mention that I’m swapping between two VBOs and that they’re dynamic. My index buffer is, of course, static.