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

在XNA 4中为图形输出添加恒定延迟,xna,xna-4.0,Xna,Xna 4.0,有没有人知道一种简单的方法可以向XNA4应用程序的图形输出中添加恒定的延迟(大约30毫秒) 我想让我的图形输出与实时缓冲音频流保持同步,而实时缓冲音频流本身具有恒定的延迟 谢谢你在这方面的任何想法 Max如果确实需要延迟图形,则可以将游戏渲染到一系列渲染目标。因此,在第n帧显示在第n-2帧渲染的帧。这只适用于较小的延迟,并且需要大量额外的图形内存和少量额外的GPU时间 更好的方法是根本不延迟图形输出,而是延迟用于生成图形输出的音频。或者通过缓冲它,或者在音频缓冲区中有两个读取位置。“音频”读取比

有没有人知道一种简单的方法可以向XNA4应用程序的图形输出中添加恒定的延迟(大约30毫秒)

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

谢谢你在这方面的任何想法

Max

如果确实需要延迟图形,则可以将游戏渲染到一系列渲染目标。因此,在第n帧显示在第n-2帧渲染的帧。这只适用于较小的延迟,并且需要大量额外的图形内存和少量额外的GPU时间

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

因此,如果您的计算机的音频硬件有100毫秒的延迟(这并不少见),而图形硬件有16毫秒的延迟:当您以100毫秒的速度将样本输入音频系统时,您将以16毫秒的速度将音频样本输入图形计算。同时,来自0ms的音频冲击扬声器,匹配的图形冲击屏幕

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


对于的延迟,我可能不理解这个问题,但您不能跟踪调用update和mod 2的次数吗?60fps mod 2是30…

您能告诉我们您所说的延迟吗?(即:多少毫秒?)。这是1帧,每秒30帧,2帧,每秒60帧。这可能小于实际显示延迟(如果在PC/XBox360上,则不知道WP7)。大多数LCD显示器都有这种延迟(可以引用来源,但用法语)。你是对的-可能更多-30毫秒是缓冲区大小导致的时间,但可能还有额外的延迟,例如音频硬件。不幸的是,延迟大到可以看到…感谢这个伟大的答案!我正在开发一个实时音乐生成应用程序——不幸的是,生成音乐的组件也会触发图形输出。我想我会试试你的第一种方法。