C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 哪些用于OpenGL客户端等待:glGetSynciv与glClientWaitSync?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我从 Sync objects的OpenGL规范不清楚,是否使用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进行渲染.
>一个线程正在流式传输/连续上传纹理,另一个线程在完成上传后呈现它们.每个渲染帧我们正在检查下一个纹理是否完成上传.如果有的话,我们开始渲染这个新的纹理,否则继续使用旧的纹理.
>决定只是客户端,我根本不想等待,但是快速地继续渲染正确的纹理.

这两种方法都有使用这些方法的人的例子,不是为了不等待,而是没有人会讨论使用一个或另一个的优点.

解决方法

引用红皮书,

而对于glClientWaitSync:

因此,基本上glGetSynciv()用于知道fence对象是否已经被发出信号,并且glClientWaitSync()被用于等待fence对象已经发出信号.

如果你只想知道一个栅栏对象是否已经发出信号,我建议使用glGetSynciv().显然,glClientWaitSync()需要更长的时间来执行glGetSynciv(),但我猜.希望我帮了你

大佬总结

以上是大佬教程为你收集整理的c – 哪些用于OpenGL客户端等待:glGetSynciv与glClientWaitSync?全部内容,希望文章能够帮你解决c – 哪些用于OpenGL客户端等待:glGetSynciv与glClientWaitSync?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。