OK, 마침내 알아 냈습니다. 튜토리얼을 따르는 것이 XNA에서 코드를 이식하는 것보다 낫다는 것이 밝혀졌습니다. 어떻게 든이 작업을 렌더링 태그 자원을 모든 프레임의 쉐이더 리소스 뷰에 "복사"하고 싶었지만 렌더링 전에 설정되어있는 경우 모두 동일한 texture2D 리소스와 렌더 타겟에 연결되어야합니다 그 연결된 텍스쳐에 자동으로 쓸 것이고, shaderresourceview는 호출 될 때 자동으로 그것을 찾는다.
그래서 코드는, 사람이 걱정하는 경우 :
//global declarations:
ID3D11Device* g_pd3dDevice;
ID3D11DeviceContext* g_pImmediateContext;
ID3D11Texture2D* refTex;
ID3D11RenderTargetView* refRen;
ID3D11ShaderResourceView* refRes;
void SetUp()
{
D3D11_TEXTURE2D_DESC textureDesc;
ZeroMemory(&textureDesc, sizeof(textureDesc));
textureDesc.Width = SCREENWIDTH;
textureDesc.Height = SCREENHEIGHT;
textureDesc.MipLevels = 1;
textureDesc.ArraySize = 1;
textureDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
textureDesc.SampleDesc.Count = 1;
textureDesc.Usage = D3D11_USAGE_DEFAULT;
textureDesc.BindFlags = D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE;
textureDesc.CPUAccessFlags = 0;
textureDesc.MiscFlags = 0;
g_pd3dDevice->CreateTexture2D(&textureDesc, NULL, &refTex);
D3D11_RENDER_TARGET_VIEW_DESC renderTargetViewDesc;
renderTargetViewDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
renderTargetViewDesc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
renderTargetViewDesc.Texture2D.MipSlice = 0;
g_pd3dDevice->CreateRenderTargetView(refTex, &renderTargetViewDesc, &refRen);
D3D11_SHADER_RESOURCE_VIEW_DESC shaderResourceViewDesc;
shaderResourceViewDesc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT;
shaderResourceViewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
shaderResourceViewDesc.Texture2D.MostDetailedMip = 0;
shaderResourceViewDesc.Texture2D.MipLevels = 1;
g_pd3dDevice->CreateShaderResourceView(refTex, &shaderResourceViewDesc, &refRes);
}
void DrawToTexture()
{
g_pImmediateContext->OMSetRenderTargets(1, &refRen,NULL);
float ClearColor[4] = { 0.0f, 0.0f, 0.0f, 1.0f };
g_pImmediateContext->ClearRenderTargetView(refRen, ClearColor);
//then draw what you want to the target
}