问题标签 [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.
c++ - 使用 vsync 执行 glTexImage2D 时出现奇怪的延迟
我正在编写一个视频软件,我使用 Qt 的 QGLWidget 来显示带有以下代码的帧:
我想使用 vsync,所以我将 swapInterval 设置为 1。我测量了执行上述代码的时间。正如预期的那样,updateGL 需要大约 16 毫秒来执行。令我困惑的是,glTexImage2D 也需要 1..16 毫秒的时间来执行,就好像它也在等待 VBLANK 信号一样。当我在 swapInterval 为 0 的情况下关闭 vsync 时,glTexImage2D 只需要大约 1 毫秒即可执行。现在,而不是整个程序 vsync 应该给我的 16 毫秒延迟,我得到的最坏的延迟是 32 毫秒。我不明白为什么 updateGL 和 glTexImage2D 都等待 VBLANK。我希望尽可能少地延迟,所以有人可以解释这里发生了什么吗?
unity3d - Unity3D 中的 VSync 计数是多少?
VSync的理论概念是什么,它是如何影响渲染的?
c++ - 在 OpenGL 中使用 glut 的 vsync 问题
我正在拼命地让 Vsync 在我的 OpenGL 应用程序中工作。这是重要的统计数据:
我正在使用 Windows,使用 C++ OpenGL 进行编码,并且我正在将 FreeGLUT 用于我的 OpenGL 上下文(双缓冲)。我知道要让交换缓冲区在 Windows 中等待垂直同步,您需要调用 wglSwapIntervalEXT()。
我的代码确实调用了这个(如下所示),但我仍然在垂直撕裂。我设法阻止它的唯一方法是调用 glFinish() ,这当然会带来显着的性能损失。
我的 main() 函数的相关部分如下所示:
需要指出的是,wglInitSwapControlARB 函数的返回值是 true,所以扩展是受支持的。
opencv - OpenCV 显示视频无遗漏和撕裂
我为我的英语道歉。
我需要逐帧显示视频而不用固定的 FPS 撕裂。(显示工作在 50p 模式下,我想每秒显示 50 个不同的帧)。
我使用软定时器,但没有任何效果(频闪仪效果)。
我在没有 OpenGL 的情况下使用 cv::imshow。
请告诉我该怎么办?
opengl - 如何实现OpenGL GPU到CPU同步
OpenGL Wiki 在Swap Interval主题页面的最后一段中讲述了一些关于 GPU/CPU 同步的有趣内容:
如果需要 GPU<->CPU 同步,则应在缓冲区交换后使用高精度/多媒体计时器而不是 glFinish。
glFinish()
glFenceSync()
正如引用的文本所建议的那样,基于或基于方法的方法效果不佳。我相信那些高精度/多媒体计时器不是OpenGL规范的一部分。所以:
有谁知道如何使用高精度/多媒体计时器以便在垂直同步显示器上的缓冲区交换后立即调用一些 CPU 代码(也许获取时间戳)?
我的目标是使用 C++ 编写并在 Linux 上编译的解决方案,但任何库名称、代码位或直觉都会有很大帮助!
c++ - 使用 vsync (OpenGL) 时 CPU 利用率为 100%
这是一个非常简单的测试程序。当 vsync 被禁用时,该程序以 100FPS 运行,几乎占用了 0% 的 CPU。当我启用 vsync 时,我得到 60FPS 和 25%(100% 的一个核心在 4 核系统上)的 CPU 利用率。这是使用 Nvidia GPU。在线搜索导致我建议在 Nvidia 控制面板中禁用“多线程优化”。这确实降低了 CPU 利用率,但仅降低了 10%。此外,如果我在 SwapBuffers 之后删除睡眠调用,即使禁用了多线程优化,我也会再次获得 25% 的利用率。任何人都可以对此有所了解吗?难道我做错了什么?Nvidia 的 OpenGL 实现是否存在无可救药的缺陷?
javascript - html画布动画口吃
谁能解释为什么提供的画布动画口吃?我创建了一个测试存根来演示这个问题。
我在桌面上的 FF、Chrome、IE 和 Android 上的 FF 和 Chrome 中看到了口吃。
口吃是因为垃圾收集吗?似乎 raf 在每次调用时都会生成一个 double,最终需要 gc。如果 gc 是原因,那么 html5 动画几乎是 doa。叹。
一年前问过同样的问题,但因为我是新成员,我无法联系作者以找出他的解决方案。HTML5 画布 DrawImage 口吃/断断续续。真是太糟糕了,新用户无法引起其他用户的注意,因为其他问题的作者可能拥有我正在寻找的信息,而根本没有发布。我试图发布他的问题以引起他的注意,但我在那里的帖子被删除为违反规则(这是)。估计我别无选择。代表的鸡和蛋问题。
objective-c - CVDisplayLink 常量 outputTime 值
我正在写这篇文章,以防其他人遇到同样的问题,因为缺少 CVDisplayLink API 的文档。
介绍:
在我的 CVDisplayLink 代码中,我一直在使用以下代码来获取调用其回调之间的 deltaSeconds 值:
这行代码似乎在不同的应用程序和引擎中广泛使用。
问题:
在运行我的 OpenGL 应用程序时,我注意到这个值现在是恒定0.016669
的(准确地说)。除了使用 Mavericks 和新的开发工具之外,我没有做出任何重大改变来解释这种行为变化。
到目前为止,找到原因一直是一个失败的原因。
qt - QT - 如何正确处理 Vsync 和多个 QGLWidgets
我在同一个主线程中使用三个不同的 QGLWidgets,最好以 60fps 渲染,但我无法达到超过 20fps。这似乎是由 Vsync 引起的,因为每个小部件可能会尝试独立地与刷新率同步,因此它们会以某种方式锁定。如果我只使用两个小部件,我可以达到 30fps。或者,如果我将一个小部件的更新速率固定为 10fps,那么我在其他小部件上达到 25fps (10+25+25=60)。swapInterval()
总是返回 0,与我设置的值无关setSwapInterval(int)
。有任何想法吗?我可以禁用垂直同步吗?或者问题可能是由不同的东西引起的?
actionscript-3 - ENTER_FRAME 是在垂直消隐信号结束时还是在窗口开始时调度的?
ENTER_FRAME 是否在垂直消隐信号(vblank 或 vsync)结束时调度 - 屏幕上帧的实际开始,或者在 flash 窗口的开始(如果 stage3D 应用程序处于窗口模式),或者在不精确的时间(取决于……Flash 的内部情绪)?
(我使用纯 AS3 和 Stage3D 以及 3D GPU 渲染 - 没有 2D 显示对象、Flash 时间线、影片剪辑等)。
编辑:请参阅相关问题:听众可以错过或接收到 ENTER_FRAME 吗?