Мерцание окна 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();
}
}