У меня возникли проблемы с различием практической разницы между вызовами glFlush()
и glFinish()
.
Документы говорят, что glFlush()
и glFinish()
будут вытолкнуть все операции с буфером в OpenGL, чтобы можно было убедиться, что все они будут выполнены, причем разница заключается в том, что glFlush()
возвращается сразу же, где glFinish()
блокируется до тех пор, пока все операции завершены.
Прочитав определения, я подумал, что если бы я использовал glFlush()
, я бы, вероятно, столкнулся с проблемой отправки большего количества операций в OpenGL, чем он мог бы выполнить. Итак, просто чтобы попробовать, я поменял свой glFinish()
на glFlush()
и вот и вот, моя программа запустилась (насколько я могу судить), точно такой же; частота кадров, использование ресурсов, все было одинаково.
Итак, мне интересно, есть ли разница между двумя вызовами или если мой код делает их разными. Или там, где нужно использовать против другого.
Я также понял, что OpenGL будет иметь какой-то вызов типа glIsDone()
, чтобы проверить, завершены ли все буферизованные команды для glFlush()
или нет (поэтому один не отправляет операции в OpenGL быстрее, чем они могут быть выполнены), но Я не мог найти такую функцию.
Мой код - типичный игровой цикл:
while (running) {
process_stuff();
render_stuff();
}