【发布时间】:2016-02-11 21:38:18
【问题描述】:
当我发现结构 D3DX11_IMAGE_LOAD_INFO 在 Windows 8.1 及更高版本的 DX 11 中已弃用时,我可以使用哪种结构来替换此结构。
【问题讨论】:
标签: visual-studio-2013 direct3d11
当我发现结构 D3DX11_IMAGE_LOAD_INFO 在 Windows 8.1 及更高版本的 DX 11 中已弃用时,我可以使用哪种结构来替换此结构。
【问题讨论】:
标签: visual-studio-2013 direct3d11
D3DX11_IMAGE_LOAD_INFO 是 DirectX SDK 中 D3DX11 实用程序库的一部分。
D3DX9、D3DX10 和 D3DX11 连同旧版 DirectX SDK 均已弃用。请在此处查看MSDN 了解完整详情。
根据您在此处使用 D3DX11 的确切目的,有许多不同的选项(所有这些选项都是在 MIT 许可下开源的)。
DirectXTex 库在 D3DX 中提供用于加载位图、调整大小和转换它们、生成 mipmap、压缩然后将它们写为 .DDS 文件的功能。对于大多数应用程序在运行时执行此操作通常是多余的,并且无论如何都不能很好地利用最终用户的时间,但对于编写用于纹理处理的自定义内容工具管道来说非常有用。 DirectXTex 包包含一个“示例”,它是古老的texconv 命令行工具,用于使用 DirectXTex 而不是 D3DX。
DDSTextureLoader 模块旨在处理 .DDS 文件的有效加载并从中创建 Direct3D 11 资源。它不执行任何运行时转换,因此某些具有不直接映射到 DXGI 格式的像素格式的旧文件将无法加载,并且在某些情况下,设备不支持文件的 DXGI 格式并且也会无法加载.对于这些情况,您将需要使用 DirectXTex 将它们离线转换为您可以依赖能够加载到目标计算机上的东西。此代码支持所有 Direct3D 11 资源,包括 1D、2D、3D、立方体贴图和带有 mipmap 的纹理数组。 DDSTextureLoader 模块包含在 DirectXTK 库和 DirectXTex 包中。
对于非常简单的情况,还有一个WICTextureLoader 模块可以加载标准位图文件,进行一些运行时转换和调整大小,然后从中创建 Direct3D 11 纹理 2D。它可以选择启用 Direct3D 11 的“自动生成 mipmap”功能,以提供一些基本的 mipmap 支持(标准位图文件不能像 .DDS 文件那样将 mipmap 与基本图像一起存储)。这利用了 Windows 映像组件 (WIC),但比 DDSTextureLoader 更“重量级”。这使您对过滤质量(尤其是 mipmap)的控制更少,并且不支持复杂的纹理,如体积贴图、立方体贴图或纹理数组。 WICTextureLoader 模块也包含在DirectXTK 库和 DirectXTex 包中。
ScreenGrab 模块旨在用作轻量级纹理保护程序,用于从渲染目标纹理创建“屏幕截图”位图文件。 ScreenGrab 模块包含在 DirectXTK 库和 DirectXTex 包中。
--摘自this post
有关旧版 D3DX 替代品的完整目录,请参阅 this post。 samples、tools 和 DirectX components 也有类似的帖子。
由于您已使用 VS 2013 标记标记此问题,我假设您使用的是 Visual Studio 2013。您应该阅读它附带的 Windows 8.1 SDK。 DirectX Tool Kit 有一个 NuGet package,可与 VS 2013 Update 5 配合使用,还有一个 VS 2013 的“Direct3D 游戏”模板包,您可能想查看。
【讨论】: