OpenGL ES 3.0为应用程序提供了等待一组OpenGL操作在GPU上执行结束的机制。
同步多个图形上下文和线程中的GL操作,这对于许多高级图形应用来说很重要。
刷新和结束
OpenGL ES 3.0 API继承了OpenGL的客户端-服务器模型。应用程序(客户端)发出命令,命令由OpenGL ES(服务器)实现处理。
glFlush命令用于数显当前OpenGL ES上下文中未决的命令,并将它们发往服务器。
如果客户端要求这些命令完成,应该使用glFinish命令。
为什么使用同步对象
OpenGL ES 3.0引入了一个称作栅栏的新特性,可以在GL命令中出入栅栏命令,然后将与需要等待的同步对象关联。
创建和删除同步对象
GL命令流中插入栅栏命令并创建同步对象:
GLsync glFenceSync(GLenum condition, GLbitfield flags)
删除同步对象:
GLvoid glDeleteSync(GLsync sync)
等待和向同步对象发送信号
glClientWaitSync调用阻塞客户,并等待一个同步对象收到信号:
GLenum glClientWaitSync(GLsync sync, GLbitfield flags,
GLuint64 timeout)
glWaitSync立即返回且阻塞GPU,直到同步对象收到信号:
void glWaitSync(GLsync sync, GLbitfield flags,
GLuint64 timeout)
小结
本章主要讲解OpenGL ES 3.0中宿主应用和GPU执行同步的基础知识。
网友评论