如何将着色器应用于计算机的最终 HDMI 视频输出?

问题描述

我希望能够在 PC 的 HDMI 输出端应用自定义最终着色器,然后再将其发送到我的显示器。

例如,假设我正在观看一部旧纪录片的 YouTube 视频;我希望能够将着色器应用于整个显示器以模拟旧 CRT 电视的外观。有没有人对我如何仅通过软件实现这一点有一些指示?

我在 Windows 10 上使用 GeForce 显卡。如果可能,我也希望能够在 MacOS 上执行此操作。

解决方法

在此演示阶段,您无法控制视频。当您观看 YouTube 视频时,大概是通过 Web 浏览器观看时,浏览器应用程序会呈现视频并将其传送到桌面窗口管理器,后者将来自应用程序和操作系统本身的数据组合成一个视频帧,以通过 HDMI 链接“发送”到连接的显示器。 Windows 不为您提供更改合成图像的服务,因此您无法在此阶段应用着色器,尤其是使用 OpenGL,因为为什么要使用 OpenGL。

您有几个选择,但没有一个是真正简单的。

您可以将 YouTube 内容显示在一台显示器上,然后使用桌面复制 API 捕获整个显示器的组合外观,将其用作着色器的输入纹理,应用效果,然后在另一台显示器上显示输出在您的播放器应用程序中。

或者,您可以自己实现媒体播放器,从 YouTube 获取视频,然后根据您使用的 API 或库,您可以根据需要修改正在播放的视频帧序列。准备好图片后,您可以在类似播放器的应用程序中显示视频。