Tôi hiện đang bắt đầu học OpenGL ở trường và tôi đã bắt đầu làm một trò chơi đơn giản vào ngày khác (một mình, không phải cho trường học). Tôi đang sử dụng freeglut và đang xây dựng nó trong C, vì vậy đối với vòng lặp trò chơi của tôi, tôi thực sự đã sử dụng một chức năng mà tôi đã thực hiện glutIdleFunc
để cập nhật tất cả các bản vẽ và vật lý trong một lần. Điều này tốt cho các hình ảnh động đơn giản mà tôi không quan tâm quá nhiều về tốc độ khung hình, nhưng vì trò chơi chủ yếu dựa trên vật lý, tôi thực sự muốn (cần) trói buộc nó cập nhật nhanh như thế nào.
Vì vậy, nỗ lực đầu tiên của tôi là có chức năng của mình, tôi chuyển đến glutIdleFunc
( myIdle()
) để theo dõi thời gian đã trôi qua kể từ cuộc gọi trước đó và cập nhật vật lý (và hiện tại là đồ họa) cứ sau nhiều mili giây. Tôi đã từng timeGetTime()
làm điều này (bằng cách sử dụng <windows.h>
). Và điều này khiến tôi phải suy nghĩ, liệu sử dụng chức năng nhàn rỗi có thực sự là một cách hay để đi vòng lặp trò chơi?
Câu hỏi của tôi là, cách tốt hơn để thực hiện vòng lặp trò chơi trong OpenGL là gì? Tôi có nên tránh sử dụng chức năng nhàn rỗi?