当前位置:  开发笔记 > 编程语言 > 正文

哪个用于OpenGL客户端等待:glGetSynciv与glClientWaitSync?

如何解决《哪个用于OpenGL客户端等待:glGetSynciv与glClientWaitSync?》经验,为你挑选了0个好方法。

我不清楚OpenGL规范中的Sync对象,是否使用glGetSynciv或者glClientWaitSync我想在不等待的情况下检查同步对象的信号.以下两个命令如何在行为和性能方面进行比较:

GLint syncStatus;
glGetSynciv(*sync, GL_SYNC_STATUS, sizeof(GLint), NULL, &syncStatus);
bool finished = syncStatus == GL_SIGNALED;

VS

bool finished = glClientWaitSync(*sync, 0 /*flags*/, 0 /*timeout*/) == ALREADY_SIGNALED;

问题的一些细节:

是否glGetSynciv执行到GL服务器的往返?

在驱动程序支持/错误方面是否有任何首选方法?

可能是方法死锁还是不立即返回?

一些背景:

这适用于视频播放器,它将图像从物理源流式传输到GPU进行渲染.

一个线程是流式/连续上传纹理,另一个线程在完成上传后呈现它们.每个渲染帧我们正在检查下一个纹理是否已完成上传.如果有,那么我们开始渲染这个新纹理,否则继续使用旧纹理.

决定只是客户端,我不想等待,但很快就会继续呈现正确的纹理.

这两种方法都有人使用它们以便不等待的例子,但似乎没有人讨论使用其中一种的优点.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有