我可以在WPF中创建运动着色像素着色器吗?

我可以在WPF中创建运动着色像素着色器吗?,wpf,motion-detection,pixel-shader,Wpf,Motion Detection,Pixel Shader,我有一个在屏幕上画线的视频播放。是否可以创建一个像素着色器(用于WPF),将新着色的像素转换为特定颜色达N毫秒 这样,当线条不经常移动且用户不总是看屏幕时,屏幕上可能会有一些移动指示。您可以使用DirectShow。它是用非托管代码编写的,因此您需要使用此包装器,以便在托管环境中运行的C#应用程序中使用它(包括示例,甚至还有代表增强视频渲染器的EVR,这意味着更好的视频质量)。当您将控制句柄传递给包装器方法以设置视频输出时,您需要一个WinForms控件,因为只有从它们才能获得所需的控制句柄。当

我有一个在屏幕上画线的视频播放。是否可以创建一个像素着色器(用于WPF),将新着色的像素转换为特定颜色达N毫秒


这样,当线条不经常移动且用户不总是看屏幕时,屏幕上可能会有一些移动指示。

您可以使用
DirectShow
。它是用非托管代码编写的,因此您需要使用此包装器,以便在托管环境中运行的C#应用程序中使用它(包括示例,甚至还有代表增强视频渲染器的EVR,这意味着更好的视频质量)。当您将控制句柄传递给包装器方法以设置视频输出时,您需要一个WinForms控件,因为只有从它们才能获得所需的控制句柄。当您需要在WPF应用程序中使用某些WinForms控件时,您可以使用为此类情况提供的
WindowsFormsHost
控件在WPF应用程序中宿主WinForms控件。这只是理论,所以我不知道这是否是你的最终解决方案

顺便说一句:整个想法是基于这样一个事实,
DirectShow
只是一些由分离的过滤器构造的查询。渲染器是一个过滤器(EVR、VMR-7、VMR-9)。声音播放器是一个过滤器。它们通过插脚连接。它就像一张图表。电子模式之类的。您可以在其中放置例如
灰度
过滤器。瞧,视频输出将是灰度的。这里有很多关于这方面的教程。并且完成了简单的过滤器。不幸的是,过滤器必须用C++编写:(


PS:我从来没有说过这会很容易:D

Ya,我想用direct show来做这件事,但我想这是我唯一的选择。据了解,在VLC media player中,他们似乎添加了着色器支持。你可以找到VLClib C#wrapper,它甚至可以让你使用着色器。它比DirectShow更好,因为它非常简单sy的使用和理解。所以我建议你先试试vlclib。也许我找到了另一个解决方案。绝对简单的解决方案。你可以找到它。这是我之前评论的补充。