DirectX 10
Render Target, Depth/Stencil Buffer Clear
공대나온남자
2011. 7. 23. 19:10
DX9 에서는 IDirect3DDevice9::Clear() 함수 호출 한번으로 현재 설정된 모든 렌더타겟, 깊이스텐실 버퍼를 모두 clear 할 수 있다.
하지만 DX10 에서는 명시적으로 개별 버퍼에 대해 Clear를 수행해주어야 한다.
void ClearRenderTargetView(
ID3D10RenderTargetView *pRenderTargetView,
const FLOAT ColorRGBA[4]
);
void ClearDepthStencilView( ID3D10DepthStencilView *pDepthStencilView, UINT ClearFlags, FLOAT Depth, UINT8 Stencil );또 다른 점은, IDirect3DDevice::Clear() 함수를 보면,HRESULT Clear( DWORD Count, CONST D3DRECT * pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil );
DWORD(D3DCOLOR==DWORD) 값을 Clear 색으로 사용하지만 DX10 에서는 float 값을 사용한다.즉, 1보다 큰 값으로 Clear 할 수 있다. 물론 테스트해보진 않았다.또 IDirect3DDevice::Clear() 에서는 Clear할 영역을 지정할 수 있지만 DX10 함수에는 없다.근데 이 기능은 한번도 써본적이 없다. 굳이 필요하면 스크린 사각형 그려서 하는 수 밖에 없는 듯 하다.