SkiaSharp 和 GPU 加速

pce*_*man 5 rendering gpu skiasharp

我正在评估 SkiaSharp 库(来自 nuget,版本 1.59.3)。一切都渲染得很好。但 Skia 似乎并没有使用 GPU 来加速渲染。Windows 10 任务管理器未检测到我的测试应用程序对 GPU 的任何使用。我正在使用下一个命令来创建 SKCanvas:

 using (SKBitmap bitmap = new SKBitmap(gWidth, gHeight, SKColorType.Bgra8888, alphaType))
 using (SKCanvas canvas = new SKCanvas(bitmap))
 { ... }
Run Code Online (Sandbox Code Playgroud)

GPU加速是否需要某种特殊的方式来初始化SkiaSharp?

我尝试过下一个命令:

GRContext context = GRContext.Create(GRBackend.OpenGL);
Run Code Online (Sandbox Code Playgroud)

但它返回 null。

Mat*_*hew 4

啊,GPU。

您需要处于现有的 OpenGL/ANGLE 上下文中。

我正在这样做: https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.UWP/SKSwapChainPanel.cs

但是,在实际初始化 SkiaSharp 之前,我首先必须手动创建 ANGLE 上下文: https://github.com/mono/SkiaSharp/blob/master/source/SkiaSharp.Views/SkiaSharp.Views.UWP/AngleSwapChainPanel.cs

这对于所有平台都是一样的,首先设置OpenGL/ANGLE上下文,然后当它是当前上下文时,启动SkiaSharp GRContext。

这也是我为单元测试所做的事情: https ://github.com/mono/SkiaSharp/blob/master/tests/Tests/GlContexts/Wgl/WglContext.cs

如果您不喜欢所有这些设置代码,那么这并不总是最好的代码,但您可以使用其他一些库来完成所有样板代码。只要存在有效的 OpenGL/ANGLE 上下文,就可以了。