【问题标题】:Making and loading cubemaps in modern DirectX (11, post Windows 8.1)在现代 DirectX 中制作和加载立方体贴图(11,Windows 8.1 之后)
【发布时间】:2015-12-31 06:50:15
【问题描述】:

我一直试图弄清楚如何为我的 Direct3D 11 程序创建和使用立方体贴图。

我一直相信,如果我将 6 张图像导出到 DDS 文件,我可以使用 CreateDDSTextureFromFile(_device, inName, (ID3D11Resource**)&_texture, &_shaderResourceView) 简单地加载该文件。但是我找不到似乎应该用于将纹理编译到 DDS 中的工具:dxtex.exe。理论上,它附带 DirectX SDK,该 SDK 自 Windows 8.1 (http://blogs.msdn.com/b/chuckw/archive/2013/07/01/where-is-the-directx-sdk-2013-edition.aspx) 以来已失效。我搜索了我的硬盘,但它不存在(所以大概没有与 Visual Studio 一起安装——我有 2013 和 2015;我正在运行 Windows 10,从 8.1 升级)。

还有一个用于 Photoshop 的 Nvidia 插件,它在 3 年内没有更新,当我尝试运行它时,我的 Photoshop 副本崩溃(CC 2015)。有关于 AMD 工具的传言,但我读到有一段时间不支持它,比如 Nvidia 工具。

我什至在几年前看过这篇文章,他们只是单独加载每个纹理(但似乎您应该使用外部库,因为 CreateXXXTextureFromFile(...) 函数希望分配资源视图,在我将纹理数据数组设置为单个立方体贴图之前,我不需要它。

我的问题是:现在有人打算如何保存和加载立方体地图?似乎没有任何路线看起来是有意的,而是偶然的。

如果可能,我希望加载单个纹理。

【问题讨论】:

    标签: graphics directx directx-11


    【解决方案1】:

    您可以安装旧版 DirectX SDK(2010 年 6 月)来获取旧版 DXTex 工具。请记住,安装旧版 DirectX SDK 时有 known issues,一些旧版 DirectX SDK 与 DirectX 11.1 or later runtimes 不兼容,并且 DXTex 工具不支持所有 DXGI 格式--有关详细信息,请参阅 The DDS File Format Lives .

    DirectXTex 库项目包括一个命令行工具texassemble,您可以使用该工具将复杂的阵列、立方体贴图和体积贴图从单个图像文件构建到 DDS 中。然后,您可以使用texconv 命令行工具将该 DDS 处理为其他格式(例如将其块压缩为 BC 格式)。

    使用 DirectXTex 制作新版本的 DXTex 是 backlog item

    您可以使用DDSTextureLoader 代码在运行时从您的复杂 DDS 文件创建资源。

    【讨论】:

    • 我很幸运使用 texassemble。为了完整起见,我发现this page 描述了应该给出纹理参数以正确组装天空盒的顺序。 (+X, -X, +Y, -Y, +Z, -Z)
    • This page 似乎是具有相同信息的官方文档,尽管不是那么直接。
    • 我现在同时维护 DirectXTex 的 CodePlex 和 GitHub 版本,但 GitHub 版本是首选版本,包括文档,因为这是我关注未来内容的地方。
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多