openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!垂直同步打开,那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等垂直同步信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的…

大家好,又见面了,我是你们的朋友全栈君。

垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!

垂直同步打开,那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等垂直同步信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。

说到垂直同步,可能有些小伙伴还很陌生。因为这是显示器分出电竞方向之后新出现的技术,以前都是显示器围着显卡转,而垂直同步则是让显卡围着显示器转。

关闭垂直同步,那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。

正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!

对于那些高速运行的游戏,比如实况,FPS游戏,打开后能防止游戏画面高速移动时画面撕裂现象,当然打开后如果你的游戏画面FPS数能达到或超过你显示器的刷新率,这时你的游戏画面FPS数被限制为你显示器的刷新率。你会觉得原来移动时的游戏画面是如此舒服,如果达不到会出现不同程度的跳帧现象,FPS与刷新率差距越大跳帧越严重(为什么?)。关闭后除高速运动的游戏外其他游戏基本看不出画面撕裂现象。

 

 

 

 

相信很多喜欢玩游戏的人对于垂直同步这个选项非常熟悉,在很多游戏的画面设置里都有这个选项。那么垂直同步究竟有什么用途?我们到底要不要打开它呢?今天小编就针对这些问题为大家解答。

垂直同步又称场同步,我们平时所说的打开垂直同步就是指将该信号送入显卡的3D图形处理部分,从而让显卡在生成3D图形时受垂直同步信号的控制。如果想要了解垂直同步有什么用途,我们需要先来了解一下,在我们没有开启垂直同步的时候,我们所看到的游戏画面是如何显示的。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

首先,我们在电脑上看到的画面本质上是由一幅幅图片快速地连续显示而来的。具体过程是显卡画好一幅画面之后,这幅画面会被写入到一个“帧缓冲器”中,而这个“帧缓冲器”分为一个前缓冲和一个后缓冲,显示器负责显示前缓冲的画面,显卡就负责在后缓冲中画画。当显卡在后缓冲画完一幅画之后,前缓冲就会变成后缓冲,后缓冲变成前缓冲,就像火车头与火车尾一样交替的进行工作。这个就是我们在没有开启垂直同步时画面显示的一套流程。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

其次,帧率是用于测量显示帧数的量度,它的测量单位为每秒显示帧数(fps)或赫兹(hz)。目前市面上的显示器的刷新率大多数都是60hz,而60hz的意思就是这个显示器每秒钟会显示60幅画面,但如果显卡的画图的速度超过了显示器每秒钟显示画面的速度会怎么样呢?

假设显卡每秒钟可以画90幅画面,所以在这个流程中如果出现显示器正在显示前缓冲器的画面,但因显卡画图速度过快,它已经画完后缓冲器的画面了,然后开始画前缓冲器的画面,但我们的显示器还没有把之前的画面显示完整,就会出现显卡画了一幅新的画面,然后直接把前缓冲器之前的画面覆盖掉的情况,这时显示器只能接着显示显卡新画的画面,于是显示器上的一幅画面成了前后两幅画的结合,这就是画面撕裂。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

当我们玩游戏的时遇到了画面撕裂的情况,开启垂直同步就是解决这个问题的办法。打开垂直同步后,显卡的画图速度就会被限制称显示器显示画面的速度,显卡会等待显示器把每一幅画面都显示完整了之后,它才开始画下一幅画面,这样一来就避免了画面撕裂的情况。但开启垂直同步之后又会产生另外一个问题,那就是显卡等显示器把画面显示完整后才开始画下一幅画面,显卡就产生了空闲,这样就限制了显卡画图的速度。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

帧数被限制后,当我们玩一些游戏时会明显感觉到游戏有延迟,而这个时候我们就可以开启三重缓冲的选项。开启了这个选项之后,会在前文所说的“双重缓冲”基础上再增加一个后缓冲,这样一来显卡就不需要等待显示器把画面显示完整了再开始画下一幅,而是选择直接在另一个后缓冲画图,这样就缓解了开启垂直同步之后画面有延迟的情况。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

所以一般来讲,如果我们游戏画面没有撕裂的情况,就不用开始垂直同步,但如果有撕裂的情况,又不想画面有延迟,我们就可以打开三重缓冲选项。但是三重缓冲也并非完美无瑕。首先由于需要一个额外的帧缓冲区,因此它会占用更多的显存空间。其次,它的延迟虽然远远低于双重缓冲下的垂直同步,但相比不开垂直同步还是可能略高一点。

openGL之API学习(六十九)水平同步 垂直同步「建议收藏」

那么垂直同步和三重缓冲到底该不该开呢?理论上来说画面撕裂和画面延迟是无论如何都要付出一个的,但实际情况是很多优秀游戏已经做到了不管你开不开垂直同步,都不会产生太大延迟或者画面撕裂严重。如果是玩的非射击类游戏,并且游戏能跑到60帧以上时,我还是建议大家开启垂直同步的,毕竟开启垂直同步虽然会锁帧而且增加画面延迟,但大家眼里对画面撕裂的感知还是要比手上那十几毫秒的延迟强得多的,不过有些游戏在三重缓冲下的画面延迟会非常高,那种情况还是把它关了吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143643.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sql语句修改字段类型「建议收藏」

    sql语句修改字段类型「建议收藏」修改字段名:sp_rename‘表名.原字段名’,’表名.新字段名’例如我想把Card_Info表里面的OnDate改为Date:sp_rename‘Card_Info.OnDate’,’Card_Info.Date’修改数据类型:altertable表名altercolumn列名数据类型例如我想把Card_Info表里面的Time数据类型由time(7…

    2022年6月11日
    89
  • springboot转发和重定向_nginx重定向和转发的区别

    springboot转发和重定向_nginx重定向和转发的区别重定向就是浏览器重新发送新的请求,请求域改变,浏览器上的地址栏有变动,发送的地址是相对于项目的地址;转发就是服务器在服务器内部进行请求的转发,请求域不变,浏览器上的地址栏不变;一般在处理一个请求后再跳转到另一个处理请求时,进行重定向redirect;当请求不能变时,用forward转发请求。更详细的解释…

    2025年9月2日
    6
  • 查看Android apk签名信息

    查看Android apk签名信息必须先安装jdk并配置好环境变量,然后运行->CMD->输入以下命令keytool-list-printcert-jarfileapp.apkWmImac-52:~fanyuanhua$keytool-list-printcert-jarfile/Users/fanyuanhua/2019-10/备忘录记事本/10.25/app-tencent-release-…

    2022年6月8日
    39
  • 什么是ER图?数据库ER图基础概念整理

    什么是ER图?数据库ER图基础概念整理前置知识概述:数据模型的基本概念模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模型。1)概念数据模型概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是现实世界到信息世界的第一层抽象,强调其语义表达功能,易于用户理解,是用户和数据库设计人员交流的语言,主要用于数据库设计。这类模型中最著名的是实体联系模型,简称E-R模型。2)基本数据

    2022年6月21日
    43
  • 报错解决:Downloading VS Code Server failed. Please try again later.

    报错解决:Downloading VS Code Server failed. Please try again later.之前写过教程:Windows下使用VSCode远程SSH连接Linux服务器进行开发vscode使用ssh密钥登录远程Linux–vscoderemotelinuxsshkey

    2022年5月27日
    225
  • break和continue return_break语句和continue语句的区别

    break和continue return_break语句和continue语句的区别前言一般刚开始遇到这三个关键字,都会有点乱,return还好,特别是break和continue,特别容易搞混,所以这里记录一下正文 1、return:直接跳出当前的方法,返回到该调用的方法的语句处,继续执行 2. break:在循环体内结束整个循环过程 3. continue:结束本次的循环,直接进行下一次的循环测试 这样说还

    2025年9月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号