Win32的CoreImage

时间:2020-03-06 14:57:36  来源:igfitidea点击:

对于那些不熟悉Core Image的人,这里有一个很好的描述:
http://developer.apple.com/macosx/coreimage.html

是否有与Windows的Apple的CoreImage / CoreVideo等效的东西?我环顾四周,发现DirectX / Direct3D东西包含所有底层组件,但是似乎没有任何高级API可以使用,除非我们愿意使用.NET和WPF,而这两个都不我真的很感兴趣

基本思想是创建/加载图像,添加可链接在一起的任意数量的滤镜,形成图形,然后使用GPU进行大多数艰苦的工作,然后将图像渲染到HDC。 DirectX / Direct3D具有这些功能,但是我们必须跳很多圈(或者看起来如此)才能使用它。

解决方案

有多种用于处理着色器的工具(例如RenderMonkey和FX-Composer),但没有与CoreImage直接等效的工具。

但是将片段着色器彼此叠加并不是很困难,因此,如果我们不介意学习OpenGL,则可以构建一个将着色器应用于输入图像并将结果绘制到HDC的框架。

Adobe的新Pixel Blender是目前最接近的技术。它是跨平台的-它是Flash 10运行时的一部分,也是关键的面向像素的CS4应用程序,即After Effects和即将推出的Photoshop。但是,目前尚不清楚目前有多少嵌入到其他应用程序中。在最极端的情况下,应该可以通过嵌入Flash视图来进行嵌入,但这显然要比设想的要多。

至少还有一个较小规模的第三方产品:Conduit Pixel Engine。它是商业性的,但是没有明确列出许可价格。

我现在有一个解决方案。我已经实现了一个ImageContext类,一个特殊的Image类和一个Filter类,该类允许与Apple的CoreImage类似的功能。这三个都使用OpenGL(由于图像质量问题,如果有人知道DirectX很好,请与我联系,因为我很想拥有Dx版本,因此我放弃尝试使它在DirectX上工作)以将图像渲染为上下文并使用滤镜来应用其效果(如HLGL片段着色器)。这里有一个简短的写法:
图像套件
带有示例过滤器的屏幕截图和一些示例源代码。