我只想知道Directx 12 API从图像创建纹理。
DX11是D3DX11CreateShaderResourceViewFromFile,DX9是D3DXCreateTextureFromFileEx和DX12?
答案 0 :(得分:3)
现在事情好一点了。微软为DX12重写了他们的DDSTextureLoader,并在GitHub上将其作为MiniEngine的一部分发布 https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/MiniEngine/Core/DDSTextureLoader.cpp
您还可以查看我的衍生作品,该作品旨在使MiniEngine之外的DDSTextureLoader更容易使用。 https://github.com/ClemensX/ShadedPath12/blob/master/ShadedPath12/ShadedPath12/DDSTextureLoader.cpp
我将这个加载器用于所有纹理文件。它很好地解析了DDS(DirectDrawSurface)文件格式,包括mipmap。
答案 1 :(得分:1)
没有。
Direct3D 12是一个低级API。 非常低级API。它没有便利功能,只需从文件名中创建整个布料的纹理。如果要创建纹理,则必须为其工作。你必须加载文件,找出你想要它的格式,通过询问系统需要多少内存来为它分配内存,然后通过一系列复杂的步骤将加载的图像传输到该内存中。
答案 2 :(得分:1)
Direct3D 12的官方“实用程序标题”为d3dx12.h。它是一个内联头,没有DLL或静态库,因此提供的功能仅限于真正的帮助程序。它没有等同于D3DX11CreateShaderResourceViewFromFile
。它不作为Windows SDK的一部分包含在内,而是在MIT许可下提供,您只需将其复制到项目中 - 它包含在各种DirectX 12 Visual Studio模板中,包括我的Direct3D Game templates。
您可以使用DirectX Tool Kit for DirectX 12中提供的DDSTextureLoader
和WICTextureLoader
模块为Direct3D 12提供一些现成的纹理加载器。请参阅this tutorial lesson。
值得注意的是,D3DX9,D3DX10和D3DX11均已弃用,仅作为旧版{3}}的旧版DirectX SDK的一部分提供。换句话说,您不应该将
D3DX11CreateShaderResourceViewFromFile
用于Direct3D 11代码。有关D3DX9 / 10/11替换的完整列表,请参阅MSDN。 TL; DR:在this blog post中使用DDSTextureLoader
和WICTextureLoader
。
答案 3 :(得分:0)
关于 DX-12 和纹理的问题,Google 一直在参考这个主题,所以让我们更新。
1.管理
如果您坚持“托管”,请查看最新版本的 SharpDX (2019) 的示例
https://github.com/discosultan/dx12-game-programming
它提供了一个到 DX-12 原生的 C# 接口并且它可以工作,有很多非常好的示例,包括纹理,
...但恕我直言,继续依赖好老 SharpDX 库并不是明智之举,因为该库是not maintained anymore。我无法为 C# atm 提供好的替代方案,我不是 Unity 和 Vulkan 的专家。
2.不受管理
正如本主题前面提到的,DX-12 的情况有所改善。他们仍然这样做。在此处查看 Chuck Walbourn 的当前样本,
https://github.com/microsoft/Xbox-ATG-Samples
对于直接的 PC/x64,你会发现这个,
https://github.com/microsoft/Xbox-ATG-Samples/tree/master/PCSamples
对于 PC/UWP,你会发现这个,
https://github.com/microsoft/Xbox-ATG-Samples/tree/master/UWPSamples
这些是非常好的 x64 非托管 C++ 14.0 示例,将 DirectXtk 用于 DirectX-12。 Master 的最后一次更新是 3 个月前。涉及纹理的例子,还有直位图纹理
这些项目是为 VS2017 配置的,但它们在 VS2019 中加载时开箱即用,并且编译和运行正常。
其他来源
DX-12 上的一个已知总机是 vinjn on github,他的页面是
http://www.vinjn.com/awesome-d3d12/
从那里导航以研究文章并查找各种其他示例。
有一个关于 DX12 纹理主题的 3dgep.com 教程,即
https://www.3dgep.com/learning-directx-12-4/
...伴随