C# 控制台应用程序中带有OpenGL/Vulkan后端的SkiaSharp绘图

C# 控制台应用程序中带有OpenGL/Vulkan后端的SkiaSharp绘图,c#,opengl,.net-core,vulkan,skiasharp,C#,Opengl,.net Core,Vulkan,Skiasharp,我想用GPU加速(使用OpenGL或Vulkan)使用SkiaSharp绘制一些东西,然后保存图像。无需在应用程序中的任何位置显示映像,因为它是一个面向Windows和Linux的控制台应用程序 我已经尝试了以下代码,虽然有各种变体,但没有任何效果(在var surface=SKSurface.Create(context,false,info)处引发异常;因为glInterface和context都是null 谁能给我一个提示吗 var glInterface=GRGlInterface.Cr

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

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

谁能给我一个提示吗

var glInterface=GRGlInterface.Create();
var context=GRContext.CreateGl(glInterface);
var info=新的SKImageInfo(256256);
var surface=SKSurface.Create(上下文、假、信息);
var canvas=surface.canvas;

最后,最好能够调用
SKBitmap.SetPixels(IntPrt)
或类似的功能,将生成的位图缓冲区设置到特定位置。

解决方案是您需要先手动创建OpenGL上下文。 请查看实现细节


要复制渲染的像素缓冲区,可以使用SKSurface.ReadPixels

另一种方法是使用OpenTK这样的库来完成所有工作,而无需使用自己的互操作。我只是在测试中不使用它,因为我当时就是这么做的。对于实际应用程序,您可能希望使用OpenGL/Vulkan库来确保所有东西都正常工作。然后,您可能还可以重用代码。我首先尝试使用OpenTK,但无法创建带有窗口的上下文