我正在阅读针对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 );
Run Code Online (Sandbox Code Playgroud)
Chu*_*urn 11
"Direct3D"和"D3DX"之间始终存在区别,但对每个人来说并不一定是显而易见的.所有版本的D3DX现已弃用,不在Windows 8.x SDK中,并且不能被Windows应用商店应用,Windows Phone 8.x应用或Xbox One应用使用.阅读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桌面应用.
像许多D3DX函数一样,D3DX11CreateShaderResourceViewFromFile是一个全有的厨房接收工具,这意味着很难知道它何时会成为一个非常快速的函数或一个非常慢的函数.
替换此函数有两种不同的选项:DDSTextureLoader和WICTextureLoader.这些是DirectXTK的一部分,DirectXTex包中也有"独立"版本.
有关详细信息,请参阅此博客文章.
请参阅Living without D3DX博文,了解D3DX11推荐替代产品的完整表格.
请注意,如果您使用的是Direct3D 10和D3DX10,建议转到Direct3D 11.