Мерцание окна Silk.NET при попытке вывести SkiaSharp Canvas

Я хочу создать канвас SkiaSharp, который отображается в окне Silk.NET. Программа представляет собой рисование прямоугольника, у которого меняется округлость границ. При попытке запустить данный код, изображение в окне начинает моргать. Я использую последние версии Silk.NET и SkiaSharp, я взял код для рисования из этого примера, преобразовав его для работы с Silk.NET. Мой код:

using Silk.NET.Windowing;
using Silk.NET.OpenGL;
using SkiaSharp;

class Program
{
    private static IWindow window;
    private static GL gl;
    private static GRGlInterface grgInterface;
    private static GRContext grContext;
    private static SKSurface surface;
    private static SKCanvas canvas;
    private static GRBackendRenderTarget renderTarget;
    private static SKPaint TestBrush;

    static void Main(string[] args)
    {
        var options = WindowOptions.Default;
        options.Size = new Silk.NET.Maths.Vector2D<int>(800, 600);
        options.Title = "Silk.NET with SkiaSharp Triangle";

        window = Window.Create(options);

        window.Load += OnLoad;
        window.Render += OnRender;

        window.Run();
    }

    private static void OnLoad()
    {
        grgInterface = GRGlInterface.Create();
        grContext = GRContext.CreateGl(grgInterface);
        renderTarget = new GRBackendRenderTarget(window.Size.X, window.Size.Y, 0, 8, new GRGlFramebufferInfo(0, (uint)SizedInternalFormat.Rgba8));
        surface = SKSurface.Create(grContext, renderTarget, GRSurfaceOrigin.BottomLeft, SKColorType.Rgba8888);
        canvas = surface.Canvas;

        TestBrush = new SKPaint
        {
            Color = SKColors.White,
            IsAntialias = true,
            Style = SKPaintStyle.Fill,
            TextAlign = SKTextAlign.Center,
            TextSize = 24
        };
    }

    private static void OnRender(double delta)
    {
        canvas.Clear(SKColors.CornflowerBlue);

        TestBrush.Color = SKColors.White;
        canvas.DrawRoundRect(new SKRoundRect(new SKRect(0, 0, 256, 256), (float)Math.Max(Math.Sin(-delta) * 128.0f, 0)), TestBrush);

        TestBrush.Color = SKColors.Black;
        canvas.DrawText("Hello, World!", 128, 300, TestBrush);

        canvas.Flush();
        window.SwapBuffers();
    }
}

Ответы (0 шт):