#filter #directx #scale #shader #graphics #color

dxfilter

使用 DirectX 着色器处理纹理。包括一些缩放、颜色转换过滤器以及制作自己的工具。

13 个版本

0.5.13 2024 年 6 月 8 日
0.5.12 2023 年 11 月 6 日
0.5.11 2022 年 7 月 31 日

#315图形 API

MIT/Apache

50KB
865

DxFilter

docs.rs Crates.io Crates.io

使用 DirectX 过滤器进行缩放和颜色转换。您还可以使用提供的 API 创建自己的过滤器。

库包含各种工具来实现这些功能。

  • generate_shader!compile_shader! 宏,用于编写在编译时编译的着色器
  • 用于将 RGB 转换为 YUV 或 NV12 的各种内置过滤器
  • DxFilter 接口,用于编写自定义过滤器
  • create_device_contextcreate_input_texcreate_output_tex 等工具,以简化设置。
  • AdapterFactoryAdapterTextureReader 等工具,从 win_desktop_duplication 引入。

例如使用方法,请查看 examples/rgb_to_nv12.rs

用法

// for more detailed example see examples/rgb_to_nv12.rs
fn main() {
    // {...}

    //                                    Texture    Texture    directx device
    let filter = ConvertARGBToNV12::new(&input_tex, &output_tex, &device).unwrap();
    //                directx device
    filter.apply_filter(&context).unwrap();

    // { ... }
}

可用过滤器

  • ARGB 到 AYUV
  • ARGB 到 NV12
  • 仅 ARGB 或 AYUV 缩放
  • ARGB 到 YUV 平面
  • ARGB 到 YUV420 平面
  • ARGB16 到 Y410
  • ARGB16 到 YUV444 10bit 平面
  • ARGB16 到 YUV420 10bit 平面

依赖项

~132MB
~2M SLoC