mirror of
https://github.com/Blinue/Magpie.git
synced 2026-06-24 02:04:10 +00:00
更新README
This commit is contained in:
parent
85ca9f8b5b
commit
f683172353
3 changed files with 13 additions and 18 deletions
22
README.md
22
README.md
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
主要用于游戏窗口的放大显示,适用于那些不支持全屏模式,或者游戏自带的全屏模式会使画面模糊的情况。
|
||||
|
||||
本项目还处于早期阶段,欢迎fork和star,欢迎任何形式的贡献。
|
||||
使用中遇到问题时请提交issue。
|
||||
|
||||
## 使用方法
|
||||
|
||||
|
|
@ -18,28 +18,28 @@
|
|||
|
||||
#### 缩放模式
|
||||
|
||||
目前缩放模式仅支持通用(Lanczos+锐化)以及动漫(Anime4K+mitchell+锐化)。内部使用json,如果你想,可以轻松地组合出自己的缩放模式。
|
||||
目前缩放模式仅支持通用(Lanczos+锐化)以及动漫(Anime4K+mitchell+锐化)。如果你想组合自己的缩放模式,请修改根目录下的ScaleModels.json。
|
||||
|
||||
#### 抓取模式
|
||||
|
||||
程序如何抓取源窗口图像,有三种选择:
|
||||
|
||||
1. WinRT Capture:使用[Screen Capture API](https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/screen-capture)抓取窗口,几乎完美的抓取方案,唯一的缺点是只支持Windows 10, version 1803及以后的版本
|
||||
1. WinRT Capture:使用[Screen Capture API](https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/screen-capture)抓取窗口,最推荐的方法。此API从Windows 10, v1803开始提供
|
||||
2. GDI:使用GDI抓取源窗口,速度较快,无法抓取到一些DirectX窗口
|
||||
3. MagCallback:使用[Magnification API](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/magapi/entry-magapi-sdk)抓取源窗口,相比GDI可以抓取到更多类型的窗口,但速度较慢
|
||||
3. MagCallback:使用[Magnification API](https://docs.microsoft.com/en-us/previous-versions/windows/desktop/magapi/entry-magapi-sdk)抓取源窗口,相比GDI可以抓取到更多类型的窗口,但速度较慢。不推荐使用
|
||||
|
||||
#### 注入模式
|
||||
|
||||
如果源程序使用了自定义鼠标,屏幕上可能出现两个鼠标,使用进程注入可解决这个问题。有三种选择:
|
||||
如果源程序使用了自定义光标,屏幕上可能出现两个光标,使用进程注入可解决这个问题。有三种选择:
|
||||
|
||||
1. 不使用注入:适用于源窗口没有自定义鼠标的场合
|
||||
1. 不使用注入:适用于源窗口没有自定义光标的场合
|
||||
2. 运行时注入:在窗口运行时按下热键可进入全屏并注入窗口,退出全屏后取消注入
|
||||
3. 启动时注入:适用于运行时注入不起作用的场合,不能注入正在运行的进程,需要手动选择要启动并注入的程序
|
||||
|
||||
#### 高级选项
|
||||
|
||||
* 显示帧率:在屏幕左上角显示帧率
|
||||
* 低延迟模式:使用“可等待对象”降低帧延迟。开启后可有效降低输入延迟,在帧率不足时可稍微提高帧率
|
||||
* 低延迟模式:开启后可有效降低输入延迟,使用WinRT Capture抓取模式时推荐开启
|
||||
* 关闭垂直同步:解除锁帧。不推荐使用
|
||||
|
||||
## 效果截图
|
||||
|
|
@ -70,9 +70,9 @@
|
|||
|
||||
尽管功能与[Lossless Scaling](https://store.steampowered.com/app/993090/Lossless_Scaling/)和[IntegerScaler](https://tanalin.com/en/projects/integer-scaler/)类似,但本程序的实现原理与它们完全不同。Lossless Scaling和IntegerScaler使用Magnification API实现对窗口的放大,但此API无法实现高级缩放算法,其核心函数[MagSetImageScalingCallback](https://docs.microsoft.com/en-us/windows/win32/api/magnification/nf-magnification-magsetimagescalingcallback)已被废弃,因此它们必须与显卡驱动打交道,而你的显卡很可能不被支持。此外,它们只支持整数倍的放大,这极大限制了它们的使用场景。举例来说,它们无法把一个1024x768大小的窗口放大到1920x1080。
|
||||
|
||||
本程序使用了一个十分符合直觉的方式放大窗口:使用一个全屏窗口覆盖屏幕,捕获原窗口的内容放大后在该全屏窗口显示出来。这种方式使得缩放算法不受任何限制,让我们可以自由使用现存的优秀缩放算法。为了使用GPU加速,全屏窗口使用了Direct2D技术,将缩放算法实现为[Direct2D Effect](https://docs.microsoft.com/en-us/windows/win32/direct2d/effects-overview),通过Effect的堆叠,我们可以用任何方式缩放窗口,以取得完美的效果。
|
||||
本程序的原理非常简单:使用一个全屏窗口覆盖屏幕,捕获原窗口的内容放大后在该全屏窗口显示出来。这种方式使得缩放算法不受任何限制,让我们可以自由使用现存的优秀缩放算法。为了使用GPU加速,本程序使用了Direct2D,将缩放算法实现为[Direct2D Effect](https://docs.microsoft.com/en-us/windows/win32/direct2d/effects-overview),通过Effect的堆叠,我们可以用任何方式缩放窗口,以取得完美的效果。
|
||||
|
||||
这种方案唯一的限制便是系统光标,因此这里使用了一点hack:将系统的光标替换为透明,然后在全屏窗口上绘制它,因此虽然光标始终处于源窗口内,但其不可见。大多数情况下,这些更改不会被用户感知到,尽管如此,如果源窗口使用了自定义光标,用户会在屏幕上看到两个光标。为了解决这个问题,我们提供了更深入的hack选项,即注入源窗口的进程,将其自定义光标也替换为透明,然后在全屏窗口上将其绘制,更深入的解释见[光标映射](./光标映射.md)。经过测试,该方法表现良好,如果遇到失效的情况请提交issue。
|
||||
关于光标的解决方案见[光标映射](./光标映射.md)。
|
||||
|
||||
## 使用提示
|
||||
|
||||
|
|
@ -88,7 +88,3 @@
|
|||
|
||||
开发本程序的初衷不含有任何恶意,但使用它所造成的后果应由您自己承担。
|
||||
|
||||
## 开发计划
|
||||
|
||||
见 [Milestones](https://github.com/Blinue/Magpie/milestones)
|
||||
|
||||
|
|
|
|||
|
|
@ -26,11 +26,10 @@ D2D_PS_ENTRY(main) {
|
|||
float l = Uncompress(D2DSampleInput(1, coord1.xy + (float2(0.5, 0.5) - f) * coord1.zw))[i.y * 2 + i.x];
|
||||
|
||||
// 消除因压缩产生的噪声
|
||||
if (abs(l) > 0.01) {
|
||||
float3 yuv = RGB2YUV(D2DSampleInput(0, coord0.xy).xyz);
|
||||
return float4(YUV2RGB(yuv.x + l, yuv.y, yuv.z), 1);
|
||||
} else {
|
||||
if (abs(l) < 0.01) {
|
||||
return D2DSampleInput(0, coord0.xy);
|
||||
}
|
||||
|
||||
|
||||
float3 yuv = RGB2YUV(D2DSampleInput(0, coord0.xy).xyz);
|
||||
return float4(YUV2RGB(yuv.x + l, yuv.y, yuv.z), 1);
|
||||
}
|
||||
|
|
|
|||
BIN
img/窗口截图.png
BIN
img/窗口截图.png
Binary file not shown.
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.3 KiB |
Loading…
Add table
Add a link
Reference in a new issue