Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >opengl: glFlush()与glFinish()

opengl: glFlush()与glFinish()
EN

Stack Overflow用户
提问于 2010-01-26 22:41:17
回答 2查看 72.7K关注 0票数 112

我很难区分调用glFlush()glFinish()之间的实际区别。

文档中说,glFlush()glFinish()会将所有缓冲的操作推送到OpenGL,这样就可以确保它们都会被执行,不同之处在于glFlush()会立即返回where作为glFinish()块,直到所有操作完成。

读完定义后,我认为如果我要使用glFlush(),我可能会遇到向OpenGL提交的操作超过它所能执行的操作的问题。所以,为了尝试一下,我把我的glFinish()换成了glFlush(),你瞧,我的程序运行起来(据我所知),完全一样;帧率,资源使用,一切都是一样的。

所以我想知道这两个调用之间是否有很大的不同,或者我的代码使它们运行起来没有什么不同。或者其中一个应该用来对抗另一个。我还认为OpenGL会有一些像glIsDone()这样的调用来检查glFlush()的所有缓冲命令是否都是完整的(因此,向OpenGL发送操作的速度不会快于它们的执行速度),但我找不到这样的函数。

我的代码是典型的游戏循环:

代码语言:javascript
运行
AI代码解释
复制
while (running) {
    process_stuff();
    render_stuff();
}
EN

回答 2

Stack Overflow用户

发布于 2010-01-27 20:14:42

如果您没有看到任何性能差异,这意味着您正在做一些错误的事情。正如其他一些人提到的,你也不需要调用,但是如果你调用了glFinish,那么你就会自动失去GPU和CPU所能实现的并行性。让我深入探讨一下:

在实践中,您提交给驱动程序的所有工作都是批处理的,并可能在以后以某种方式发送到硬件(例如在SwapBuffer时间)。

因此,如果你在调用glFinish,你实际上是在强迫驱动程序将命令推送到图形处理器(在此之前,它会对其进行批处理,并且从未要求图形处理器工作),并停止CPU,直到推送的命令完全执行。所以在GPU工作的整个过程中,CPU不工作(至少在这个线程上)。在CPU执行其工作的所有时间(主要是批处理命令),GPU什么也不做。所以,glFinish应该会影响你的表现。(这是一个近似值,因为如果许多命令已经被批处理,驱动程序可能会开始让GPU处理一些命令。但这并不典型,因为命令缓冲区往往足够大,可以容纳相当多的命令)。

那么,你为什么要调用glFinish呢?我使用它的唯一一次是当我有驱动程序错误的时候。实际上,如果您发送给硬件的命令之一使GPU崩溃,那么识别哪个命令是罪魁祸首的最简单的选择就是在每次绘制之后调用glFinish。这样,您就可以缩小到底是什么触发了崩溃

顺便说一句,像Direct3D这样的API根本不支持Finish概念。

票数 8
EN

Stack Overflow用户

发布于 2012-05-22 09:38:28

glFlush实际上可以追溯到客户机-服务器模型。您通过管道将所有gl命令发送到gl服务器。那根管子可能会缓冲。就像任何可能缓冲的文件或网络i/o一样。glFlush只说“立即发送缓冲区,即使它还没有满!”。在本地系统上,这几乎是不需要的,因为本地OpenGL应用程序接口不太可能缓冲自己,而只是直接发出命令。此外,所有导致实际渲染的命令都将执行隐式刷新。

另一方面,glFinish是用于性能测量的。类似于对GL服务器的PING。它往返一条命令并等待,直到服务器响应“我空闲”。

如今,当地的司机对无所事事的含义有相当创造性的想法。是“所有像素都已绘制”还是“我的命令队列有空间”?此外,由于许多旧程序将glFlush和glFinish无缘无故地散布在其代码中,因此许多现代驱动程序只是忽略它们,将其视为“优化”。这不能怪他们,真的。

因此,总而言之:在实践中,将glFinish和glFlush都视为无操作,除非您正在为一个古老的远程SGI OpenGL服务器编写代码。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2143240

复制
相关文章
锁定直播间参与惊喜互动!
点击上方「蓝字」关注我们 腾讯云CDN双十一直播特惠,境内流量包年度冰点价限量抢购,200TB 境内流量包仅售14799元/年,1PB 境内流量包仅售69993元/年,更多规格流量资源0.06元/GB起! 今天下午15:00 锁定直播间来参与互动吧! 参与互动还可抽取腾讯鼠年公仔,Q币卡,腾讯视频会员,商务双肩包等好礼哦! 戳【阅读原文】或识别【二维码】预约直播 双十一特惠持续狂欢, 更多惊喜产品等你来挖掘! 还等什么,快来参与吧!
腾讯产业互联网学堂1
2023/05/29
7670
锁定直播间参与惊喜互动!
海量用户的实时互动直播云服务
实时互动直播架构的演进 公众号推荐: 公众号:VOA英语每日一听 微信号: voahk01 可长按扫码关注,谢谢
用户1263954
2018/01/30
3.8K0
海量用户的实时互动直播云服务
语音直播平台开发中直播间如何引导新用户付费,实现商业变现?
语音直播是指人们可以通过网络收听到远端正在进行的音频实况,比如课程教学、歌唱、闲聊等,且两端能够实现实时互动。目前语音主播平台开发主要分为三类:第一类是纯属“自娱自乐”,做直播只是为了打发闲暇时间,或是交友;第二类是内容型直播,涵盖领域包括脱口秀、讲段子、情感分享、才艺表演、有声剧、知识付费等等,目前这一类主播占整个公会的30%左右。最后一类就是讲究强“变现”逻辑的商业性直播,主播数量占整个公会的40%。
布谷安妮
2020/06/30
1.4K0
语音直播平台开发中直播间如何引导新用户付费,实现商业变现?
移动直播(LiteAV)如何比较统计直播间的观看人数?
方案一: 腾讯云直播提供统计 API,开发者可以通过调用 查询统计信息 接口来查询某条直播流的统计信息的观看人数。
腾讯云-yyuanchen
2019/08/27
2.3K0
直播预告 | 腾讯云AI展区现场互动直播
扫码入群参与直播互动 获取最新产品手册、技术干货、精美礼品 点击阅读原文了解更多腾讯云AI解决方案 回复【入群】可添加云AI助手,加入云AI产品、技术、认证等相关社群 回复【云梯计划】可了解更多TCA腾讯云人工智能从业者认证限时免费相关信息 回复【产品手册】可获得最新腾讯云AI产品及解决方案手册 · 往期推荐 AI Talk | 商场巡检机器人解决方案 AI Talk | 语音识别ASR幕后神器-模方平台 AI小白的最强入门指南(含价值2599元的薅羊毛秘籍) AI Talk | AI工业质检之以图搜
腾讯云TI平台
2022/01/27
8.3K0
基于WebRTC的互动直播实践
大家好,我是叶峰峰,来自映客直播,从事实时音视频的开发工作大概有七八年时间了,在加入映客后,也参与了映客实时互动直播的开发过程。本次分享主要介绍映客互动直播开发过程中遇到的一些问题,以及对直播场景下互动直播的一些优化。
LiveVideoStack
2021/09/01
2.6K0
直播间气泡效果
这个效果是之前看过的,正好是很典型的跟动画相关的例子,我这里就拿来跟大家分享一下,如果你以前看过又很熟悉动画那就可以略过,如果不是很熟悉或者没看过那不妨复习和学习一下,上图大家看下(好像转化成gif不
我就是马云飞
2018/02/05
2K0
直播间气泡效果
EasyDSS如何通过接口新增虚拟直播并推送到直播间?
流平台EasyDSS里有个直播的类型叫虚拟直播,虚拟直播的直播源有两种类型,一个是点播资源,一个是在线资源。点播资源可以从EasyDSS里的点播服务里面去配置,在线资源必须是直播的源地址。
TSINGSEE青犀视频
2021/12/03
7020
直播系统开发中都有哪些直播互动功能?
现在直播互动已经成为大家比较熟知的交流方式,可以通过直播沟通、学习、宣传、商业等,粉丝经济也是很多人加入主播的一个重要原因,展示自己的魅力,技能,知识,让更多的人了解自己。如何搭建一套比较完整的直播体系,直播系统开发中都有哪些直播互动功能?
布谷安妮
2019/09/29
2.5K0
直播系统开发中都有哪些直播互动功能?
生产实践 | Flink + 直播(三)| 如何建设当前正在直播 xx 数?
本文是「直播实时数据建设」系列的第三篇,主要介绍「生产侧指标的建设」,比如当前正在直播直播间数,或者主播数等。在介绍生产侧指标的建设过程之前,先回顾下上一节的「架构」图。
公众号:大数据羊说
2021/08/19
6550
生产实践 | Flink + 直播(三)| 如何建设当前正在直播 xx 数?
互动仪式链 | 直播情感化互动体验设计
「互动仪式」一词最早来源于美国社会学家戈尔曼,是指一种表达意义性的程序化活动(大到特殊节日举行的大型庆典,小到定期的家庭聚会、公司团建等活动)。这类活动对个体在群体中的参与感及群体生活的团结性来说具有重要意义。 后来兰德尔·柯林斯提出「互动仪式链」理论,认为在不同情境中个体间会产生互动行为,并在关键的互动仪式过程中再生出一种共同的关注焦点,产生高度的情感共鸣,最终这种个体间的情感能量聚集成为群体的情感能量,形成群体固有的情感符号及群体内部的规范准则。 ▲ 「互动仪式链」理论解析 低延迟高并发的流
腾讯ISUX
2021/12/22
3.4K0
周锦民:腾讯在线教育视频互动直播间技术实践
今天分享的主题分三个部分。第一部分,跟大家介绍一下腾讯课堂和企鹅辅导这两款产品。第二,讲一下课堂直播系统,和腾讯云这边的具体实践案例。第三,谈一下在线教育的房间系统设计方案和这几年过程中的优化效果。
腾讯云开发者社区技术沙龙
2018/07/02
3.9K0
周锦民:腾讯在线教育视频互动直播间技术实践
Linux如何查询当前登录的用户信息?
如果只是想查看当前登录的用户名,那么很简单,直接使用命令:whoami即可 示例:
用户1685462
2021/08/27
11.7K0
直播修仙:使用.NET 的 WebView2 如何获取请求的响应内容,以微信直播的互动直播为例
近几年直播行业快速发展,门槛也越来越低,越来越的人涌入直播大军。不得不说,直播不仅带来了更多的娱乐消遣,还提供了一个新型的就业方式。
桑榆肖物
2022/11/18
2.8K0
直播修仙:使用.NET 的 WebView2 如何获取请求的响应内容,以微信直播的互动直播为例
直播系统源码开发,一个社交直播产品的优质互动
视频直播系统源码的开发市场持续的火爆,很多小白可能以为手里有了直播源码就可以开工了,但关于流媒体传输方面的知识也是需要有一个简单了解的。对于一个社交直播产品来说,在播放端,观众希望能够实时地看到主播端推过来的视频流,并且和主播以及其他观众产生一定的互动,因此它可能包含一些像点赞、聊天和弹幕这样的功能,以及礼物这样更高级的道具。
布谷鸟小刘
2021/08/26
1.4K0
语音直播系统源码直播间场功能开发
以视频直播、短视频为行业元年的 2019 年,吸引了众多产品的入局,但随着同类产品渐多,流量抢夺也愈发激烈。相比真人视频形态的直播方式,语音直播系统源码因为不需要露脸、不需要颜值,一定程度上则为用户降低了直播的门槛,这一优势也将会吸引更多的用户成为主播,而收听直播的用户也可以不再需要只停留在直播间内,在操作体验上将更加方便用户可以边听语音直播边做其他事。
布谷安妮
2020/05/19
9150
语音直播系统源码直播间场功能开发
线上课堂教育行业选择互动直播时有哪些直播方案?
对线上课堂来说,互动直播的核心点在于低延迟、抗丢包和回声消除功能,行业内默认延迟超过800ms,用户体验就不友好了。目前行业内存在两种直播互动实现方案,我们先了解下这两种方案的实现流程和优缺点。
EasyNVR
2020/05/20
1.8K0
使用TRTC Web SDK实现互动直播
以主播身份进入房间进行直播的场景跟实时音视频通话场景流程一样,请参考使用TRTC Web SDK实现实时音视频通话。本文主要介绍以观众身份进入直播间。
yuliang
2021/03/02
2.5K0
互动直播推出有趣新特性
腾讯视频云为您提供:云直播、互动直播、点播、音视频通信、鉴黄等能力,我们把腾讯18年的音视频技术积累,变成全套的服务和源码,提供给您!
腾讯云音视频
2018/09/12
8730
深夜直播间免费看球的秘密……
前言 深夜三点。 秒针跳动发出滴答滴答的响声,其间夹杂着蚊子的低语。 今天客户又否了刚改好的方案,老婆说要不要再拼个三胎,小A君躺在床上睡不着。 翻个身,他拿起了手机。亮光闪烁着,映着他眉头紧锁的脸。 湖人最近的比赛怎么样了?好想念科比啊。 想着想着,小A君点开了短视频APP,推送的果然是关注的主播刚剪好的比赛片段。 粉丝群里,主播发布了免费观看直播的网址。 图:粉丝群中出现免费直播网站 来源:某短视频APP 小A君点开了那个神秘的网址,直播间里的主播小姐姐声音温柔,讲解专业,时不时让大家下载某私密聊
腾讯防水墙
2021/06/08
2.9K0

相似问题

如何找到包含匹配值的散列?

2258

如何找到包含匹配值的散列键

2239

Spring-仅在值不为空时才设置属性?

2427

linq:内连接为空值?

2256

改变SQL列:null为非null?

2368
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档