使用DirectX渲染两个元素时计时去同步

时间:2019-04-09 21:43:58

标签: directx

我想渲染两个在同一时间更改颜色的框。我正在使用DirectX并通过在屏幕上连接的光敏电阻测量颜色的变化(测量亮度的变化)。

两个方框每200ms从黑色变为白色。它们应该同时更改,但是我测量的延迟为0-20ms。是否可以选择强制DirectX在完全相同的时间渲染?

OnTimer_Elapsed(Object source, System.Timers.ElapsedEventArgs e)
{
  if (i/2==1) 
      clr=clrWhite
  else 
      clr=clrBlack
  i++;

 d2dRenderTarget.BeginDraw();
 d2dRenderTarget.Clear(clrTrans);
 d2dRenderTarget.DrawRectangle(rect1, clr);
 d2dRenderTarget.FillRectangle(rect1, clr);
 d2dRenderTarget.DrawRectangle(rect2, clr);
 d2dRenderTarget.FillRectangle(rect2, clr);

 d2dRenderTarget.EndDraw();
 sc1.Present(1, PresentFlags.None);
}

这是交换链

 sc1= new SwapChainDescription()
 {
    BufferCount = 1,                                 
    Flags = SwapChainFlags.None,
    IsWindowed = true,                               
    ModeDescription = new ModeDescription(
       this.ClientSize.Width,                       
       this.ClientSize.Height,                      
       new Rational(60, 1),                          
       Format.R8G8B8A8_UNorm),                     
    OutputHandle = frm.Handle,                      
    SampleDescription = new SampleDescription(1, 0),
    SwapEffect = SwapEffect.Discard,
    Usage = Usage.RenderTargetOutput
  };

0 个答案:

没有答案