美文网首页
(十三)同步对象和栅栏

(十三)同步对象和栅栏

作者: YongtaoHuang | 来源:发表于2019-10-27 16:36 被阅读0次

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执行同步的基础知识。

相关文章

  • (十三)同步对象和栅栏

    OpenGL ES 3.0为应用程序提供了等待一组OpenGL操作在GPU上执行结束的机制。 同步多个图形上下文和...

  • GCD-线程栅栏

    GCD的线程栅栏分为同步栅栏(dispatch_barrier_sync)和异步栅栏(dispatch_barri...

  • 多线程的运用

    同步串行队列 同步并发队列 异步串行队列 异步并发队列 队列组 栅栏 队列组和栅栏的组合 信号量 死锁主线程 分析...

  • GCD中的栅栏函数和线程组

    一、栅栏函数(用于同步执行的block代码块) 1.同步栅栏函数 dispatch_barrier_sync(di...

  • GCD的常用函数(四)

    延时执行 1.使用NSObject方法 2.使用GCD 3.使用NSTimer 栅栏 结果: 结果: 同步栅栏和异...

  • dispatch_barrier_sync与dispatch_b

    同步栅栏和异步栅栏都能够阻塞队列上的任务,但是最大的区别在于能否阻塞当前线程。 异步栅栏 打印结果(运行了两次) ...

  • 学习OC

    1.函数和队列的区别?同步函数和异步函数的区别?串行队列和并行队列的区别?什么是栅栏函数 且有什么注意点? 栅栏方...

  • 基于CAS的一些锁(3)- CyclicBarrier

    这个同步工具CyclicBarrier直译为循环栅栏。立一个栅栏挡在前面,后面人满后把栅栏打开放行,再关闭栅栏,如...

  • 多线程二

    GCD 栅栏函数 dispatch_barrier_async 控制任务执行顺序,同步 保证线程安全 栅栏函数只能...

  • GCD分析(下)

    栅栏函数的应用 栅栏函数 作用: 控制任务执行顺序,同步 dispatch_barrier_async 前面的任务...

网友评论

      本文标题:(十三)同步对象和栅栏

      本文链接:https://www.haomeiwen.com/subject/amagpctx.html