D3DImage e SharpDX tremeluzem em hardware lento

Estou usando o projeto SharpDX.WPF para as habilidades do WPF, parece uma biblioteca fácil de entender, comparada ao Toolkit que acompanha o SharpDX (que tem o mesmo problema!)

Primeiro: eu corrigi o projeto SharpDX.WPF para o SharpDX mais recente usando o seguinte:https://stackoverflow.com/a/19791534/442833

Fiz o seguinte ajuste hacky ao DXElement.cs, uma solução que também foi feitaaqui:

private Query queryForCompletion;
    public void Render()
    {
        if (Renderer == null || IsInDesignMode)
            return;

        var test = Renderer as D3D11;
        if (queryForCompletion == null)
        {

            queryForCompletion = new Query(test.Device,
                new QueryDescription {Type = QueryType.Event, Flags = QueryFlags.None});
        }

        Renderer.Render(GetDrawEventArgs());

        Surface.Lock();
        test.Device.ImmediateContext.End(queryForCompletion);
        // wait until drawing completes
        Bool completed;
        var counter = 0;
        while (!(test.Device.ImmediateContext.GetData(queryForCompletion, out completed)
                 && completed))
        {
            Console.WriteLine("Yielding..." + ++counter);
            Thread.Yield();
        }
        //Surface.Invalidate();
        Surface.AddDirtyRect(new Int32Rect(0, 0, Surface.PixelWidth, Surface.PixelHeight));
        Surface.Unlock();
    }

Então, renderizo 8000 cubos em um padrão de cubo ...

Produzindo...

é impresso no console com bastante frequência, mas a cintilação ainda está lá. Estou assumindo que o WPF é bom o suficiente para mostrar a imagem usando um thread diferente antes da renderização, embora não tenha certeza ... Esse mesmo problema também ocorre quando eu uso a variante Toolkit do suporte ao WPF com o SharpDX.

Imagens para demonstrar o problema:

RuimMelhorQuasePretendido

Nota: Alterna aleatoriamente entre essas imagens antigas, aleatoriamente. Também estou usando um hardware muito antigo, que torna a oscilação muito mais aparente (GeForce Quadro FX 1700)

A fez um repo que contém exatamente o mesmo código-fonte que estou usando para obter esse problema:https://github.com/ManIkWeet/FlickeringIssue/

questionAnswers(3)

yourAnswerToTheQuestion