在XNA 4中为图形输出添加恒定延迟

时间:2011-04-26 08:26:14

标签: xna xna-4.0

有没有人知道为XNA 4应用程序的图形输出添加恒定延迟(大约30 ms)的简单方法?

我想让我的图形输出与实时缓冲的音频流保持同步,这种音频流本身具有恒定的延迟。

感谢您提出任何想法!

最高

2 个答案:

答案 0 :(得分:1)

如果真的需要延迟你的图形,那么你可以做的就是将你的游戏渲染成一系列循环渲染目标。因此,在帧 n 上,您将显示在帧 n-2 处渲染的帧。这仅适用于小延迟,并且需要大量额外的图形内存和少量额外的GPU时间。

更好的方法根本不是延迟图形输出,而是延迟用于生成图形输出的音频。通过缓冲它或在音频缓冲区中有两个读取位置。在“游戏”阅读之前,“音频”读取 X ms (延迟)。

因此,如果您的计算机的音频硬件具有 100ms 的延迟(并非罕见),并且您的图形硬件的延迟 16ms :当您在< em> 100ms 进入音频系统,您将 16ms 的音频样本输入到图形计算中。同时,来自 0ms 的音频正在击中扬声器,匹配的图形正在击中屏幕。

显然,如果生成图形输出的东西也生成音频,这将不起作用。但是这两种方法的一般原理是你必须在图形链的某处缓冲输入,以便引入与你正在体验音频的延迟相对应的延迟。沿着那条链最容易插入一个缓冲区取决于你。

对于<100ms的延迟,我不会为大多数游戏担心。你只关心音频节目和节奏游戏的这种延迟。

答案 1 :(得分:0)

我可能不明白这个问题,但是你不能跟踪调用更新的次数和mod 2吗? 60fps mod 2是30 ...