Estou tendo problemas para distinguir a diferença prática entre ligar glFlush()
e glFinish()
.
Os documentos dizem isso glFlush()
e glFinish()
enviarão todas as operações em buffer para OpenGL para que se possa ter certeza de que todas serão executadas, a diferença é que glFlush()
retorna imediatamente onde como glFinish()
blocos até que todas as operações sejam concluídas.
Depois de ler as definições, concluí que, se fosse usá- glFlush()
las, provavelmente teria o problema de enviar mais operações ao OpenGL do que ele poderia executar. Então, só para tentar, troquei meu glFinish()
por a glFlush()
e eis que meu programa rodou (pelo que eu pude ver) exatamente o mesmo; taxas de quadros, uso de recursos, tudo era o mesmo.
Portanto, estou me perguntando se há muita diferença entre as duas chamadas ou se meu código não faz com que elas sejam executadas de maneira diferente. Ou onde um deve ser usado contra o outro. Também descobri que o OpenGL teria alguma chamada glIsDone()
para verificar se todos os comandos em buffer para a glFlush()
estão completos ou não (para que não se enviem operações para o OpenGL mais rápido do que podem ser executadas), mas não consegui encontrar tal função .
Meu código é o loop de jogo típico:
while (running) {
process_stuff();
render_stuff();
}