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