我在区分如何调用 glFlush()
和 glFinish()
时遇到了麻烦。
官方文档说明 glFlush()
和 glFinish()
将把所有缓冲操作推送到OpenGL,以确保它们都被执行,不同之处在于glFlush()
会立即返回而glFinish()
会阻塞直到所有操作完成。
根据定义,我认为如果我使用 glFlush()
,可能会遇到向OpenGL提交的操作多于其可以执行的问题。所以,我尝试将我的 glFinish()
替换为 glFlush()
,结果我的程序运行良好(就我所知),帧率、资源使用等一切都没变。
因此,我想知道这两个函数之间是否有很大的区别,或者我的代码使它们没有任何不同之处。另外我还以为 OpenGL 会有类似 glIsDone()
这样的函数来检查 glFlush()
的所有缓冲命令是否已经完成(这样就不会比它们能够被执行得更快地向OpenGL发送操作),但是我找不到这样的函数。
我的代码是典型的游戏循环:
while (running) {
process_stuff();
render_stuff();
}