我想渲染两个在同一时间更改颜色的框。我正在使用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
};