C# 屏幕显示和并口触发器之间的延迟

C# 屏幕显示和并口触发器之间的延迟,c#,unity3d,C#,Unity3d,我正在从事一项研究项目,该项目需要在Unity中的屏幕显示和并行端口触发器之间进行精确计时/同步 我试图做的是在向并行端口发送触发器的同时将屏幕闪烁为白色(期望的差异在10毫秒内) 我用一个光电二极管测量屏幕闪光灯,以确定它变白的确切时间,并将其与并行端口的触发器同步。我总是观察到触发器和闪光灯之间有40-70毫秒的延迟(闪光灯到达的速度较慢),这是我的主要问题 到目前为止我所尝试的: -更新闪存并在同一帧内发送触发器(延迟更大) -更新flash->WaitForEndOfFrame()->发

我正在从事一项研究项目,该项目需要在Unity中的屏幕显示和并行端口触发器之间进行精确计时/同步

我试图做的是在向并行端口发送触发器的同时将屏幕闪烁为白色(期望的差异在10毫秒内)

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

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

IEnumerator UpdateParallelPort()
{
    while (true)
    {
        yield return new WaitForEndOfFrame();
        if (flashed == FlashState.ToWhite)
        {
            parallelPort.SendTrigger();
        }
    }
}
我还通过使用ReadPixels来确定屏幕在哪一帧变白来测试flash是否需要渲染多个帧,但事实并非如此,当我发出命令时,它位于同一帧中。所以我猜延迟来自缓冲区被发送到屏幕的时间?如果是这种情况,是否有办法确定/同步确切的时间,或将其最小化

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

这需要精确的时间

我有个坏消息,完全忘记它

团结是一个彻头彻尾的游戏引擎

整个存在的理由,最基本的方面,是它可以让你渲染恐龙等的网格,同时“完全折衷”颗粒时间和合理的整体感知时间


不幸的是,您实际上无法为项目选择更糟糕的环境!对不起O

是的,经过多次尝试,我想可能就是这样。太糟糕了,我被迫在这个项目中使用Unity,我现在应该寻找一个解决方法。感谢您的回答。期待您的下一个问题,@ldkv希望我们能提供更多帮助!