diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2018-10-07 05:45:34 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2018-10-07 05:45:34 +0000 |
| commit | 35c318c44920ed670cd975a7848019b5d0b6eef3 (patch) | |
| tree | d34f215228d817d1d2315d85dee6446846c0a641 /Graphics | |
| parent | Fixed gcc/clang build (diff) | |
| download | DiligentCore-35c318c44920ed670cd975a7848019b5d0b6eef3.tar.gz DiligentCore-35c318c44920ed670cd975a7848019b5d0b6eef3.zip | |
Reworked D3D11 swap chain to properly return current RTV and DSV through GetCurrentBackBufferRTV() and GetDepthBufferDSV()
Diffstat (limited to 'Graphics')
7 files changed, 133 insertions, 114 deletions
diff --git a/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h b/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h index f72128cc..3551b5d3 100644 --- a/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h +++ b/Graphics/GraphicsEngineD3D11/include/SwapChainD3D11Impl.h @@ -54,20 +54,15 @@ public: virtual IDXGISwapChain* GetDXGISwapChain()override final{ return m_pSwapChain; } - virtual ID3D11RenderTargetView* GetRTV()override final{ return m_pRenderTargetView; } - virtual ID3D11DepthStencilView* GetDSV()override final{ return m_pDepthStencilView; } - - virtual ITextureView* GetCurrentBackBufferRTV()override final{return nullptr;} - virtual ITextureView* GetDepthBufferDSV()override final{return nullptr;} + virtual ITextureViewD3D11* GetCurrentBackBufferRTV()override final{return m_pRenderTargetView;} + virtual ITextureViewD3D11* GetDepthBufferDSV() override final{return m_pDepthStencilView;} private: virtual void UpdateSwapChain(bool CreateNew)override final; void CreateRTVandDSV(); - /// Back buffer render target view - CComPtr<ID3D11RenderTargetView> m_pRenderTargetView; - /// Back buffer depth-stencil view - CComPtr<ID3D11DepthStencilView> m_pDepthStencilView; + RefCntAutoPtr<ITextureViewD3D11> m_pRenderTargetView; + RefCntAutoPtr<ITextureViewD3D11> m_pDepthStencilView; }; } diff --git a/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h b/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h index f6ee357e..07ea799d 100644 --- a/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h +++ b/Graphics/GraphicsEngineD3D11/interface/SwapChainD3D11.h @@ -27,6 +27,7 @@ /// Definition of the Diligent::ISwapChainD3D11 interface #include "../../GraphicsEngine/interface/SwapChain.h" +#include "TextureViewD3D11.h" namespace Diligent { @@ -39,24 +40,17 @@ static constexpr INTERFACE_ID IID_SwapChainD3D11 = class ISwapChainD3D11 : public ISwapChain { public: + /// Returns render target view of the back buffer in the swap chain + virtual ITextureViewD3D11* GetCurrentBackBufferRTV() = 0; + + /// Returns depth-stencil view of the depth buffer + virtual ITextureViewD3D11* GetDepthBufferDSV() = 0; /// Returns a pointer to the IDXGISwapChain interface of the internal DXGI object. /// The method does *NOT* call AddRef() on the returned interface, /// so Release() must not be called. virtual IDXGISwapChain* GetDXGISwapChain() = 0; - - /// Returns d3d11 render target view of the swap chain's back buffer - - /// The method does *NOT* call AddRef() on the returned interface, - /// so Release() must not be called. - virtual ID3D11RenderTargetView* GetRTV() = 0; - - /// Returns d3d11 depth stencil view of the internal depth buffer object - - /// The method does *NOT* call AddRef() on the returned interface, - /// so Release() must not be called. - virtual ID3D11DepthStencilView* GetDSV() = 0; }; } diff --git a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp index 369b632e..d848c5b0 100755 --- a/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/DeviceContextD3D11Impl.cpp @@ -845,22 +845,11 @@ namespace Diligent void DeviceContextD3D11Impl::ClearDepthStencil( ITextureView* pView, Uint32 ClearFlags, float fDepth, Uint8 Stencil )
{
- ID3D11DepthStencilView* pd3d11DSV = nullptr;
- if( pView != nullptr )
- {
-#ifdef _DEBUG
- const auto& ViewDesc = pView->GetDesc();
- VERIFY( ViewDesc.ViewType == TEXTURE_VIEW_DEPTH_STENCIL, "Incorrect view type: depth stencil is expected" );
-#endif
- auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pView);
- pd3d11DSV = static_cast<ID3D11DepthStencilView *>(pViewD3D11->GetD3D11View());
- }
- else
+ if (pView == nullptr)
{
if (m_pSwapChain)
{
- pd3d11DSV = m_pSwapChain.RawPtr<ISwapChainD3D11>()->GetDSV();
- VERIFY_EXPR(pd3d11DSV != nullptr);
+ pView = m_pSwapChain->GetDepthBufferDSV();
}
else
{
@@ -868,6 +857,14 @@ namespace Diligent return;
}
}
+
+#ifdef DEVELOPMENT
+ const auto& ViewDesc = pView->GetDesc();
+ VERIFY( ViewDesc.ViewType == TEXTURE_VIEW_DEPTH_STENCIL, "Incorrect view type: depth stencil is expected" );
+#endif
+ auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pView);
+ auto* pd3d11DSV = static_cast<ID3D11DepthStencilView*>(pViewD3D11->GetD3D11View());
+
UINT32 d3d11ClearFlags = 0;
if( ClearFlags & CLEAR_DEPTH_FLAG ) d3d11ClearFlags |= D3D11_CLEAR_DEPTH;
if( ClearFlags & CLEAR_STENCIL_FLAG ) d3d11ClearFlags |= D3D11_CLEAR_STENCIL;
@@ -878,22 +875,11 @@ namespace Diligent void DeviceContextD3D11Impl::ClearRenderTarget( ITextureView* pView, const float *RGBA )
{
- ID3D11RenderTargetView* pd3d11RTV = nullptr;
- if( pView != nullptr )
+ if (pView == nullptr)
{
-#ifdef _DEBUG
- const auto& ViewDesc = pView->GetDesc();
- VERIFY( ViewDesc.ViewType == TEXTURE_VIEW_RENDER_TARGET, "Incorrect view type: render target is expected" );
-#endif
- auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pView);
- pd3d11RTV = static_cast<ID3D11RenderTargetView*>(pViewD3D11->GetD3D11View());
- }
- else
- {
- if (m_pSwapChain)
+ if (m_pSwapChain != nullptr)
{
- pd3d11RTV = m_pSwapChain.RawPtr<ISwapChainD3D11>()->GetRTV();
- VERIFY_EXPR(pd3d11RTV != nullptr);
+ pView = m_pSwapChain->GetCurrentBackBufferRTV();
}
else
{
@@ -902,6 +888,13 @@ namespace Diligent }
}
+#ifdef DEVELOPMENT
+ const auto& ViewDesc = pView->GetDesc();
+ VERIFY( ViewDesc.ViewType == TEXTURE_VIEW_RENDER_TARGET, "Incorrect view type: render target is expected" );
+#endif
+ auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pView);
+ auto* pd3d11RTV = static_cast<ID3D11RenderTargetView*>(pViewD3D11->GetD3D11View());
+
static const float Zero[4] = { 0.f, 0.f, 0.f, 0.f };
if( RGBA == nullptr )
RGBA = Zero;
@@ -990,8 +983,10 @@ namespace Diligent {
NumRenderTargets = 1;
auto* pSwapChainD3D11 = m_pSwapChain.RawPtr<ISwapChainD3D11>();
- pd3d11RTs[0] = pSwapChainD3D11->GetRTV();
- pd3d11DSV = pSwapChainD3D11->GetDSV();
+ auto* pBackBufferViewD3D11 = pSwapChainD3D11->GetCurrentBackBufferRTV();
+ pd3d11RTs[0] = static_cast<ID3D11RenderTargetView*>(pBackBufferViewD3D11->GetD3D11View());
+ auto* pDepthBufferViewD3D11 = pSwapChainD3D11->GetDepthBufferDSV();
+ pd3d11DSV = static_cast<ID3D11DepthStencilView*>(pDepthBufferViewD3D11->GetD3D11View());
VERIFY_EXPR(pd3d11RTs[0] != nullptr && pd3d11DSV != nullptr);
}
else
@@ -1007,7 +1002,7 @@ namespace Diligent auto* pView = m_pBoundRenderTargets[rt].RawPtr();
if( pView )
{
- auto* pViewD3D11 = static_cast<TextureViewD3D11Impl*>(pView);
+ auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pView);
pd3d11RTs[rt] = static_cast<ID3D11RenderTargetView*>(pViewD3D11->GetD3D11View());
}
else
@@ -1017,7 +1012,7 @@ namespace Diligent auto* pDepthStencil = m_pBoundDepthStencil.RawPtr();
if( pDepthStencil != nullptr )
{
- auto* pViewD3D11 = static_cast<TextureViewD3D11Impl*>(pDepthStencil);
+ auto* pViewD3D11 = ValidatedCast<TextureViewD3D11Impl>(pDepthStencil);
pd3d11DSV = static_cast<ID3D11DepthStencilView*>(pViewD3D11->GetD3D11View());
}
}
diff --git a/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp b/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp index cdc8e744..1bb2267d 100644 --- a/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp +++ b/Graphics/GraphicsEngineD3D11/src/SwapChainD3D11Impl.cpp @@ -51,46 +51,47 @@ SwapChainD3D11Impl::~SwapChainD3D11Impl() void SwapChainD3D11Impl::CreateRTVandDSV() { - auto *pDevice = m_pRenderDevice.RawPtr<RenderDeviceD3D11Impl>()->GetD3D11Device(); - + auto* pRenderDeviceD3D11Impl = m_pRenderDevice.RawPtr<RenderDeviceD3D11Impl>(); + m_pRenderTargetView.Release(); m_pDepthStencilView.Release(); // Create a render target view - CComPtr<ID3D11Texture2D> pBackBuffer; - CHECK_D3D_RESULT_THROW( m_pSwapChain->GetBuffer( 0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>( static_cast<ID3D11Texture2D**>(&pBackBuffer) ) ), + CComPtr<ID3D11Texture2D> pd3dBackBuffer; + CHECK_D3D_RESULT_THROW( m_pSwapChain->GetBuffer( 0, __uuidof(ID3D11Texture2D), reinterpret_cast<void**>( static_cast<ID3D11Texture2D**>(&pd3dBackBuffer) ) ), "Failed to get back buffer from swap chain" ); - - D3D11_RENDER_TARGET_VIEW_DESC RTVDesc = {}; - RTVDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D; - // We need to explicitly specify RTV format, as we may need to create RGBA8_UNORM_SRGB RTV for - // a RGBA8_UNORM swap chain - RTVDesc.Format = TexFormatToDXGI_Format(m_SwapChainDesc.ColorBufferFormat); - RTVDesc.Texture2D.MipSlice = 0; - CHECK_D3D_RESULT_THROW( pDevice->CreateRenderTargetView( pBackBuffer, &RTVDesc, &m_pRenderTargetView ), - "Failed to get RTV for the back buffer" ); - + static const char BackBufferName[] = "Main back buffer"; + auto hr = pd3dBackBuffer->SetPrivateData(WKPDID_D3DDebugObjectName, _countof(BackBufferName)-1, BackBufferName); + VERIFY(SUCCEEDED(hr)); + + RefCntAutoPtr<ITexture> pBackBuffer; + pRenderDeviceD3D11Impl->CreateTextureFromD3DResource(pd3dBackBuffer, &pBackBuffer); + + TextureViewDesc RTVDesc; + RTVDesc.ViewType = TEXTURE_VIEW_RENDER_TARGET; + RTVDesc.Format = m_SwapChainDesc.ColorBufferFormat; + RefCntAutoPtr<ITextureView> pRTV; + pBackBuffer->CreateView(RTVDesc, &pRTV); + m_pRenderTargetView = RefCntAutoPtr<ITextureViewD3D11>(pRTV, IID_TextureViewD3D11); + // Create depth buffer - D3D11_TEXTURE2D_DESC DepthBufferDesc; + TextureDesc DepthBufferDesc; + DepthBufferDesc.Name = "Main depth buffer"; + DepthBufferDesc.Type = RESOURCE_DIM_TEX_2D; DepthBufferDesc.Width = m_SwapChainDesc.Width; DepthBufferDesc.Height = m_SwapChainDesc.Height; DepthBufferDesc.MipLevels = 1; DepthBufferDesc.ArraySize = 1; - auto DepthFormat = TexFormatToDXGI_Format( m_SwapChainDesc.DepthBufferFormat ); - DepthBufferDesc.Format = DepthFormat; - DepthBufferDesc.SampleDesc.Count = m_SwapChainDesc.SamplesCount; - DepthBufferDesc.SampleDesc.Quality = 0; - DepthBufferDesc.Usage = D3D11_USAGE_DEFAULT; - DepthBufferDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + DepthBufferDesc.Format = m_SwapChainDesc.DepthBufferFormat; + DepthBufferDesc.SampleCount = m_SwapChainDesc.SamplesCount; + DepthBufferDesc.Usage = USAGE_DEFAULT; + DepthBufferDesc.BindFlags = BIND_DEPTH_STENCIL; DepthBufferDesc.CPUAccessFlags = 0; DepthBufferDesc.MiscFlags = 0; - CComPtr<ID3D11Texture2D> ptex2DDepthBuffer; - CHECK_D3D_RESULT_THROW( pDevice->CreateTexture2D( &DepthBufferDesc, NULL, &ptex2DDepthBuffer ), - "Failed to create the depth buffer" ); - - // Create DSV - CHECK_D3D_RESULT_THROW( pDevice->CreateDepthStencilView( ptex2DDepthBuffer, NULL, &m_pDepthStencilView ), - "Failed to create the DSV for the depth buffer" ); + RefCntAutoPtr<ITexture> ptex2DDepthBuffer; + m_pRenderDevice->CreateTexture(DepthBufferDesc, TextureData{}, &ptex2DDepthBuffer); + auto pDSV = ptex2DDepthBuffer->GetDefaultView(TEXTURE_VIEW_DEPTH_STENCIL); + m_pDepthStencilView = RefCntAutoPtr<ITextureViewD3D11>(pDSV, IID_TextureViewD3D11); } IMPLEMENT_QUERY_INTERFACE( SwapChainD3D11Impl, IID_SwapChainD3D11, TSwapChainBase ) diff --git a/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp index 4d26ba9a..5e600ca9 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture1D_D3D11.cpp @@ -74,20 +74,32 @@ static TextureDesc TexDescFromD3D11Texture1D(ID3D11Texture1D *pd3d11Texture) { D3D11_TEXTURE1D_DESC D3D11TexDesc; pd3d11Texture->GetDesc(&D3D11TexDesc); - + TextureDesc TexDesc; - TexDesc.Name = "Texture1D_D3D11 from native d3d11 texture"; - TexDesc.Type = D3D11TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_1D_ARRAY : RESOURCE_DIM_TEX_1D; - TexDesc.Width = Uint32{D3D11TexDesc.Width}; - TexDesc.Height = 1; - TexDesc.ArraySize = Uint32{D3D11TexDesc.ArraySize}; - TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); - TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; - TexDesc.SampleCount = 1; - TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); - TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); + + UINT DataSize = 0; + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, nullptr); + std::vector<char> ObjectName; + if (DataSize > 0) + { + ObjectName.resize(DataSize+1); // Null terminator is not reported in DataSize + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, ObjectName.data()); + TexDesc.Name = ObjectName.data(); + } + else + TexDesc.Name = "Texture1D_D3D11 from native d3d11 texture"; + + TexDesc.Type = D3D11TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_1D_ARRAY : RESOURCE_DIM_TEX_1D; + TexDesc.Width = Uint32{D3D11TexDesc.Width}; + TexDesc.Height = 1; + TexDesc.ArraySize = Uint32{D3D11TexDesc.ArraySize}; + TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); + TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; + TexDesc.SampleCount = 1; + TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); + TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); TexDesc.CPUAccessFlags = D3D11CPUAccessFlagsToCPUAccessFlags(D3D11TexDesc.CPUAccessFlags); - TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); + TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); return TexDesc; } diff --git a/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp index 1e338e84..dbe780d9 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture2D_D3D11.cpp @@ -81,18 +81,29 @@ static TextureDesc TexDescFromD3D11Texture2D(ID3D11Texture2D *pd3d11Texture) pd3d11Texture->GetDesc(&D3D11TexDesc); TextureDesc TexDesc; - TexDesc.Name = "Texture2D_D3D11 from native d3d11 texture"; - TexDesc.Type = D3D11TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_2D_ARRAY : RESOURCE_DIM_TEX_2D; - TexDesc.Width = Uint32{D3D11TexDesc.Width}; - TexDesc.Height = Uint32{D3D11TexDesc.Height}; - TexDesc.ArraySize = Uint32{D3D11TexDesc.ArraySize}; - TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); - TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; - TexDesc.SampleCount = Uint32{ D3D11TexDesc.SampleDesc.Count }; - TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); - TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); + UINT DataSize = 0; + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, nullptr); + std::vector<char> ObjectName; + if (DataSize > 0) + { + ObjectName.resize(DataSize+1); // Null terminator is not reported in DataSize + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, ObjectName.data()); + TexDesc.Name = ObjectName.data(); + } + else + TexDesc.Name = "Texture2D_D3D11 from native d3d11 texture"; + + TexDesc.Type = D3D11TexDesc.ArraySize > 1 ? RESOURCE_DIM_TEX_2D_ARRAY : RESOURCE_DIM_TEX_2D; + TexDesc.Width = Uint32{D3D11TexDesc.Width}; + TexDesc.Height = Uint32{D3D11TexDesc.Height}; + TexDesc.ArraySize = Uint32{D3D11TexDesc.ArraySize}; + TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); + TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; + TexDesc.SampleCount = Uint32{ D3D11TexDesc.SampleDesc.Count }; + TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); + TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); TexDesc.CPUAccessFlags = D3D11CPUAccessFlagsToCPUAccessFlags(D3D11TexDesc.CPUAccessFlags); - TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); + TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); return TexDesc; } diff --git a/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp b/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp index 960720dd..bf1e7a4a 100644 --- a/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp +++ b/Graphics/GraphicsEngineD3D11/src/Texture3D_D3D11.cpp @@ -77,18 +77,29 @@ static TextureDesc TexDescFromD3D11Texture3D(ID3D11Texture3D* pd3d11Texture) pd3d11Texture->GetDesc(&D3D11TexDesc); TextureDesc TexDesc; - TexDesc.Name = "Texture3D_D3D11 from native d3d11 texture"; - TexDesc.Type = RESOURCE_DIM_TEX_3D; - TexDesc.Width = Uint32{D3D11TexDesc.Width}; - TexDesc.Height = Uint32{D3D11TexDesc.Height}; - TexDesc.Depth = Uint32{D3D11TexDesc.Depth}; - TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); - TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; - TexDesc.SampleCount = 1; - TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); - TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); + UINT DataSize = 0; + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, nullptr); + std::vector<char> ObjectName; + if (DataSize > 0) + { + ObjectName.resize(DataSize+1); // Null terminator is not reported in + pd3d11Texture->GetPrivateData(WKPDID_D3DDebugObjectName, &DataSize, ObjectName.data()); + TexDesc.Name = ObjectName.data(); + } + else + TexDesc.Name = "Texture3D_D3D11 from native d3d11 texture"; + + TexDesc.Type = RESOURCE_DIM_TEX_3D; + TexDesc.Width = Uint32{D3D11TexDesc.Width}; + TexDesc.Height = Uint32{D3D11TexDesc.Height}; + TexDesc.Depth = Uint32{D3D11TexDesc.Depth}; + TexDesc.Format = DXGI_FormatToTexFormat(D3D11TexDesc.Format); + TexDesc.MipLevels = Uint32{D3D11TexDesc.MipLevels}; + TexDesc.SampleCount = 1; + TexDesc.Usage = D3D11UsageToUsage(D3D11TexDesc.Usage); + TexDesc.BindFlags = D3D11BindFlagsToBindFlags(D3D11TexDesc.BindFlags); TexDesc.CPUAccessFlags = D3D11CPUAccessFlagsToCPUAccessFlags(D3D11TexDesc.CPUAccessFlags); - TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); + TexDesc.MiscFlags = D3D11MiscFlagsToMiscTextureFlags(D3D11TexDesc.MiscFlags); return TexDesc; } |
