【问题标题】:Post process windows video output后期处理windows视频输出
【发布时间】:2013-10-11 13:08:58
【问题描述】:

我正在尝试查看是否/如何制作一个 windows(甚至是 mac/linux)应用程序,该应用程序将发布处理屏幕上的所有内容。如果可能的话,我希望能够使用 glsl 着色器对屏幕上的所有内容执行颜色反转和 sobel 过滤等操作。有谁知道如何做到这一点?

【问题讨论】:

  • 既然您正在讨论可移植地执行此操作,我认为您将需要考虑在许多窗口管理器中处理表面的方式。在合成窗口管理器中(大多数新的都属于这一类),当交换前/后缓冲区时,窗口管理器使用后缓冲区表面的副本通过使用 OpenGL 或 D3D 等传统 API 来制作精美的 3D 效果。不幸的是,在 Windows 中,DWM 不会直接暴露它使用的表面,您可以使用公共 API 做的最好的事情是为应用程序中的任意窗口获取缩略图。
  • 有一些未记录的 DWM API 调用可能会对您有所帮助,即 UpdateWindowShared (...)GetSharedSurface (...)。我知道至少有一种商业产品实际使用了这些,并且您可能会在网上找到一些成功使用 API 中未记录部分的人的示例,但主要问题是您最终会得到一个 D3D 表面,即互操作。可能会使在 OpenGL 中执行此操作变得困难。

标签: c++ windows opengl glsl fullscreen


【解决方案1】:

Linux 的Compiz 合成器看起来可以做你想做的事。它已经包含了许多后期处理效果(作为包含的插件),并允许您通过自定义插件添加自己的效果。看起来这些插件可以使用 GLSL 像素着色器。

根据this site,以下命令应该在Ubuntu 13.04上设置CompizConfig设置管理器

sudo apt-get install synaptic
sudo apt-get install compizconfig-settings-manager compiz-plugins-extra

希望这能为您的项目提供一个有用的起点!

免责声明:我没有实际使用过 Compiz。我的描述基于我在网上可以找到的内容。

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 2012-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多