屏幕显示与并口触发之间的延迟

本文关键字:之间 延迟 并口 屏幕显示 | 更新日期: 2023-09-27 17:55:04

我正在做一个研究项目,需要在屏幕显示和Unity中并行端口的触发器之间精确定时/同步。

我要做的是将屏幕闪烁为白色,同时向并行端口发送触发器(所需的差异在10ms内)。

我用光电二极管测量了屏幕闪光,以确定它变白的确切时间,并与并行端口的触发器同步。我总是观察到在触发器和闪光灯之间有40 - 70ms的延迟(闪光灯到达较慢),这是我的主要问题。

到目前为止我所尝试的:
-更新闪光灯并在同一帧发送触发器(更大的延迟)
-更新flash -> WaitForEndOfFrame() ->发送触发器(延迟较低,但仍然很大)。下面是一个示例代码:

IEnumerator UpdateParallelPort()
{
    while (true)
    {
        yield return new WaitForEndOfFrame();
        if (flashed == FlashState.ToWhite)
        {
            parallelPort.SendTrigger();
        }
    }
}

我还测试了flash是否需要使用ReadPixels来渲染多帧,以确定在哪一帧屏幕变白,但事实并非如此,当我发出命令时,它是在同一帧中。所以我猜延迟来自缓冲区被发送到屏幕的时间?如果是这种情况,是否有办法确定/同步确切的时间,或者最小化它?

这是我在Stackoverflow上的第一篇文章,希望我解释得足够清楚。提前感谢您的帮助!

屏幕显示与并口触发之间的延迟

需要精确定时

我有个坏消息,忘了它吧。

Unity是一个彻头彻尾的游戏引擎。

整个存在的理由,它最基本的方面,是它让你渲染恐龙网格等,与"完全妥协"的颗粒时间,和合理的整体感知时间。

不幸的是,你真的不能为这个项目选择一个更糟糕的环境了!对不起!: O