SkiaSharp和GPU加速

时间:2018-02-21 14:56:04

标签: 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))
 { ... }

GPU加速需要一些特殊的方法来初始化SkiaSharp吗?

我尝试过下一个命令:

GRContext context = GRContext.Create(GRBackend.OpenGL);

但它返回null。

1 个答案:

答案 0 :(得分:1)

啊,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上下文,你就是好的。