来自控制台应用程序的 OpenGL/Vulkan 后端的 SkiaSharp 绘图



我想使用 SkiaSharp 使用 GPU 加速(使用 OpenGL 或 Vulkan(绘制一些东西,稍后保存图像。无需在应用程序中的任何位置显示图像,因为它是面向 Windows 和 Linux 的控制台应用程序。

我已经尝试了以下代码,具有各种变体,但没有任何效果(var surface = SKSurface.Create(context, false, info);引发异常,因为glInterfacecontextnull.

有人可以给我一个提示吗?

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

最新更新