Временная десинхронизация при рендеринге двух элементов с DirectX

#directx

#directx

Вопрос:

Я хочу отобразить два поля, которые меняют цвет в одно и то же время. Я использую DirectX и измеряю, когда они меняют цвет, с помощью фоторезистора, подключенного к экрану (измеряет изменение яркости).

Два поля меняются с черного на белый каждые 200 мс. Они должны меняться одновременно, но я измеряю задержки в 0-20 мс. Есть ли какая-либо возможность принудительно отображать 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
  };
  

Комментарии:

1. Включена ли у вас vsync? Расположены ли блоки рядом или один над другим? (Я подозреваю, что вы измеряете обновление строки сканирования вашего монитора, а не что-либо, связанное с directx)

2. Одно поле находится в середине экрана, другое в правом нижнем углу. Как мне включить vsync?

3. Я использую Present(1, PresentFlags.None). Это vsync, верно?

4. Я считаю, что это vsync, да. Если поля расположены рядом, исчезает / уменьшается задержка?

5. Каковы значения задержки монитора и задержки фоторезистора? 20 мс кажется нормальной задержкой для типичной панели IPS.