是否可以使用 DirectX 像素着色器为照片创建图像效果?我有一个 C++ 应用程序,其中包括一种照片数据库管理器。它利用 GDI+ 进行图像处理,我想为用户提供一些精美的图像效果——我想通过 DirectX 像素着色器来实现。我想实现类似的效果,例如 Shazzam 工具通过其示例库提供开箱即用的效果 - 不幸的是,我使用的是纯 GDI+ 而没有 WPF。
为了在 GDI+ 位图中创建图像效果,我想到了以下步骤:
1) 通过 GDI+ 加载图像
2) 初始化 DirectX,加载/编译着色器,将 GDI+ 图像转换为 DirectX 中的纹理
3) 在 DirectX 中绘制 4 个顶点并将照片用作纹理
4) 应用像素着色器
5)用像素着色照片保存表面
1-4 已经解决了,但是如何实现第 5 步呢?
目前我正在使用以下代码段来收集修改后的照片:
d3dDevice->GetRenderTarget(0, &surface);
D3DXSaveSurfaceToFile("Test.png", D3DXIFF_PNG, surface, NULL, NULL);
surface->Release();
surface = NULL;
这段代码不符合我的需要,因为它捕获了整个场景而不仅仅是纹理(=照片)。我怎样才能将像素着色的照片纹理恢复到原始大小?我想获得与 Shazzam Tool 提供的相同的结果,但没有 WPF ......
先感谢您!
干杯!