일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DirectX12
- 컨디션 변수
- 그리디 알고리즘
- 병행성 관련 오류
- DirectX 12
- 운영체제
- OS
- 그리디알고리즘
- 타입 객체
- 파일시스템 구현
- directx
- 다이나믹프로그래밍
- I/O장치
- 디자인패턴
- 병행성
- 쓰레드
- 다이나믹 프로그래밍
- 백준
- Direct12
- 자료구조
- 스케줄링
- 알고리즘
- 멀티프로세서
- 영속성
- codility
- 멀티쓰레드
- 프로그래머스
- 렌더링 파이프라인
- 동적계획법
- 락
- Today
- Total
목록DirectX12 (5)
기록공간

테셀레이션 단계들 테셀레이션은 주어진 메시의 삼각형들을 더 잘게 쪼개서 새로운 삼각형들을 만드는 과정을 말한다. 새 삼각형들을 새로운 위치로 이동함으로써 원래 메시에 없는 세부적인 특징을 만들어 낼 수 있다. 테셀레이션은 여러 장점이 있다. 1. 카메라에 가까운 삼각형들에는 테셀레이션을 적용해서 세부도를 높이고, 먼 삼각형들에는 테셀레이션을 적용하지 않는 방식의 세부 수준(Level-Of-Detail, LOD)을 구현할 수 있다. 이렇게 하면 관찰자가 실제로 볼 수 있는 부분에만 많은 삼각형을 사용하게 되므로 효율적이다. 2. 적은 수의 삼각형들로 이루어진 메시를 메모리에 담아두고 즉석으로 삼각형을 추가하여 메모리를 절약할 수 있다. 3. 애니메이션이나 물리 처리 같은 연산들을 단순한 저 다각형 메시에 ..

우리가 사용하는 컴퓨터의 모니터는 평면이다. 홀로그램이 아닌 이상은 직접 3차원의 세계를 모니터에 그대로 구현할수 있는 방법은 없다. 카메라에 비친 3차원 장면을 2차원 이미지로 생성하는 데 필요한 일련의 단계들을 렌더링 파이프라인(rendering-pipeline)이라고 부른다. 위 그림에서 왼쪽 이미지는 3차원 세계에 배치된 물체들과 그것을 바라보는 카메라를 옆에서 본 모습이고, 중간 이미지는 위쪽에서 바라본 모습이다. 그리고 오른쪽 이미지는 카메라 시점에서 바라본 3차원 세계를 2차원으로 만들어낸 모습이다. 3차원의 환상 3차원 그래픽을 살펴보기 전에 간단하지만 중요한 질문 하나에 답할 필요가 있다. 바로, "3차원 세계의 깊이와 부피를 어떻게 평평한 2차원 모니터 화면에 나타낼 것인가?"라는 질문..
애니메이션을 정확하게 수행하려면 시간을 측정해야 한다. 특히, 프레임 간 경과 시간(Elapsed time), 다시 말해 애니메이션의 인접한 두 프레임 사이에 흐른 시간의 양을 측정할 수 있어야 한다. 프레임률이 높은 경우 프레임 간 경과 시간이 상당히 짧으므로, 정밀도가 높은 타이머를 사용할 필요가 있다. 성능 타이머 정밀한 시간 측정을 위해, Windows가 제공하는 성능 타이머(Perfomance timer)를 사용한다. 이를 성능 카운터(Performance counter) 라고도 부른다. 성능 타이머를 조회하는 메서드를 사용하려면 반드시 Windows.h를 포함시켜야 한다. 성능 타이머의 시간 측정 단위는 '지나간 클럭 틱들의 개수(count)' 이다. 성능 타이머로부터 틱 수 단위의 현재 시간..

본격적으로 Direct3D를 초기화하는 방법을 살펴보자. 꽤 길기 때문에 2파트로 나누어 작성하였다. 또한 앞서 살펴봤던 기본지식들을 모두 알고 있다는 가정하에 진행하려고 한다. 초기화 과정은 다음과 같은 단계들로 구성된다. D3D12CreateDevice 함수를 이용해서 ID3D12Device를 생성한다. ID3D12Fence 객체를 생성하고 서술자들의 크기를 얻는다. 4X MSAA(다중 표본화) 품질 수준 지원 여부를 점검한다. 명령 큐와 명령 리스트 할당자, 그리고 주 명령 리스트를 생성한다. 스왑 체인을 서술하고 생성한다. 응용 프로그램에 필요한 서술자 힙들을 생성한다. 후면 버퍼의 크기를 설정하고, 후면 버퍼에 대한 렌더 타깃 뷰(RTV)를 생성한다. 깊이 스텐실 버퍼를 생성하고, 그와 연관된 ..
Direct3D 12는 다중 스레드를 효율적으로 활용할 수 있도록 설계되었다. 명령 목록의 설계는 Direct3D가 다중 스레드 적용의 장점을 취하는 한 방법이다. 물체가 많은 큰 장면을 다룰 때, 장면 전체를 하나의 명령 목록으로 그리려 한다면 명령 목록을 구축하는 데 시간(CPU 시간)이 오래 걸린다. 이에 대한 해결책은 여러 개의 명령 목록을 병렬로 구축하는 것이다. 예를 들어 스레드 네 개를 띄워서 각자 하나의 명령 목록을 구축하게 하면, 전체적인 시간이 기존의 25%로 줄어든다. 다음은 명령 목록 구축에 다중 스레드를 적용할 때 주의해야 할 점 몇 가지이다. 명령 목록은 자유 스레드(Free-thread) 모형을 따르지 않는다. 즉, 보통의 경우 여러 스레드가 같은 명령 목록을 공유하지 않으며,..