SkiaSharp:如何限制或降低大(4K)屏幕的绘图像素分辨率?

时间:2019-06-29 16:27:17

标签: winforms performance rendering skiasharp high-resolution

我才刚刚开始学习SkiaSharp,以用作Windows 10上WinForms的GDI +替代品。我特别想要GPU加速的2D图形,并设法使SkiaSharp示例与GLControl和CreateNativeGlInterface一起运行。

PC是Windows 10、10核i7-6950X,带有GTX-1080 ti Founders版图形卡和4K屏幕。

我通过绘制1000条具有随机颜色的随机线开始了SkiaSharp的性能测试,并注意到当GLControl调整大小以包含超过appox 314.5万像素时,渲染速度突然从1ms减慢到100ms以上! >

只要像素数不超过约314.5万像素(不是高度或宽度限制,而是像素限制),长度与宽度就可以变化。

enter image description here

在缓慢扩展窗口的同时渲染时间的示例:

case .uploadImage(let data):
            let imageData = data.image.jpegData(compressionQuality: 1.0)
            let memberIdData = "\(data.status)".data(using: String.Encoding.utf8) ?? Data()
            var formData: [Moya.MultipartFormData] = [Moya.MultipartFormData(provider: .data(imageData!), name: "image", fileName: "user.jpeg", mimeType: "image/jpeg")]

问题:

  • 是否有任何SkiaSharp设置可以防止2K到4K尺寸范围内的图形变慢?

  • 我希望能够在4K显示器上最大化这样的绘图屏幕,但实际上我并不需要那么大的分辨率。看起来像块状的1080p拉伸图适用于此应用,但是Windows桌面必须是本机4K,缩放比例为100%。如何降低图形的像素分辨率并缩放它以适合非常大的画布,而又不会大幅降低渲染时间?

感谢任何建议!

SKGLControl示例源代码在这里:GitHub SKGLControl

我的源代码:

ms: 1, w: 1914, h: 1637, pixels: 3133218
ms: 1, w: 1915, h: 1637, pixels: 3134855
ms: 1, w: 1916, h: 1637, pixels: 3136492 
ms: 1, w: 1917, h: 1637, pixels: 3138129
ms: 1, w: 1919, h: 1637, pixels: 3141403
ms: 3, w: 1920, h: 1637, pixels: 3143040
ms: 210, w: 1924, h: 1637, pixels: 3149588
ms: 196, w: 1931, h: 1637, pixels: 3161047
ms: 122, w: 1935, h: 1637, pixels: 3167595
ms: 122, w: 1938, h: 1637, pixels: 3172506
ms: 124, w: 1940, h: 1637, pixels: 3175780
ms: 190, w: 1940, h: 1637, pixels: 3175780

0 个答案:

没有答案