DirectX 10

텍스쳐 해제

공대나온남자 2011. 6. 13. 21:23

 렌더 타겟을 텍스쳐로도 사용할 때 다음과 같은 경고가 발생한다.


D3D10: WARNING: ID3D10Device::OMSetRenderTargets: Resource being set to OM RenderTarget slot 0 is still bound on input! [ STATE_SETTING WARNING #9: DEVICE_OMSETRENDERTARGETS_HAZARD ]

D3D10: WARNING: ID3D10Device::OMSetRenderTargets: Forcing PS shader resource slot 0 to NULL. [ STATE_SETTING WARNING #7: DEVICE_PSSETSHADERRESOURCES_HAZARD ]


MSDN을 보면, (http://msdn.microsoft.com/en-us/library/bb173606(v=vs.85).aspx)

If you bind a subresource as an input and an output, this API will fill the destination shader resource slot with NULL. The debug layer (when active) will alert you if this is true.


쉐이더의 텍스쳐를 강제로 NULL로 설정해버리고 디버그 모드에서 위의 경고를 뱉어준다고 되어 있다.


이 문제를 해결하기 위해서는 텍스쳐를 사용한 후에 해제해주어야 한다.

텍스쳐를 NULL로 설정해주어야 하는데...


NULL로 설정할 때


pd3dDevice->PSSetShaderResources(0, 1, NULL);


이런 식으로 하면 제대로 동작하지 않는다.

ResourceView의 배열을 받기 때문에


ID3D10ShaderResourceView* pSRV = NULL;

pd3dDevice->PSSetShaderResources(0, 1, &pSRV);


이런 식으로 하면 된다.

'DirectX 10' 카테고리의 다른 글

그림자맵 샘플링  (0) 2011.06.18
공유 텍스쳐 설정  (0) 2011.06.16
Rendering to multi window in DX10  (0) 2011.03.13
쉐이더 파일 내에서 Render State 설정  (0) 2010.11.20
텍스쳐 포맷  (0) 2010.09.29