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 함수에는 없다.
근데 이 기능은 한번도 써본적이 없다. 굳이 필요하면 스크린 사각형 그려서 하는 수 밖에 없는 듯 하다.

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

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