我正在阅读DX11的http://www.braynzarsoft.net/教程,但我主要是使用metro风格应用程序在DX11.1上学习编程。
随着我继续学习,我发现Dx11中的一些功能在DX11.1中不再存在,就像教程用于加载纹理的D3DX11CreateShaderResourceViewFromFile
,但在DX11.1中我们没有这个!
我的问题是如何在DX11.1中加载DDS纹理?
我想在此代码中替换该函数,以便我可以加载DDS纹理:
hr = D3DX11CreateShaderResourceViewFromFile( d3d11Device, L"braynzar.jpg",
NULL, NULL, &CubesTexture, NULL );
// Describe the Sample State
D3D11_SAMPLER_DESC sampDesc;
ZeroMemory( &sampDesc, sizeof(sampDesc) );
sampDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
sampDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
sampDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
sampDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;
sampDesc.ComparisonFunc = D3D11_COMPARISON_NEVER;
sampDesc.MinLOD = 0;
sampDesc.MaxLOD = D3D11_FLOAT32_MAX;
//Create the Sample State
hr = d3d11Device->CreateSamplerState( &sampDesc, &CubesTexSamplerState );
答案 0 :(得分:11)
总是区分" Direct3D"和" D3DX",但它并不一定对每个人都很明显。所有版本的D3DX现在都是deprecated,不在Windows 8.x SDK中,并且不能被Windows应用商店应用,Windows phone 8.x应用或Xbox One应用使用。请阅读Where is the DirectX SDK?以获取更多信息。
D3DX的主要替换库是DirectXTK,DirectXTex和DirectXMesh。这些平台支持所有Direct3D 11.x平台,包括适用于Windows 8.0的Windows应用商店应用,适用于Windows 8.1的Windows应用商店应用,适用于Windows Vista,Windows 7和Windows 8.x的Windows Phone 8.x,Xbox One和Win32桌面应用。< / p>
与许多D3DX功能一样,D3DX11CreateShaderResourceViewFromFile是一个全有的厨房水槽工具,这意味着很难知道它何时会成为一个非常快速的功能或极其缓慢的功能。
替换此功能有两种不同的选项:DDSTextureLoader和 WICTextureLoader。这些是DirectXTK的一部分,并且有独立的&#39; DirectXTex包中的版本。
有关详细信息,请参阅this博文。
请参阅Living without D3DX博文,了解D3DX11推荐替代品的完整表格。
请注意,如果您使用的是Direct3D 10和D3DX10,建议您转到Direct3D 11。
答案 1 :(得分:-1)
在DirectxTK中查看DDSTextureLoader。
编辑他明确询问如何加载DDS纹理。请在投票前仔细阅读问题。