public void StartRenderProcessing(out ChangeBuffer renderBuffer, out GameTime gameTime)
 {
     //wait for start signal
     renderFrameStart.WaitOne();
     //ensure cache coherency
     Thread.MemoryBarrier();
     //get the render buffer
     renderBuffer = buffers[currentRenderBuffer];
     //ret the game time
     gameTime = this.gameTime;
 }
 public void StartUpdateProcessing(out ChangeBuffer updateBuffer, out GameTime gameTime)
 {
     //wait for start signal
     updateFrameStart.WaitOne();
     //ensure cache coherency
     Thread.MemoryBarrier();
     //get the update buffer
     updateBuffer = buffers[currentUpdateBuffer];
     //get the game time
     gameTime = this.gameTime;
 }
 public DoubleBuffer()
 {
     //create the buffers
     buffers = new ChangeBuffer[2];
     buffers[0] = new ChangeBuffer();
     buffers[1] = new ChangeBuffer();
     //create the WaitHandlers
     renderFrameStart = new AutoResetEvent(false);
     renderFrameEnd = new AutoResetEvent(false);
     updateFrameStart = new AutoResetEvent(false);
     updateFrameEnd = new AutoResetEvent(false);
     //reset the values<
     Reset();
 }