2013-03-09 1 views
1

여러 타겟 렌더링에서 사용하기 위해 텍스처에서 렌더 타겟 뷰를 만들고 싶습니다. 나는 현재 백 버퍼에 대한 렌더 타겟 뷰를 생성 할 수있다. 모든 것이 잘 동작한다. 또한 텍스쳐를 만들 수 있습니다. 그러나 뷰를 빌드하려고하면 오류가 발생합니다.Direct3D : 텍스처에서 렌더 타겟 뷰 만들기

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에 :

Error: no suitable conversion function from "Microsoft::WRL::ComPtr" to "ID3D11Resource *" exists.

According to MSDN는 ID3D11Texture2D이 ID3D11Resource에서 상속

첫째, 여기에 코드입니다. 어쨌든 먼저 상영해야합니까?

저는 DirectX 11에서 작업 중이며 vc110으로 컴파일 중입니다.

답변

2

당신이 가져 오기 방법을 사용할 필요가 있으므로 WRL의 ComPtr은 (ATL의 CComPtr 달리) T의 *에 암시 적 변환을 지원하지 않는 것 같습니다 :

DX::ThrowIfFailed(
    m_d3dDevice->CreateRenderTargetView(
     texture.Get(), 
     &renderTargetViewDescription, 
     &m_renderTargetView[1] 
     ) 
    ); 
관련 문제