일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- InputManager
- 직교 투영
- 게임 프로그래밍
- TCP/IP
- 게임 디자인 패턴
- gitscm
- Dynamic Indexing
- 디퍼드 렌더링
- effective C++
- 장치 초기화
- Direct3D12
- direct3d
- 조명 처리
- DirectX12
- gitlab
- 게임 클래스
- Frustum Culling
- C++
- 동적 색인화
- 노멀 맵핑
- Deferred Rendering
- DirectX
- Render Target
- 입방체 매핑
- 네트워크 게임 프로그래밍
- 네트워크
- FrameResource
- light
- 절두체 컬링
- 큐브 매핑
- Today
- Total
목록DirectX12 (24)
코승호딩의 메모장
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Xr7dC/btsxrlK6fNl/Rl4wGLbutWxpXNT6KPfnjk/img.png)
이번 포스팅에서는 [DirectX12 입문]에서 배운 내용과 인터넷 강의와 서적등을 참고한 내용을 바탕으로 간단한 3D게임을 만들어보려고 합니다. 함수나 변수들에 대한 자세한 내용은 [DirectX12 입문] 포스팅을 참고하시면 됩니다. [Direct3D 개요와 초기화] · DirectX 12를 이용한 3D 게임 프로그래밍 입문 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 이번 포스팅(3D 게임 프로그래밍 입문)에서는 위 책과 한국공학대학교 게임 suengho2257.tistory.com 첫 번째 목표는 Direct3D를 초기화하는데 필요한 Com 객체들을 클래스화 하고 클라이언트 프로젝트와 정적 엔진 프로젝트를 나눠 엔진에서 클래스화된 Com 객체들..
01 Frame Resource Frame Resource 프레임 자원이란 프레임마다 명령 대기열을 완전히 비우지 않고 CPU와 GPU의 활용도를 높이는 최적화 수단이다. CPU와 GPU는 병렬로 작동하기 때문에 동기화가 필요하다고 알고 있을 것이다. 이러한 이유로 매 프레임 끝에서 Fence를 통해 동기화를 해야 하고 결국 CPU는 GPU가 명령들을 모두 처리할 때까지 기다려야 한다. 또한 GPU도 CPU가 명령 목록을 구축하기 전까지 기다려야 한다. 이 동기화를 최적화하기 위한 수단이 바로 프레임 자원이다. 프레임 자원은 매 프레임 CPU가 수정해야 할 자원들을 순환 배열로 관리하는 방법이다. 일반적으로 이 프레임 자원은 세 개를 담아 사용하며 프레임 n에서 CPU가 프레임 자원 배열을 훑으며 다음 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rzVKQ/btsuG81zpjI/zbTglKgkh9RHcybgC2Y2pk/img.png)
01 Vertex와 InputLayout Direct3D에서 정점은 공간 정보 이외의 추가 정보를 부여할 수 있다. 원하는 정보를 가진 정점을 만들기 위해서는 자료를 담을 구조체를 정의해야 한다. 정점 구조체를 정의 하였다면 정점의 각 성분들이 무엇을 해야 하는지 Direct3D에 알려주어야 하는데 이 수단이 바로 InputLayout이다. mInputLayout = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D12_INPUT_CLASSIFICATION_PER_VERT..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cV5JNw/btstY5lgyrg/qkR4pJy8RG7L9v8kfBkcP1/img.webp)
컴퓨터의 성능은 하드웨어마다 다르기 때문에 게임의 물체들을 경과 시간에 기초하여 적절히 갱신하기 위해서는 애니메이션의 프레임들을 렌더링할 때는 프레임들 사이에 시간이 얼마나 흘렀는지 알아야 한다. 이를 위해 Windows.h가 제공하는 성능 타이머(성능 카운터)를 사용한다. 성능 타이머의 시간 측정 단위는 '지나간 클럭 틱들의 개수' 이다. QueryPerformanceCounter 함수 : 고성능 타이머 값(1us 이하)을 반환하는 함수로 성능 타이머로부터 틱 수 단위의 현재 시간을 얻을 때 사용된다. QueryPerformanceFrequency 함수 : 현재 성능 카운터의 빈도 즉, 성능 타이머의 주파수(초당 틱 수)를 얻을 때 사용된다. 시간 측정을 위해 필요한 함수는 이 두 개뿐이다. Query..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQ583x/btstCEVLQmX/I7EH0XOjP5mI9sWsN4UpS1/img.png)
이번 포스팅은 DirectX12에서 전체 화면 모드로의 전환을 구현하는 방법을 기술합니다. 책의 내용에 전체 화면 관련 내용이 자세하게 나와 있지 않아 따로 내용을 추가적으로 기술하였습니다. 내용 중에 혹시라도 틀린 부분이나 추가해야할 부분이 있다면 피드백 해주시면 정말 감사드리겠습니다. 우선 전체 화면 모드는 시각적인 몰입도 뿐만 아니라 게임의 성능에도 영향을 끼친다. 전체 화면 모드에서는 DXGI는 플립(Flip)을 수행할 수 있다. 앞 포스팅에서 말했듯이 플립은 후면 버퍼와 전면 버퍼의 포인터만 하드웨어적으로 변경하기 때문에 후면 버퍼를 전면 버퍼에 모두 복사하는 블리트보다 성능이 좋다. 그러나 주의할 점은 DXGI가 플립을 수행하기 위해서는 후면 버퍼와 전면 버퍼의 크기와 형식이 일치해야 한다는 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8XeHs/btstCE19JWW/1tzzIoI0Vo4zg6fUtLwJxk/tfile.bmp)
· DirectX 12를 이용한 3D 게임 프로그래밍 입문 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 이번 포스팅(3D 게임 프로그래밍 입문)에서는 위 책과 한국공학대학교 게임공학과 이용희 교수님 수업 3D 게임 프로그래밍의 강의자료 및 수업내용을 기반으로 DirectX12를 이용한 게임 프로그래밍에 대해 기술하며 예제 및 연습 문제를 푸는 방식으로 진행하도록 하겠습니다. 또한 구조체나 함수의 매개변수와 자세한 정보는 MSDN의 링크를 걸었으니 참고하시면 됩니다. 이번 포스팅은 [DirectX12 입문]에서 공부한 내용을 기반으로 [DirectX12 응용] 포스팅에서 다양한 기법을 활용하여 게임을 제작하도록 하겠습니다. 01 Direct3D 12의 ..