일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 네트워크 게임 프로그래밍
- Render Target
- DirectX12
- 네트워크
- TCP/IP
- Direct3D12
- 동적 색인화
- 입방체 매핑
- 조명 처리
- Deferred Rendering
- effective C++
- light
- gitscm
- Frustum Culling
- C++
- 큐브 매핑
- 노멀 맵핑
- direct3d
- 절두체 컬링
- 게임 프로그래밍
- FrameResource
- gitlab
- 디퍼드 렌더링
- 직교 투영
- 게임 디자인 패턴
- Dynamic Indexing
- 게임 클래스
- InputManager
- DirectX
- 장치 초기화
- Today
- Total
목록전체 글 (44)
코승호딩의 메모장
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEW0La/btsvmzloSRQ/AeKO9ywY1bvrJKbvnxiqj0/img.png)
이번 포스팅에서는 지난 시간 만든 SampleProject를 GitLab을 이용해서 연동을 할 것이다. 일단 이미 만들어진 ID를 기반으로 GitLab에 접속하여 Project를 생성(GitLab Cloud Storage에 생성)하고 생성된 Project를 Clone을 통해 Local PC로 옮기고 Local Storage에 올린다. 1. Craete Project 우선 GitLab의 페이지에서 Create a Project를 누른다. Create a Project를 누르면 다음과 같은 창이 뜨는데 왠만하면 Create blank Project를 선택하도록 한다. Project name을 채워서 Project를 생성한다. 2. Project members 다음 자신의 Project를 관리 및 감독할 수 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cSGL3u/btsvk0pbMPd/o3kOMNezkntE4UMSeQrPTK/img.png)
이번 포스팅에서는 코딩 테스트를 위한 알고리즘, 자료구조들을 다루려고 합니다. 기본 내용들은 코드없는 프로그래밍님의 영상을 기반으로 정리하려고 합니다. 컴퓨터 그래픽스 지식은 어느 정도 있지만 알고리즘 또는 자료구조에 취약한 부분이 있어 보강하고자 공부, 정리 목적으로 글을 올리려고 합니다. LeetCode의 대표적인 문제들을 기반으로 설명하며 LeetCode의 테스트 케이스를 통과하기 위한 목적이 아닌 문제를 풀기 위해 필요한 접근 방법을 기술합니다. array 배열이란 데이터들이 연속적으로 이어져 random access를 지원하는 자료구조이다. random access란 원소에 색인을 통해 바로 접근하는 것을 가능하게 한다. array의 기본이 되는 문제는 대부분 정렬과 관련이 있다. 이 정렬 알고..
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/bv4PKc/btst7wwVaNe/RrfHsi6UhnH6wHvPZi5Sf1/img.webp)
이번 포스팅에서는 NVIDIA에서 제공하는 물리 엔진 PhysX(피직스)를 다뤄 볼까 합니다. PhysX에 대한 설명이 인터넷에 많이 있지 않아 기술하는 대부분의 내용은 NVIDIA에서 제공하는 PhysX documentation을 기반으로 기술하려 합니다. 또한 참고 자료가 많지 않아 PhysX에 대한 내용을 깊이 파고 들기 보다는 게임에 추가할 만한 요소들만 간단히 사용하는 방식으로 진행하도록 하겠습니다. 필자가 학부생이라는 점 감안하여 추가할 내용 및 수정할 내용 피드백 주시면 정말 감사드리겠습니다. 또한 PhysX의 가장 최신 버전 5.2.1을 사용하겠습니다. 대부분의 API가 이전 버전과 다르지 않기 때문에 다른 버전을 사용하더라도 문제는 없을 것입니다. 결과적으로 DirectX12에 PhysX..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cV5JNw/btstY5lgyrg/qkR4pJy8RG7L9v8kfBkcP1/img.webp)
컴퓨터의 성능은 하드웨어마다 다르기 때문에 게임의 물체들을 경과 시간에 기초하여 적절히 갱신하기 위해서는 애니메이션의 프레임들을 렌더링할 때는 프레임들 사이에 시간이 얼마나 흘렀는지 알아야 한다. 이를 위해 Windows.h가 제공하는 성능 타이머(성능 카운터)를 사용한다. 성능 타이머의 시간 측정 단위는 '지나간 클럭 틱들의 개수' 이다. QueryPerformanceCounter 함수 : 고성능 타이머 값(1us 이하)을 반환하는 함수로 성능 타이머로부터 틱 수 단위의 현재 시간을 얻을 때 사용된다. QueryPerformanceFrequency 함수 : 현재 성능 카운터의 빈도 즉, 성능 타이머의 주파수(초당 틱 수)를 얻을 때 사용된다. 시간 측정을 위해 필요한 함수는 이 두 개뿐이다. Query..