Trong tất cả các mẫu mã mà tôi đã xem, vòng lặp trò chơi trông giống như thế này:
while(true)
{
InputAndUpdate();
Draw();
SwapBuffers();
}
Tuy nhiên, điều này không phá hủy sự song song giữa CPU và GPU? Sau cuộc gọi bộ đệm trao đổi, GPU sẽ ngồi yên trong khi CPU đang xử lý đầu vào và cập nhật. Sau đó, khi CPU đã hoàn thành việc đưa ra các lệnh vẽ, nó sẽ đợi cho đến khi GPU kết thúc kết xuất. Tại sao nó không được thực hiện như thế này? :
while(true)
{
Draw(); //First issue the draw commands
InputAndUpdate(); //Update while the GPU is busy rendering
SwapBuffers(); //Now block and wait for the GPU to finish
}