This is not really OpenTK related, but since you are the Guru behind the OpenGL bindings and the Tao forum won't let me create new topics i figured i might aswell ask here. This puzzles me for quite a while now, but it seems beyond my understanding.
The way i understand OpenGL, it doesn't immediately process the Instructions you call. Instead it queues all received Instructions and schedules their execution on it's own. Assuming this is correct, and let's assume we pin and pass a float as parameter to glVertexPointer() then release the pin, how can one be sure the GC didn't move the array already by the point of time OpenGL actually executes the Instruction? The way i understand it, once you call .Free() or end a fixed-block the object is immediately allowed to be moved again? I've tried to prove this by passing excessive amounts of glVertexPointers and immediately trash the array after passing it, but either my GPU can process the Instructions much faster than the CPU can supply data, or OpenGL really executes Instructions immediately rather than queueing them? Clarification would be appreciated :)
I'm not having any problems with pinning, just curious how this works under the hood.