Files
better-genshin-impact/Fischless.GameCapture/GameCaptureFactory.cs
Shatyuka 0bea2d095a 截图优化 (#1480)
* BitBlt 优化

* BitBlt恢复Top-down

* 渲染时翻转图像

* CaptureSession引用计数

* 恢复成无拷贝Mat

* 合法性检查

* 优化截图预览窗口

* 保存截图文件必要时需要克隆一份Mat

* BitBlt内存池

* 返回拷贝就不用对Session做引用计数了

* 移除CaptureImageRes

* 优化DirectX

* 更好地处理padding

* BitBlt去掉padding

1920*1080的游戏窗口是4字节对齐的,因此不会有性能影响。这里主要用于测试。

* 修复修改窗口大小

* 合并CreateStagingTexture

* 修复设备丢失崩溃

* WGC截图支持HDR

* fix typo

* CodeQA

* 去掉1px窗口边框

* DirectX截图去掉A通道

* HDR转换使用GPU加速

---------

Co-authored-by: 辉鸭蛋 <huiyadanli@gmail.com>
2025-05-11 01:17:18 +08:00

22 lines
707 B
C#

namespace Fischless.GameCapture;
public class GameCaptureFactory
{
public static string[] ModeNames()
{
return Enum.GetNames(typeof(CaptureModes));
}
public static IGameCapture Create(CaptureModes mode)
{
return mode switch
{
CaptureModes.BitBlt => new BitBlt.BitBltCapture(),
CaptureModes.DwmGetDxSharedSurface => new DwmSharedSurface.SharedSurfaceCapture(),
CaptureModes.WindowsGraphicsCapture => new Graphics.GraphicsCapture(),
CaptureModes.WindowsGraphicsCaptureHdr => new Graphics.GraphicsCapture(true),
_ => throw new ArgumentOutOfRangeException(nameof(mode), mode, null),
};
}
}