我无法区分调用 glFlush()
和 glFinish()
之间的实际区别。
文档说,glFlush()
和 glFinish()
将把所有缓冲操作推到 OpenGL,这样就可以确保它们都将被执行,不同之处在于 glFlush()
会立即返回到 glFinish()
阻塞的位置,直到所有操作完成。
在阅读了定义之后,我认为如果使用 glFlush()
,我可能会遇到向 OpenGL 提交的操作比它能执行的操作多的问题。所以,仅仅是为了尝试,我把我的 glFinish()
换成了 glFlush()
,然后你瞧,我的程序运行(据我所知) ,完全一样; 帧速率,资源使用,所有的一切都是一样的。
所以我想知道这两个调用之间是否有很大的区别,或者我的代码使它们运行起来没有什么不同。或者一个应该用在哪里,另一个应该用在哪里。
我还认为 OpenGL 会有一些类似于 glIsDone()
的调用来检查 glFlush()
的所有缓冲命令是否完成(所以不会比执行操作更快地将操作发送到 OpenGL) ,但是我找不到这样的函数。
我的代码是典型的游戏循环:
while (running) {
process_stuff();
render_stuff();
}