Avalonia-Silk.NET-Example
Avalonia-Silk.NET-Example copied to clipboard
Render YUVJ420P is abnormal
I use Silk.Net and Avalonia.OpenGL to play the rtsp stream, and add three textures for rendering, but the problem is here, avalonia will occasionally appear the following error:
Avalonia.OpenGL.OpenGlException: Unable to make the context current
at Avalonia.Win32.OpenGl.WglRestoreContext..ctor(IntPtr gc, IntPtr context, Object monitor, Boolean takeMonitor) in /_/src/Windows/Avalonia.Win32/OpenGl/WglRestoreContext.cs:line 27
at Avalonia.Win32.OpenGl.WglContext.MakeCurrent(IntPtr hdc) in /_/src/Windows/Avalonia.Win32/OpenGl/WglContext.cs:line 74
at Avalonia.Win32.OpenGl.WglGlPlatformSurface.RenderTarget.BeginDraw() in /_/src/Windows/Avalonia.Win32/OpenGl/WglGlPlatformSurface.cs:line 47
at Avalonia.Skia.GlRenderTarget.BeginRenderingSession() in /_/src/Skia/Avalonia.Skia/Gpu/OpenGl/GlRenderTarget.cs:line 63
at Avalonia.Skia.SkiaGpuRenderTarget.CreateDrawingContext(IVisualBrushRenderer visualBrushRenderer) in /_/src/Skia/Avalonia.Skia/Gpu/SkiaGpuRenderTarget.cs:line 27
at Avalonia.Rendering.DeferredRenderer.EnsureDrawingContext(IDrawingContextImpl& context) in /_/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs:line 617
at Avalonia.Rendering.DeferredRenderer.UpdateRenderLayersAndConsumeSceneIfNeeded(IDrawingContextImpl& context, Boolean recursiveCall) in /_/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs:line 374
at Avalonia.Rendering.DeferredRenderer.Render(Boolean forceComposite) in /_/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs:line 323
at Avalonia.Rendering.DeferredRenderer.Avalonia.Rendering.IRenderLoopTask.Render() in /_/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs:line 275
at Avalonia.Rendering.RenderLoop.TimerTick(TimeSpan time) in /_/src/Avalonia.Visuals/Rendering/RenderLoop.cs:line 147
My rendering code is as follows:
protected override unsafe void OnOpenGlRender(GlInterface gl, int fb)
{
this._gl.Viewport(0, 0, (uint)Bounds.Width, (uint)Bounds.Height);
//Get YUVJ420P Frame
if (this._playerBase != null && this._playerBase.OutputFrameCache(this._uniqueKey, out var frame))
{
this._texture.Bind(frame, this._shader);
this._shader.Use();
this._vao.Bind();
this._gl.DrawElements(PrimitiveType.Triangles, (uint)_indices.Length, DrawElementsType.UnsignedInt, null);
}
Dispatcher.UIThread.InvokeAsync(InvalidateVisual);
}
Can you tell me what caused this error, thank you very much!!