【问题标题】:Direct3D 11 issues in Windows 10(D3DX11_IMAGE_LOAD_INFO is removed)Windows 10 中的 Direct3D 11 问题(已删除 D3DX11_IMAGE_LOAD_INFO)
【发布时间】:2016-02-11 21:38:18
【问题描述】:

当我发现结构 D3DX11_IMAGE_LOAD_INFO 在 Windows 8.1 及更高版本的 DX 11 中已弃用时,我可以使用哪种结构来替换此结构。

【问题讨论】:

    标签: visual-studio-2013 direct3d11


    【解决方案1】:

    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 postsamplestoolsDirectX components 也有类似的帖子。

    由于您已使用 VS 2013 标记标记此问题,我假设您使用的是 Visual Studio 2013。您应该阅读它附带的 Windows 8.1 SDKDirectX Tool Kit 有一个 NuGet package,可与 VS 2013 Update 5 配合使用,还有一个 VS 2013 的“Direct3D 游戏”模板包,您可能想查看。

    【讨论】:

    • Chuck 我已经安装了 DirectX SDK(2010 年 6 月),我已经在 DXUT 库中进行了大量的更正,并使其适合我。在带有 VS 2015 的 Windows 10 上。抱歉,我无法处理适用于 Windows 8.1 和 10 的新版本 DXUT11。与此同时,我正在熟悉 DX 12,当我将尝试重新编写旧的 DX 10、DX 11 实现时DX 12,我应该如何在没有 DXUT 的情况下处理 Windows API 会很有趣,希望 DXUT for DX 12 尽快推出。
    • DXUT11 on GitHub 的目的是支持较旧的代码库和示例,使它们不再需要旧版 DirectX SDK。新项目可能应该完全避免它并使用其他东西。也许我在另一个 repo 上的 VS 模板与 DirectX Tool Kit 结合使用。
    • 如果您只针对 Windows 10 并且已经使用 VS 2015,您可以使用通用 Windows 平台来处理打包、部署、安装等。DXUT 不支持 UWP,但那些模板,DirectX 工具Kit、DirectXTex 等都可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2021-12-28
    • 2016-12-23
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多