Atualmente, estou começando a aprender OpenGL na escola e comecei a fazer um jogo simples outro dia (por conta própria, não para a escola). Estou usando freeglut e construindo-o em C; portanto, para o loop do jogo, eu realmente estava usando uma função que fiz passar glutIdleFunc
para atualizar todo o desenho e a física de uma só vez. Isso foi bom para animações simples que eu não me importei muito com a taxa de quadros, mas como o jogo é baseado principalmente na física, eu realmente quero (preciso) amarrar a velocidade da atualização.
Portanto, minha primeira tentativa foi fazer minha função passar para glutIdleFunc
( myIdle()
) para acompanhar quanto tempo se passou desde a chamada anterior e atualizar a física (e atualmente os gráficos) a cada milissegundos. Eu costumava timeGetTime()
fazer isso (usando <windows.h>
). E isso me levou a pensar: usar a função ociosa é realmente uma boa maneira de fazer o loop do jogo?
Minha pergunta é: qual é a melhor maneira de implementar o loop do jogo no OpenGL? Devo evitar usar a função ociosa?