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.