gpt4 book ai didi

c# - Windows Media Player 如何处理显示器刷新率?

转载 作者:行者123 更新时间:2023-12-03 21:52:58 24 4
gpt4 key购买 nike

我正在用 C#/WinForms 编写动画应用程序(参见 this question )。基本上,我的应用程序中的动画很流畅,但显示出撕裂效果;当我拍摄相同的动画并将其渲染为 AVI 文件并使用 Windows Media Player 播放时,动画完全没有撕裂效果。我知道 WMP 不会改变帧速率,因为动画与音乐同步。

我假设 WMP 使用 DirectX 或其他一些可以识别显示器的刷新率和扫描线位置等的技术,但我一直认为对刷新率进行编程会限制帧率。显然,WMP 不是这种情况。

有人知道 WMP(或其他视频播放器)如何在内部呈现视频吗?我已经搜索过,但我似乎无法找到有关此的任何详细信息。

最佳答案

我已经有一段时间没有进行任何 DirectX 编程了,所以这可能已经过时了。

根据我的内存,您可以使用 DirectX 设置缓冲区的翻转链,通常是三个缓冲区:正在显示的缓冲区、要显示的缓冲区和正在写入的缓冲区。在更新时,DirectX 将在更新显示缓冲区之前等待 V-sync。现在,这将导致显示的图像和应显示的图像之间存在差异,但这最多刷新一次,大约 1/60 秒,因此您不太可能注意到。

一些 ASCII 艺术来展示我的意思:

|-|-|-|-|-|-|-|-|-|-|-|-|-|-|  - screen refresh
|----|----|----|----|----|--- - animation
|-----|---|-----|---|-----|-- - displayed

关于c# - Windows Media Player 如何处理显示器刷新率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2456309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com