问题标签 [vsync]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
502 浏览

opengl - 如何更改 GPUView 中的 vsync 间隔

当在 GPUView 中单击切换垂直同步时,间隔似乎默认为 16.6 毫秒(60 赫兹),即使我的 OpenGL 应用程序在 75 赫兹的监视器上以 75 fps 的速度运行。如何更改 GPUView 中的垂直同步间隔?

0 投票
1 回答
2143 浏览

c++ - 如何在 Xlib 应用程序中等待 VSYNC?

我正在使用 XWindow Drawable、Pixmap 和 XRender 在屏幕上绘制一些东西。我可以看到有时会有闪烁。有没有办法等待VBLANK?我已经用谷歌搜索了很多,感觉就像在森林里寻找硬币。

不涉及 OpenGL。它是Linux(Ubuntu)。我可以使用 (nano)sleep(),但需要知道何时开始绘制。

0 投票
2 回答
1281 浏览

python - Pygame在屏幕上移动线时屏幕撕裂

我正在尝试移动此图像:

在此处输入图像描述

在我的 PyGame 屏幕上,从右到左再回来,但是随着图像的移动,每隔一秒左右,我就会有一个闪烁的屏幕撕裂,就像这样:

在此处输入图像描述

我使用的代码是一个类似于这样的循环:

到目前为止,我已经尝试了以下方法来解决这个问题:

创建屏幕时使用HWSURFACE, FULLSCREEN,DOUBLEBUF标志,这没有效果,我也将我的调整.update(rect)为 a .flip()(因为在使用时建议这样做DOUBLEBUF?)

在 GPU 和 CPU 之间拆分内存(我在树莓派 2 上运行它)我尝试同时提供更多内存,没有任何变化。

设置一个clock.tick 将更新速率限制为60 FPS(也高于和低于)这确实消除了一些撕裂但不是全部

向左或向右调整每个增量的大小,使增量更小会减少撕裂,但也会降低速度。(不能让它太慢

blit当我读到比绘图更受支持的地方时,在之前的位置上绘制一个新的黑色表面而不是在之前的位置上绘制一个黑色矩形(当移动图像以确保它后面没有痕迹时)HWSURFACE,尽管我无法确认这一点?- 这没有效果

如果有人有任何其他可以改善这种情况的解决方案,我将不胜感激。

我宁愿从 PyGame 更改为其他任何东西(如 pyglet),因为到目前为止我已经使用 PyGame 完成了很多实现,但我愿意接受建议。

干杯

编辑

根据要求的相关代码:

这个slower变量是为了给人一种惯性的感觉,当横杆到达它扫过的最左边和最右边时,它会放慢一点速度。

firstTime变量用于在条形图首次出现时淡入淡出。

在此下方还有另一个非常相似的循环,但将图像扫回另一种方式。

0 投票
1 回答
1587 浏览

c++ - 在 Windows 10 / DirectX 上仅在全屏模式下使用 VSYNC 撕裂(窗口模式工作正常)

我认为我的 DirectX 11 应用程序在以前的系统上运行良好(我有 70% 的把握)。但现在,在 Windows 10(笔记本电脑)中,我仅在全屏模式下出现撕裂问题(窗口模式工作时没有任何撕裂)。

场景非常“沉重”(它应该为我的应用程序进行性能测试)。当 DirectX 渲染“较重”的部分时,它会在短时间内下降到大约 50fps(我的测量可能有点不准确),然后又回到 60-61fps。奇怪的是,我没有看到“较重”部分(约 50fps)出现撕裂。

我听说它可能与 DWM 有关,它为窗口应用程序提供自己的同步(这就是为什么我的程序在窗口模式下工作正常?)。

我能做些什么呢?

交换链:

根据本教程计算的位置numerator和位置:denominator

它返回两个非常高的值,它们60在彼此相除时给出(我是否可以通过将它们设置为60and来获得相同的效果1?):

在此处输入图像描述

我还渲染:

我错过了什么?还是我做错了什么?

0 投票
1 回答
629 浏览

opengl-es - SDL-OpenGL 无法在三星 Galaxy Note 4 上禁用垂直同步

当我通过以下方式将 Vsync 设置为 Off 时,使用双缓冲区和缓冲区交换函数结束绘制循环 SDL_GL_SwapWindow:

看起来 VSync 在此设备上仍处于开启状态。

我已经在 iOS、其他 android 设备(包括平板电脑、pc 和 mac)中测试了相同的代码,场景非常简单,所有这些设备都从使用 VSync 的大约 60 fps 到没有它的 +400。

似乎保持垂直同步的唯一设备是 Note 4,因为 fps 是相同的。

这就是为什么我要问是否有任何理由。我已经查找了设备规格并检查了显示和开发人员选项,以防那里有某种 VSync 锁定选项,但我没有发现与此相关的任何内容。

编辑:与三星 Galaxy S4 相同的行为(VSync 不会关闭)

0 投票
1 回答
962 浏览

android - Libgdx 为 Android 而不是桌面禁用 Vsync

嗨,我想为我的游戏禁用或启用 vsync,我找到了这个链接 https://github.com/libgdx/libgdx/wiki/Fullscreen-&-vsync

因此,我能够更改我的应用程序桌面版本的设置。我的问题是,当我在 android 上运行它时,这是否也会改变?据我所知,它似乎不起作用,并且在 androidlauncher 而不是用于配置的 LwjglApplicationConfiguration 中,它具有 AndroidApplicationConfiguration。

那么无论如何都可以为android做到这一点吗?

0 投票
1 回答
1372 浏览

linux - 避免linux + QT中的屏幕撕裂

据我了解,X11 不支持双/三缓冲机制以避免屏幕撕裂。所以我尝试使用openGL小部件,然后我明白没有支持openGL + raspberry pi + qt4。

我所要求的只是一个非常基本的事情,从摄像机捕捉帧,处理它们,并在屏幕上显示,我变得非常!坏的屏幕撕裂。

我知道 QT5+WAYLAND+PI 确实有某种(?)对 openGL 的支持,这会帮助我解决这个问题吗?(相当容易,我的意思是我的应用程序没有大的变化!!)还有什么我可以做的吗?做?(除了更改 X11 的源代码...) :)

0 投票
0 回答
239 浏览

xcode - NSTimer 和 V-sync 如何获得超过 60fps

为了在 Mac 的 opengl 应用程序中创建 mainloop,我使用 NSTimer:

但是如果我尝试启用垂直同步:

我的计时器自动切换到 60fps 速度。这对绘图很有用(swapbuffer、glFinish 等),但我程序中的某些进程需要更高的速度。我可以以某种方式忽略计时器的 vsync 吗?我需要两个计时器——一个用于以 60 fps 进行绘图,第二个用于以最大 fps 进行循环。可能吗?

ps DisplayLink - 不适合我。

谢谢你。

0 投票
2 回答
2010 浏览

android - 当设备静止但被触摸时 Android 动画的性能下降

我的应用程序每帧更改了一些非常简单的视图(旋转、平移)的属性。根据 Android 性能文章的建议,我使用 systrace 来检查我是否丢帧。

真的发生了一些意想不到的事情。当设备静止不动时(即使我触摸了屏幕)CPU 使用率更高,系统跟踪上的警报出现了,GPU 渲染分析器的红色部分更长。当我快速旋转或摇晃设备时,一切正常。

以下是结果的链接。Shake是我真正快速旋转设备no_shake的时候,是它被放在我桌子上的时候。

我制作了一个非常简单的测试应用程序,它使用单个翻译动画:源代码

Systrace:不摇

CPU使用率: 在此处输入图像描述

GPU 分析器: 在此处输入图像描述

看看shake systrace,帧率平滑,为什么HW_VSYNC_0和HW_VSYNC_ON_0行没有数据?如何读取 CPU 频率(我在捕获跟踪时启用了该选项)。

关于这个问题,我的理论是该设备可能会降低 CPU 频率。如何在 systrace 中阅读此内容?我使用第 3 方应用程序来测试这个假设,如下所示,它是正确的。那么,我能做些什么来避免这个问题呢?

在此处输入图像描述

为什么设备会这样做?起初我认为该设备使用加速度计数据来了解它是否未被使用,然后它降低了 CPU 频率。但是,为了提高 CPU 频率,我必须非常努力地摇动设备。像普通人一样拿着它不会增加CPU频率。

我知道这是很多问题,但是在阅读了有关 Android 图形管道的所有相关文章后,我没有想法。

该问题出现在运行 Android 5.1 的 Sony Xperia Z3 上 该问题无法在运行 Android 6 的 Nexus 5 上重现。

更新

似乎性能问题是由 CPU/GPU 节流引起的。同样的设备,Xperia Z3,在运行 Android 4.4 时,尽管它降低了时钟速度,但根据 Systrace,它的性能更好。此外,它在摇晃时不会增加速度。

关于提高 CPU 速度所需的摇动手势,我注意到当我尝试将设备从纵向旋转到横向或反之亦然时,触发的 CPU 时钟会增加(即使应用程序没有改变方向)。所以,我认为监控这个手势的原因是为了加快可能的方向变化

0 投票
2 回答
1073 浏览

windows - wgext - 扩展未安装在 OpenGL 上下文中

我正在尝试使用 wglSwapIntervalEXT(int 间隔)在带有 WGL_EXT_swap_control 的 OpenGl 中禁用 vsync。

我正在尝试包含 wgext 标头,但经过大量搜索后,它似乎没有安装在我的电脑上(使用 opengl 扩展查看器找到它)。我已尝试安装 windows sdk 并更新 .net 框架,但仍然无法安装此扩展。

反正有没有包括这个。我的显卡是 nVidia GTX 770m。或者有没有更简单的方法来禁用 vsync。

谢谢