Xu
|
730d73ecea
|
perf: 降低低帧率下 WGC 的延迟
|
2025-11-14 22:03:29 +08:00 |
|
Xu
|
fb2270ec89
|
优化 Graphics Capture 对 Kirikiri 窗口的支持 (#1238)
* feat: 尝试模拟 kirikiri 窗口行为
* feat: 完善模拟 kirikiri 窗口
* feat: 优化 WGC 对 kirikiri 窗口的处理
* chore: 优化注释
* fix: 优化错误处理
* chore: 添加注释
|
2025-08-09 21:20:34 +08:00 |
|
Xu
|
ef4053769d
|
IUnknown::as 替换为 IUnknown::try_as (#1211)
* refactor: IUnknown::as 替换为 IUnknown::try_as
删除 SettingsCard,ActionIconToolTip 属性
* refactor: 优化头文件包含
|
2025-07-23 21:40:08 +08:00 |
|
Xu
|
a54763050c
|
窗口化缩放 (#1071)
* feat: 上边框外可以调整大小
* fix: 修正 Win11 中无边框窗口绘制
* fix: LoadLibrary 换成 GetModuleHandle
* feat: 缩放开始时记录 OS 版本
* feat: 适配不同的窗口
* feat: 支持 Win11 的无边框窗口
* fix: 窗口隐藏后停止缩放
* feat: 程序启动时记录 OS 版本
* feat: 缩放无边框窗口支持调整窗口尺寸
* feat: 对于无框架窗口 Win11 中禁用边框和圆角
* feat: Win11 中无边框窗口可以在边框上调整窗口尺寸
* fix: 修复窗口化缩放时最大化窗口会反复尝试缩放的问题
* feat: 无框架窗口在 Win11 中和无标题栏一样处理并禁用边框
* feat: 缩放时以源窗口框架空心点作为目标矩形中心
* feat: 交换链窗口随缩放窗口调整尺寸
* feat: 全屏化缩放前自动调整源窗口位置
Graphics Capture 不再支持屏幕捕获
* feat: 裁剪失败显示错误消息
* feat: 调整缩放窗口尺寸时缩放区域长宽比保持不变
* feat: 缩放窗口位置或尺寸有变化时自动调整源窗口位置
* fix: 修复无法调整尺寸的 bug
* fix: 修复窗口化缩放时缩放窗口有时在假边框下面
* feat: 平滑地调整窗口尺寸
* perf: 检查交换链尺寸是否发生变化
* feat: 初步实现调整渲染分辨率
存在显存泄露
* fix: 修复显存泄露
* fix: 修复 CursorDrawer 保存旧 back buffer 的问题
* fix: 修复特定情况下 imgui 中崩溃
* fix: 尝试修复调整尺寸时的闪烁
* feat: 避免调整缩放窗口大小时渲染暂停
* perf: 避免调整大小时重复渲染
* fix: 修复调整大小时有时 FPS 无法及时更新的问题
* chore: 更新依赖
* fix: 使用 DwmFlush 等待屏幕刷新
* fix: ImGui 的更新导致字体缓存不再兼容
* fix: 修复移动缩放窗口后渲染出错
* feat: 鼠标在源窗口的标题栏上时可以拖动缩放窗口
* feat: 删除禁用窗口大小调整选项
* chore: 修改措辞
* fix: 优化调整尺寸的流畅度
* chore: 修复编译
* refactor: 添加抽象对象 Presenter,以在 SwapChain 和 DComp 两种呈现方式间切换
* fix: 修复字体缓存保存问题和优化 Win32Helper::WriteFile
* feat: 实现 DirectComposition 呈现
* refactor: 两个呈现器共用的代码移动到基类
* feat: 降低延迟和添加注释
* feat: 完成 DirectComposition 支持
* feat: 禁用 DirectFlip 时使用 DirectComposition 呈现,无需其他操作
* fix: 修复叠加层渲染
* fix: 修复叠加层鼠标输入
* feat: 3D 游戏模式不再支持叠加层
* perf: 3D 游戏模式下降低渲染光标的频率
* chore: 修复编译警告
* feat: 不再单独显示 FPS
将集成在工具栏里
* feat: 实现工具栏原型
* feat: 优化工具栏样式
* feat: 不再支持隐藏光标
* fix: 修复 Win11 加载字体
* refactor: 叠加层多处重构
* feat: 叠加层支持追加和删除 Bicubic
* perf: 稍微优化构建字体性能
* refactor: 简化 OverlayDrawer
* chore: 更新依赖
* feat: 为工具栏添加更多按钮
* feat: 缩放时支持显示消息
* feat: 实现自动隐藏工具栏
* fix: 修复鼠标在窗口外移动不会更新工具栏透明度的问题
* fix: 优化 ImGui 样式
* feat: ImGui 窗口可关闭
* fix: 修复鼠标被前台窗口捕获时工具栏突然消失
* feat: 工具栏上可以拖拽缩放窗口
* fix: 鼠标被工具栏中的按钮捕获时不要隐藏工具栏
* feat: 调试模式不再影响鼠标逻辑
* fix: 优化工具栏行为
* fix: 修复调整缩放窗口大小时鼠标被叠加层捕获的问题
* fix: 修复拖拽缩放窗口时鼠标跳跃
* feat: 优化工具栏以符合 Fitts 法则
* refactor: Magpie.Core 的接口始终使用 UTF-8
* chore: 更新依赖
* fix: 提高移动光标的可靠性
* feat: 添加新的设置项用于保存叠加层窗口位置
* feat: 初步实现叠加层窗口适配大小调整
* feat: 优化叠加层窗口贴靠规则
* feat: 简化贴靠规则
* feat: 再次优化贴靠规则
* fix: 修复捕获光标后有时光标形状不更新的问题
* feat: 工具栏和其他窗口状态独立
* feat: 调整主页 UI
* feat: 调整 UI
* feat: 新 UI 支持多语言
* feat: 实现工具栏状态切换
* feat: 切换工具栏时显示消息
* fix: 叠加层调试信息在定义 DEBUG_OVERLAY 时显示
* perf: 非 WGC 使用 D3D11_CREATE_DEVICE_SINGLETHREADED
* feat: 添加实验性 composition swapchain 呈现器
* feat: 增加错误处理和日志
* feat: 窗口化缩放时通常情况使用交换链,调整大小时使用 DirectComposition
Win11 24H2 中交换链即使在窗口化时也能触发 independent flip
* fix: 修复 Win10 缺失“缩放模式”图标的问题
* fix: 修复关闭工具栏按钮功能
* chore: 更新依赖
* refactor: SwapChainPresenter 重命名为 AdaptivePresenter
* fix: 禁用 DirectFlip 时始终使用 DirectComposition 呈现
以及添加错误处理
* fix: 修复调试模式下缩放窗口非客户区更新
* feat: 工具栏支持本地化
* feat: Win11 中使用 DCompositionWaitForCompositorClock 等待 DWM
以及更新 CompSwapchainPresenter
* chore: 修正文件名
* fix: 修复被调试器暂停后消息弹窗无法关闭的问题
* perf: 优化 composition swapchain 的延迟
* feat: 添加 3D 游戏模式的解释和错误弹窗
* feat: 初步实现截图
* perf: 在后台线程编码图片
* chore: 实验或调试用宏集中在 CommonDefines.h 中
* feat: 支持保存任意效果的输出
* feat: 支持指定截图保存目录
* refactor: 全局包含 <filesystem>
* refactor: 更多使用 filesystem
支持长路径,而 Win32 API 在这方面进展缓慢
* refactor: 更多使用 filesystem
* refactor: 更多使用 filesystem
* feat: 实现截图命名机制
* fix: 优化并发支持
* fix: 修复大批量并发截图可能导致死锁的问题
* feat: 本地化截图消息
* feat: 截图按钮支持右键保存指定效果的输出
* feat: 本地化
* feat: 统一 Win10 和 Win11 中“缩放时调整光标速度”选项的图标
* chore: 避免全局包含 shellapi.h 和 Shlwapi.h
* fix: 默认快捷键的 Win 改为 Alt 以避免和系统快捷键冲突 (#1150)
* fix: 不在任何屏幕上的窗口不检查自动缩放 (#1151)
* feat: 只允许最后一个通道写入 OUTPUT
为了方便截图
* feat: 效果的中间结果保存为 dds
* chore: 删除加载 DDS 代码中无用部分
不再支持读取缓冲区、1D/3D 纹理等,节省了约 3KB
* docs: 明确 DDS 图像只支持 2D 纹理,但允许使用 mipmap
* feat: 实现导出任意通道的任意输出
* perf: 优化导出中间结果的性能
* feat: 调整 UI 文字
* feat: 优化初始缩放窗口尺寸
* fix: 修复点击标题栏无法激活缩放窗口的问题
* fix: 修复源窗口被遮挡就无法通过标题栏拖拽缩放窗口
* fix: 修复有时工具栏无法拖拽的问题
* chore: 增加日志
* feat: 支持改变窗口模式缩放初始缩放倍数
* feat: 本地化
* feat: 第一帧完成再显示缩放窗口
* fix: 减少缩放开始时的光标闪烁
* fix: 提前隐藏光标
* feat: 推迟显示黄色边框和禁用窗口圆角
* feat: 上边框视为标题栏
* chore: 更新依赖
* feat: 窗口化缩放初始位置确保标题栏在屏幕内
* fix: 缩放窗口移动后调整光标位置
* feat: 初步支持触控
* fix: 稍微提高 _ReliableSetCursorPos 等待时长
* feat: 调整缩放窗口大小或移动缩放窗口暂时禁用触控变换
* feat: 优化检查标题栏逻辑
支持 Win11 文件管理器、Windows Terminal 等
* fix: 修复调整大小时纹理尺寸计算错误
* perf: 使用 UpdateSubresource1 更新缓冲区
* fix: 窗口模式缩放时将缩放比例为 1 的 Fit 视为 Fill
* feat: 不再支持 Magpie.ToolWindow 属性
现在源窗口不在前台也能继续缩放,而 3D 游戏模式下这个功能没有意义
* feat: 源窗口离开和回到前台时广播事件
* chore: 注释和文档
* docs: 更新文档
* feat: WM_WINDOWPOSCHANGING 中确保等比例缩放
* feat: 全屏模式缩放时允许被 SetWindowPos 移动和改变尺寸
* feat: 自定义初始缩放倍数改为 1.25
和 UI 优化
* feat: 将缩放后的光标限制在屏幕内
* chore: 代码优化
* perf: 只有一个显卡时避免计算显卡选项
* fix: 优化鼠标行为
* fix: 优化叠加层存在弹窗时鼠标交互
* feat: 为一些选项添加说明
增大自动计算的初始缩放倍数
* refactor: 重构调整大小消息的响应
* feat: 删除初始缩放倍数的说明
* feat: 自动缩放可以选择全屏或窗口模式
* feat: 缩放窗口可跟随源窗口移动
由于命中测试可能非常耗时,转到后台执行
* fix: 使通过上边框拖动缩放窗口更加可靠
* fix: 修复鼠标从标题栏移到上边框的过程有一瞬间的闪烁
* feat: 使得源窗口调整尺寸的区域可以调整缩放窗口尺寸
* fix: 优化全屏缩放的鼠标行为
* fix: 优化鼠标行为
* feat: 源窗口移动时临时还原光标移动速度和禁用 DirectFlip
* fix: 修复内存损坏错误
* fix: 更可靠地检查缩放是否结束
* feat: 拖拽源窗口时保持光标位置稳定
* feat: 拖拽缩放窗口时保持光标位置稳定
* fix: 优化拖拽
* fix: 修复禁用 DirectFlip 导致的崩溃
* feat: 适配自己实现拖拽逻辑的窗口
* chore: 更新依赖
* fix: 防止拖动源窗口时光标超出屏幕
* fix: 修复舍入误差导致光标可能移到屏幕外
* fix: 优化和被 DPI 虚拟化的窗口的兼容性
* feat: 删除源窗口移动时临时禁用 DirectFlip
* fix: 光标不在缩放窗口上时禁止和工具栏交互
* fix: 移动源窗口结束后确保缩放窗口标题栏可见
* fix: 避免调整窗口使标题栏可见导致光标位置跳跃
* fix: 优化拖动源窗口时将光标限制在屏幕内
* perf: 异步移动源窗口,使缩放的移动和调整大小更加平滑
* fix: 拖动缩放窗口时检测源窗口大小变化
* fix: 正确处理缩放窗口的 DPI 变化
* fix: 拖动源窗口时广播 WM_MAGPIE_SCALINGCHANGED
* feat: 声明首选显示器选项仅适用于全屏模式缩放
* fix: 优化触控调整缩放窗口大小的体验
* fix: 销毁缩放窗口前取消置顶,添加日志
* chore: 修复编译
* refactor: 检查源窗口逻辑集中在 SrcTracker
* fix: 修复源窗口挂起时缩放线程在 SetWindowPos 中卡死的问题
* fix: 修复调整大小中途源窗口挂起导致卡死的问题
* fix: CursorManager 析构时等待异步命中测试完成
* fix: 优化命中测试,不受源窗口卡死影响
* fix: 修复叠加层窗口圆角
* fix: 取消修复源窗口挂起时缩放线程在 SetWindowPos 中卡死的问题
它导致拖动性能下降
* fix: 修复有时切换前台窗口后 Z 顺序混乱
* fix: 删除不再需要的 SetWindowPos
* feat: 暂时删除格鲁吉亚语和匈牙利语
完成度太低
* fix: 修复全屏缩放对 DPI 变化的响应
* fix: 修复错误裁剪滚动条和 Win11 24H2 中 Graphics Capture 错误裁剪最大化窗口
* feat: 优化触控拖动源窗口的体验
* refactor: 重构 TouchHelper 和项目文件
TouchHelper 支持日志
Magpie.Core 部分文件移动到 Shared
* chore: TouchHelper 不再向主程序发送消息
* refactor: 简化 TouchHelper 逻辑
* fix: 日志文件路径使用宽字符
spdlog 默认使用 ANSI 编码,但支持使用宽字符文件名
* fix: 不再使用 SetForegroundWindow 的 trick
有时会导致奇怪的行为
* feat: Updater 支持日志
* feat: 添加工具栏不支持触控输入的警告
* fix: 修复 TouchHelper 日志错误
|
2025-06-30 19:53:02 +08:00 |
|
Xu
|
65a92fe189
|
chore: 最低 26100 SDK
|
2025-04-05 19:42:28 +08:00 |
|
Xu
|
4b39d40f84
|
修复 Win11 24H2 中 Graphics Capture 捕获帧率无法超过 60FPS 的问题 (#1115)
* chore: 尝试使用 24h2 sdk
* fix: 尝试修复 WGC 帧率
* Revert "fix: 尝试修复 WGC 帧率"
This reverts commit 3b0b772943.
* chore: 修复 26100 SDK 导致的编译错误
* fix: 尝试修复 WGC 帧率
* chore: manifest 声明兼容 24H2
* chore: 更新编译文档和添加注释
|
2025-04-05 17:38:54 +08:00 |
|
Xu
|
7937700643
|
实现最小帧率 (#1043)
* feat: 初步实现最小帧率
* fix: 优化 StepTimer
* fix: 使帧间隔保持稳定
* feat: 添加最小帧率设置
* feat: 实现用户界面
* fix: 优化帧率限制精度
* chore: 添加注释
* fix: 修正第一秒的帧率
* feat: 允许用户修改最小帧率
* fix: 避免强制帧干扰重复帧检测
* fix: 修复限制最大帧率时 Graphics Capture 严重卡顿
* chore: 更好的处理卡顿以及添加注释
* fix: 默认最小帧率改为 10 FPS
* perf: MinFrameRateOptions 改为静态成员
|
2024-12-31 20:34:37 +08:00 |
|
Xu
|
8b278b4f52
|
将 Magpie.App.dll 合并进 Magpie.exe (#1032)
* chore: 将 Magpie.App.dll 合并进 Magpie.exe
* fix: Logger 不再需要初始化两次
* chore: 防止退出时在 threadpoolwinrt.dll 中崩溃
* chore: 优化编译
* chore: _ConanDeps 移植为 msbuild 脚本,需要进一步实现 up-to-date 检查
* chore: _ConanDeps 实现 up-to-date 检查
* chore: 由于架构更改,现在可以直接引用 Magpie.Core
* chore: 修复编译
* refactor: 将一些类移出 Shared
* chore: 将 Shared 中的文件移到 Magpie.Core
* refactor: 优化架构
* refactor: 命名空间调整
* refactor: XamlApp 合并进 App
* perf: 优化自定义事件的性能
* refactor: 使 XamlWindow 继承自 WindowBase
* refactor: 删除几个控件的 DependencyProperty
* fix: 避免 Win10 中退出后崩溃
* chore: 添加断言和注释
* refactor: 检测主题更改的逻辑集中在 App 中
* perf: 直接使用 RootPage 的实现类型
* refactor: 添加主窗口 DPI 改变事件
* refactor: 不再使用 Magpie.Core 命名空间
* fix: 修复析构全局变量时崩溃的问题
* chore: 添加注释
* perf: 更多地方直接使用实现类型
* perf: 更多地方直接使用实现类型
* chore: 避免依赖项缺少 pdb 导致链接警告
* perf: 更多地方直接使用实现类型
* fix: 修复无法更新的问题
|
2024-12-18 18:27:39 +08:00 |
|
Xu
|
ecf05baf57
|
引入 WIL (#894)
* chore: 引入 WIL
* chore: 引入 WIL 的错误处理
* Revert "chore: 引入 WIL 的错误处理"
This reverts commit 32d0fb25b4.
* refactor: 删除 ScopeExit,WIL 中有替代品
* refactor: 删除 ScopedHandle,WIL 中有替代品
* refactor: 删除 CSMutex 和 SRWMutex,WIL 中有替代品
* refactor: 删除 BStr,WIL 中有替代品
* chore: 不使用 WIL 的 VARIANT
* perf: 优化匹配配置文件的性能
* refactor: 删除 Win32Utils::CreateDir,改为 wil::CreateDirectoryDeepNoThrow
* refactor: 简化代码
* refactor: 简化代码
* refactor: GetModuleHandle(nullptr) 替换为 wil::GetModuleInstanceHandle
* feat: 优化获取程序路径
* refactor: 使用 wil::notify_property_changed_base 简化代码
* refactor: 添加 WinRTUtils::Event 简化创建事件的代码
* refactor: 简化代码
* refactor: 简化代码
* perf: 优化初始化时解析效果的性能
* refactor: 避免使用 <filesystem>
这使二进制文件减小了 6KB
* refactor: UpdateService 改为使用 Win32 接口写文件
1. WriteFile 非常快,没有异步的必要。
2. 不知为何有时快要下载完成时 co_await fileStream.WriteAsync(resultBuffer) 会崩溃,原因是“Layout cycle detected”,这很可能是 XAML 的 bug。
* perf: 使用 CNG 计算 MD5
* refactor: 简化代码
* fix: 修复 Win11 中打开通知区域溢出菜单导致意外终止缩放的问题
* refactor: 简化代码
* refactor: 简化代码
* refactor: 简化代码
* chore: 删除多余引用
|
2024-04-16 19:01:52 +08:00 |
|
Xu
|
ba421b5a06
|
多个性能优化 (#871)
* test
* perf: 优化流畅度
* chore: 修复编译警告
* test
* perf: 简化状态
* perf: 稍微优化 Renderer 的同步性能
* fix: 优化计时器精度
* fix: 优化调试模式下光标行为
* test
* chore
* perf
* fix: 错误处理
|
2024-04-03 19:24:43 +08:00 |
|
Xu
|
6f0e5ea33d
|
fix: 修复无法缩放全屏窗口
|
2024-03-28 21:17:09 +08:00 |
|
Xu
|
b167cd1d09
|
优化窗口边框的裁剪 (#864)
* feat: 优化对最大化窗口的支持
* feat: 捕捉标题栏时去除边框
* feat: 非最大化的窗口自动裁剪上边框
* perf: 性能优化
* fix: 错误修复
* fix: 修复警告
* fix: 尝试修复 Graphics Capture 的捕获区域
* feat: 适配 Win11 的捕获区域
* fix: 添加检查
|
2024-03-28 20:59:44 +08:00 |
|
刘旭
|
f919666f08
|
fix: 修复有时退出缩放光标不立刻显示的问题
主要是拖拽窗口时
|
2024-03-26 09:03:23 +08:00 |
|
刘旭
|
4900d57c1d
|
refactor: ScalingWindow 作为全局状态
|
2023-07-03 22:47:34 +08:00 |
|
刘旭
|
d6ef27a746
|
feat: 检测重复帧,和前一阵相同时不再重复渲染
|
2023-06-27 20:39:22 +08:00 |
|
刘旭
|
607ff88965
|
chore: 修复编译
|
2023-06-16 22:19:10 +08:00 |
|
刘旭
|
8ccf7b4d36
|
fix: 显示光标时重启捕获
|
2023-06-16 22:01:47 +08:00 |
|
刘旭
|
c82c0dde7e
|
feat: 添加 CursorManager
|
2023-06-16 20:32:26 +08:00 |
|
刘旭
|
11f9f6999c
|
feat: 初始化捕获
|
2023-06-11 20:57:46 +08:00 |
|
刘旭
|
3ed697cba0
|
feat: Graphics Capture
|
2023-06-11 20:39:29 +08:00 |
|
刘旭
|
a9d85dde44
|
chore: 删除现有代码
|
2023-06-05 19:39:27 +08:00 |
|
刘旭
|
00f0863fe4
|
fix: Graphics Capture 只在 Win11 中回落到屏幕捕获
Win10 中会有黄色边框
|
2023-03-14 20:59:37 +08:00 |
|
刘旭
|
51b845d384
|
fix: 修复存在未知效果时崩溃的问题
|
2023-03-04 15:32:23 +08:00 |
|
刘旭
|
dbedf20f34
|
fix: 修复部分游戏缩放后 Alt+Tab 列表中出现两个窗口的情况
|
2023-03-03 21:11:56 +08:00 |
|
刘旭
|
9aae602d45
|
fix: Graphics Capture 更早还原源窗口样式
|
2023-03-03 14:32:58 +08:00 |
|
刘旭
|
56aad7636d
|
feat: 优化 Graphics Capture
1. 不再尝试删除 WS_EX_TOOLWINDOW 样式,因为 WS_EX_APPWINDOW 的优先级高于 WS_EX_TOOLWINDOW fixes #464
2. 如果改变窗口样式后捕获失败,尝试使用 ITaskbarList 添加任务栏图标,最后回落到屏幕捕获
|
2023-03-03 14:17:17 +08:00 |
|
刘旭
|
d3f1d5f80f
|
fix: 修复与 RTSS 的兼容性
现在存在黑边时每帧渲染前都会清空后缓冲区。这在一些显卡上会降低性能,以后分离光标渲染时这里需要优化
|
2022-11-22 14:49:11 +08:00 |
|
刘旭
|
a5255e7321
|
fix: 修复缩放线程有几率卡死的问题
|
2022-11-18 21:11:16 +08:00 |
|
刘旭
|
e13424fbee
|
refactor: 缩放线程更改为 STA,更改了 Graphics Capture 捕获模式的实现方式
|
2022-11-18 20:05:39 +08:00 |
|
刘旭
|
21e07884cc
|
refactor: 优化操作系统版本检测
|
2022-11-12 17:11:59 +08:00 |
|
刘旭
|
593ead61d8
|
fix: 修复断言错误
|
2022-09-09 22:36:51 +08:00 |
|
刘旭
|
ada0c6d13f
|
fix: 时间线的效果名不显示路径
|
2022-09-08 22:12:39 +08:00 |
|
刘旭
|
4ee4e82325
|
fix: 修复光标消失问题
|
2022-09-08 21:49:19 +08:00 |
|
刘旭
|
37e584b5d6
|
chore: 更新命名空间
|
2022-08-29 12:35:45 +08:00 |
|
刘旭
|
611774aef6
|
chore: 将 Runtime 重命名为 Magpie.Core
|
2022-08-29 11:56:22 +08:00 |
|