dx10 창생성

반응형

1. 장치와 스왑체인 생성
 스왑체인의 속성값을 설정 하기 위해 DXGI_SWAP_CHAIN_DESC 구조체를 사용한다.

 DXGI_SWAP_CHAIN_DESC scd;
 ZeroMemory( scd, sizeof(*scd) );

 scd->BufferCount = 1;
 scd->BufferDesc.Width = width;
 scd->BufferDesc.Height = height;
 scd->BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
 scd->BufferDesc.RefreshRate.Numerator = 60;
 scd->BufferDesc.RefreshRate.Denominator = 1;
 scd->BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
 scd->OutputWindow = hWnd;
 scd->SampleDesc.Count = 1;
 scd->SampleDesc.Quality = 0;
 scd->Windowed = ((fullscreen)?FALSE:TRUE);

 장치와 스왑체인을 동시에 생성할 경우
 D3D10CreateDeviceAndSwapChain

 별도로 호출 하고자 하는 경우
 D3D10CreateDevice 로 디바이스를 생성하고
 CreateSwapChain으로 스왑체인을 생성한다.
 스왑체인은 IDXGIFactory을 사용하여 생성할 수 있다.

2. 렌더타겟뷰를 생성.
자원은 메모리 버퍼에 저장되어 있고 각 스테이지는 버퍼에 저장되어 있는
자원들을 사용하여 렌더링 한다. 각 스테이지는 메모리 자원을 뷰를 통해 접근한다.
렌더타겟 뷰는 자원을 렌더타겟을 위한 용도의 버퍼로 바꾸어준 뷰 객체이다.
ID3D10Texture2D* buffer;
 hr = (*swapChain)->GetBuffer( 0, __uuidof( ID3D10Texture2D ), (LPVOID*)&buffer );
 if (FAILED(hr)) {
  ::MessageBox(NULL, "GetBuffer() - Failed", "ERROR", MB_OK);
  return false;
 }
 hr = (*device)->CreateRenderTargetView( buffer, NULL, renderTargetView );
 buffer->Release();

(*device)->OMSetRenderTargets( 1, renderTargetView, NULL );을 사용하여
만들어진 렌더타겟뷰를 출력병합기 스테이지로 병합시킨다.

3. 뷰포트 초기화
마지막으로 뷰포트를 초기화 한다.
뷰포트는 클립공간 좌표들을 렌더타겟 공간의 좌표들로 바꾼다.
클립공간은 x,y가 -1~1, z가 0~1 사이의 공간이다.

D3D10_VIEWPORT vp;
 vp.Width = scd->BufferDesc.Width;
 vp.Height = scd->BufferDesc.Height;
 vp.MinDepth = 0.0f;
 vp.MaxDepth = 1.0f;
 vp.TopLeftX = 0;
 vp.TopLeftY = 0;
 (*device)->RSSetViewports( 1, &vp );



'Study > Directx 10' 카테고리의 다른 글

sprite 출력  (0) 2010.05.02
폰트 출력  (0) 2010.05.02
2d 점찍기  (0) 2010.05.02
dx10 사각형 그리기  (0) 2010.04.28
ID3D10InputLayout  (2) 2010.02.07
TAGS.

Comments