I get the impression that glBufferData requires an actual instance of the structure, not a pointer to an instance of the structure.
Right. Effectively glBufferData creates a flat copy of the data previously set to it at the address specified by it through the data parameter.
which I am missing somewhere, which can cancel the links to my pointers, because it passes the data that I provide?
You think of client-side vertex arrays, and they are among the oldest OpenGL features. They work with OpenGL-1.1, released 19 years ago.
You just do not use a buffer object, i.e. do not call glGenBuffers, glBindBuffer, glBufferData and pass the client-side data address directly to glVertexPointer or glVertexAttribPointer.
However, I highly recommend actually using buffer objects. Data must be copied to the GPU in any case so that it can be visualized. And doing this through a buffer object allows the OpenGL driver to work more efficiently. In addition, since OpenGL-4, the use of buffer objects is no longer mandatory.
source share