일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- SQL
- 스토어드 프로시저
- DP
- MYSQL
- 다익스트라
- Trie
- String
- Hash
- 이진탐색
- Two Points
- Dijkstra
- 그래프
- binary search
- two pointer
- Stored Procedure
- union find
- Brute Force
- Today
- Total
목록전체 글 (425)
codingfarm
애니메이션을 정확히 수행하려면 시간을 측정해야한다. 특히, 애니메이션의 프레임들 사이에 흐른 시간과 양을(경과시간; elpased time)을 측정할 수 있어야 한다. 1. 성능 타이머(Performance Timer) 시간 측정을 위해 Windows가 제공하는 성능 타이머(performance timer)를 사용한다. 이를 성능 카운터(poerformance counter)라고도 한다. 성능 타이머를 조회하는 Win32 함수를 사용하려면 windows.h 헤더파일을 추가해야 한다. 성능 타이머는 시간을 개수(count) 단위로 측정한다. 성능 타이머로부터 개수 단위의 현재 시간을 얻을 때에는 다음과 같이 QueryPerformanceCounter 함수를 사용한다. __int64 currTime; Que..

보통은 3차원 장면을 후면 버퍼 전체에 그린다. 그러나 원한다면 후면버퍼의 일부를 차지하는 직사각형 영역에만 그리는것도 가능하다. 장면을 그려 넣고자 하는 후면 버퍼의 부분지가각형 영역을 뷰포트(viewport)라고 부른다. 다음은 이 뷰포트를 서술하는 데 쓰이는 구조체이다. typedef struct D3D11_VIEWPORT { FLOAT TopLeftX; FLOAT TopLeftY; FLOAT Width; FLOAT Height; FLOAT MinDepth; FLOAT MaxDepth; } D3D11_VIEWPORT; 뷰포트를 수정함으로써 3차원 장면을 후면 버퍼의 한 부분직사각형에 그린 모습이다. 그리고 후면 버퍼를 응용 프로그램창의 클라이언트 영역에 제시한다. 처음 4개의 필드는 뷰포트를 표시할..
후면버퍼와 깊이$\cdot$스텐실 버퍼에 대한 뷰들을 생성했으니, 이제 이 뷰들을 파이프라인의 출력 병합기 단계에 묶어 보자. 이 과정을 거쳐야 비로소 자원들이 파이프라인의 렌더 대상과 깊이$\cdot$스텐실 버퍼로 작용하게 된다. 필요한 코드는 아래와 같다. md3dImmediateContext->OMSetRenderTargets( 1, &mRenderTargetView, mDepthStencilView); 함수에 쓰인 각 매개변수의 기능에 대해서 알아본다. 첫번째 매개변수는 묶고자 하는 렌더대상의 갯수로 여기에서는 하나만 정하지만 장면을 여러개의 렌더 대상에 동시에 렌더링 하는 경우(고급기법이다)에는 여러개의 렌더대상 뷰를 지정할 수 있다. 둘째 매개변수는 파이프라인에 묶을 렌더 대상 뷰들을 가리키는..
이제 깊이, 스텐실 버퍼를 생성해야 한다. 이전에 설명했듯이, 깊이 버퍼는 그냥 깊이정보를 담는 (그리고 스텐실을 사용하는 경우 스텐실 정보도 담는) 2차원 텍스처이다. 2차원 텍스처를 생성할 때에는 생성할 텍스처를 서술하는 D3D11_TEXTURE2D_DESC 구조체를 채우고 ID3D11Device::CreateTexture2D 메서드를 호출해야 한다. D3D11_TEXTURE2D_DESC 구조체의 정의는 아래와 같다. typedef struct D3D11_TEXTURE2D_DESC { UINT Width; UINT Height; UINT MipLevels; UINT ArraySize; DXGI_FORMAT Format; DXGI_SAMPLE_DESC SampleDesc; D3D11_USAGE Usag..