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