opengl spec第4章 事件模型

4.1同步对象和栅栏

使用方法是把同步对象插入gl命令流来实现,比glfinish更加灵活。

栅栏的本质是命令流中的一个标记,它在GPU的绘制或者状态变化命令过程中被发送,起始时是无信号的状态(unsigaled),在触发之后,变成有信号的状态(signaled)。

glFenceSync

当我们调用glFenceSync之后,会生成一个新的栅栏对象,并且在opengl命令流中插入这个栅栏。

栅栏一旦变成有信号的状态,那么命令流当中栅栏之前的所有命令都已经执行完毕。

glDeleteSync

当我们完成等待一个同步对象时,或者不需要再等待它的状态变化时,应该删除这个同步对象。

4.1.1同步对象的等待

clientwaitsync

会强制客户端等待,直到服务端达到栅栏位置。

waitsync

用于服务端等待,与client不同的是,他用于阻塞GPU。

更多的是用于不同上下文之间的同步,比如,在一个上下文中使用transform feedback将数据写入缓存中,然后在另外一个环境中使用这些数据:

A线程通过绘制命令不断更新transform feedback 缓存的内容,然后通过调用fencesync启用栅栏。

B线程通过waitsync等待栅栏收到信号再继续执行绘制命令来读取数据。

4.1.2有信号

啥是有信号的状态?</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值