我想从纹理创建一个渲染目标视图,用于多目标渲染。我目前能够为后台缓冲区创建一个渲染目标视图——所有这些都很好。此外,我能够创建纹理。但是,当我尝试从中构建视图时,出现错误。
首先,这是代码:
D3D11_TEXTURE2D_DESC textureDesc;
ZeroMemory(&textureDesc, sizeof(textureDesc));
textureDesc.ArraySize = 1;
textureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
textureDesc.CPUAccessFlags = 0;
textureDesc.Format = DXGI_FORMAT_R32_FLOAT;
textureDesc.Height = m_renderTargetSize.Height;
textureDesc.Width = m_renderTargetSize.Width;
textureDesc.MipLevels = 1;
textureDesc.MiscFlags = 0;
textureDesc.SampleDesc.Count = 1;
textureDesc.SampleDesc.Quality = 0;
textureDesc.Usage = D3D11_USAGE_DEFAULT;
ComPtr<ID3D11Texture2D> texture;
DX::ThrowIfFailed(
m_d3dDevice->CreateTexture2D(
&textureDesc,
nullptr,
&texture
)
);
D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDescription;
ZeroMemory(&renderTargetViewDescription, sizeof(renderTargetViewDescription));
renderTargetViewDescription.Format = textureDesc.Format;
DX::ThrowIfFailed(
m_d3dDevice->CreateRenderTargetView(
texture,
&renderTargetViewDescription,
&m_renderTargetView[1]
)
);
我在调用以下行时从编译器收到以下错误CreateRenderTargetView
:
错误:不存在从“Microsoft::WRL::ComPtr”到“ID3D11Resource *”的合适转换函数。
根据 MSDN,ID3D11Texture2D 继承自 ID3D11Resource。我必须先以某种方式向上吗?
我正在使用 DirectX 11,并使用 vc110 进行编译。