mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-15 07:43:20 +08:00
* 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>
33 lines
923 B
C#
33 lines
923 B
C#
using OpenCvSharp;
|
|
using OpenCvSharp.Internal;
|
|
|
|
namespace Fischless.GameCapture.BitBlt;
|
|
|
|
public class BitBltMat : Mat
|
|
{
|
|
private readonly BitBltSession _session;
|
|
private readonly IntPtr _data;
|
|
|
|
private BitBltMat(IntPtr ptr, BitBltSession session, IntPtr data)
|
|
{
|
|
if (ptr == IntPtr.Zero)
|
|
throw new OpenCvSharpException("Native object address is NULL");
|
|
this.ptr = ptr;
|
|
_session = session;
|
|
_data = data;
|
|
}
|
|
|
|
public static Mat FromPixelData(BitBltSession session, int rows, int cols, MatType type, IntPtr data, long step = 0)
|
|
{
|
|
NativeMethods.HandleException(
|
|
NativeMethods.core_Mat_new8(rows, cols, type, data, new IntPtr(step), out var ptr));
|
|
return new BitBltMat(ptr, session, data);
|
|
}
|
|
|
|
protected override void DisposeUnmanaged()
|
|
{
|
|
base.DisposeUnmanaged();
|
|
_session.ReleaseBuffer(_data);
|
|
}
|
|
}
|