When is data sent to the GPU with openGL
<p>I've been looking into writing applications using OpenGL to render data on-screen, and there is one thing that constantly comes up -- it is slow to copy data into the GPU. </p>

<p>I am currently switching between reading the OpenGL SuperBible 7th Edition and reading various tutorials online, and I have not come across when data is actually sent to the GPU, I only have guesses. </p>

<ol>
<li>Is space allocated in the GPU's ram when I make calls to <code>glBufferStorage</code>/<code>glCreateVertexArrays</code>? Or is this space allocated in my application's memory and then copied over at a later time?</li>
<li>Is the pointer returned from <code>glMapBuffer*</code> a pointer to GPU memory, or is it a pointer to space allocated in my applications memory that is then copied over at a later time?</li>
<li>Assuming that the data is stored in my applications memory and copied over to the GPU, when is the data actually copied? When I make a call to <code>glCrawArrays</code>?</li>
</ol>