我一直在试图弄清楚如何为我的Direct3D 11程序创建和使用立方体贴图。
我一直认为,如果我将6张图片导出到DDS文件,我只需使用CreateDDSTextureFromFile(_device, inName, (ID3D11Resource**)&_texture, &_shaderResourceView)
加载一个文件即可。但是我找不到似乎它应该用于将纹理编译成DDS的工具:dxtex.exe。从理论上讲,它附带了DirectX 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(...)
函数期望分配资源在我将纹理数据数组设置为单个立方体贴图之前,我不需要查看。
我的问题是:如今有人打算如何保存并加载立方体贴图?似乎并没有任何似乎有意无意的路线。
如果可能的话,我宁愿加载一个纹理。
答案 0 :(得分: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文件创建资源。