我想使用 SkiaSharp 使用 GPU 加速(使用 OpenGL 或 Vulkan(绘制一些东西,稍后保存图像。无需在应用程序中的任何位置显示图像,因为它是面向 Windows 和 Linux 的控制台应用程序。
我已经尝试了以下代码,具有各种变体,但没有任何效果(var surface = SKSurface.Create(context, false, info);
引发异常,因为glInterface
和context
null
.
有人可以给我一个提示吗?
var glInterface = GRGlInterface.Create();
var context = GRContext.CreateGl(glInterface);
var info = new SKImageInfo(256, 256);
var surface = SKSurface.Create(context, false, info);
var canvas = surface.Canvas;
最后,能够调用SKBitmap.SetPixels(IntPrt)
或类似的东西将生成的位图缓冲区设置为特定位置会很好。
解决方案是您需要先手动创建 OpenGL 上下文。 有关实现详细信息,请查看 https://github.com/mono/SkiaSharp/blob/master/tests/Tests/GRContextTest.cs。
要复制渲染的像素缓冲区,可以使用SKSurface.ReadPixels
。