nomi-san / parsec-vdd

✨ Perfect 4K@240Hz Virtual Display
MIT License
1.78k stars 89 forks source link

想问一下,在作者没出那个app之前,使用者怎么创建自定义分辨率的虚拟屏幕 #8

Closed hhmfs closed 4 months ago

VergilGao commented 5 months ago

两种方案

  1. 调用 windows api
  2. 串流时手动调整分辨率

我最近就在完善一个命令行程序,sunshine在串流启动时有几个环境变量可以传递,包括了分辨率和帧数,只要传入这几个变量然后把程序做成后台运行就好了 串流完成时再把进程关掉,后台的update线程断掉自然而然虚拟显示器就没有了。

然后win11有提供一个很方便的功能,我不知道win10有没有,就是会记忆某几个显示器存在时的配置状态。比如我现在有两个显示器,当虚拟显示器加载时,我手动指定一下关闭另外两个显示器,这样等串流结束,虚拟显示器卸载,另外两个显示器会按照之前的配置(位置,朝向)恢复。 然后下次虚拟显示器加载时,他会自动关闭另外两个显示器,就不需要你再手动指定一下了。

现在我那个程序因为是cmake写的交叉编译,setupapi.lib 链接不上,一直找不到这个动态库,所以还没搞定……明天我看看干脆在windows下搞个c++编译环境算了

这个程序就相当于是专门为sunshine设计的高度特化parsec-vdd方案,作者要做的程序应该具有更普遍的适应性。我本身就是做工业软件定制的,不喜欢做那种超多功能适配大众需求的程序,因为要考虑的东西太多就很烦。

更新了一下,今天完善了之前的问题,发了一个release,我自己用没啥问题 https://github.com/VergilGao/vddswitcher

hhmfs commented 5 months ago

隔壁Iddsampledriver系列作者用过吗,https://github.com/MolotovCherry/virtual-display-rs,或许可以参考。但这个在远控时会出现鼠标重影的现象

nomi-san commented 4 months ago

Related to #9 (Support 8K). Refer to the README's Custom resolutions section or this guide to create custom resolutions.