Original Post
I apologize in advance for my self-taught graphics programming
Ok, so good programming means making the GPU run alongside the CPU. The question is how to go about doing this. As I understand (using DirectX as the example) GPU "calls" like DrawIndexedPrimitive are queued, allowing other CPU processing to occur along side the GPU. EndScene() waits for the queue to empty before going on, but hopefully all of the CPU updating has occurred along side the graphics stuff, so neither processor has to wait for the other very long.
Question 1: Is this correct? Is there anything to add to this?
Question 2: What is a good programming structure to deal with concurrency?
Here is the solution I am currently considering (and sort of using). It would make sense that if GPU stuff is queued, it should be called first. So when I first initialize my world I create the first frame by simply calling Update(