일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Deferred Rendering
- 게임 클래스
- Render Target
- 절두체 컬링
- Frustum Culling
- Direct3D12
- gitlab
- effective C++
- DirectX
- 입방체 매핑
- 장치 초기화
- 게임 프로그래밍
- gitscm
- 디퍼드 렌더링
- Dynamic Indexing
- C++
- 큐브 매핑
- direct3d
- 조명 처리
- 네트워크
- DirectX12
- TCP/IP
- light
- 직교 투영
- FrameResource
- 게임 디자인 패턴
- 네트워크 게임 프로그래밍
- 동적 색인화
- Today
- Total
목록전체 글 (44)
코승호딩의 메모장
13 자원 관리에는 객체가 그만! class Investment { }; Investment* CreateInvestment(); 다음과 같이 투자를 모델링해 주는 클래스 라이브러리를 가지고 어떤 작업을 한다고 가정하자. Investment라는 최상위 클래스가 있고, 이것을 기본으로 하여 구체적인 형태의 투자 클래스가 파생되어 있다. 그리고 파생된 클래스의 객체를 사용자가 얻어내는 용도인 팩토리 함수가 있다. 만약 CreateInvestment를 통해 얻응 객체를 사용할 일이 없을 때, 그 객체를 삭제해야 하는 쪽은 이 함수의 호출자이다. void f() { Investment* pInv = CreateInvestment(); // ... delete pInv; } 멀쩡해 보이지만, 객체의 삭제가 실패할..
05 C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 C++의 어떤 멤버 함수는 클래스 안에 직접 선언하지 않으면 컴파일러가 저절로 선언해 주도록 되어 있다. 복사 생성자, 복사 대입 연산자, 생성자, 소멸자 등이 그렇다. template class NamedObject { public: NamedObject(const char* name, const T& value); NamedObject(const string& name, const T& value); private: string nameValue; T objectValue; }; 위 코드에서 NamedObject 템플릿 안에는 생성자가 선언되어 있으므로 컴파일러는 기본 생성자를 만들어내지 않는다. 반면, 복사 생성자, 복사 대입 연산..
이번 포스팅에서는 스콧 마이어스의 Effective C++ 책을 읽고 공부한 내용을 정리하고자 합니다. 저자에 따르면 이 책은 C++ 행동강령이나 유일한 참된 덕목이 아닌 프로그램을 지금보다 더 낫게 만들기 위한 지침을 제공하는 것이라고 합니다. 따라서 이 책에서 습득할 수 있는 내용은 프로그램의 근본원리를 이해하는 것이고 자신에게 어떤 용도에 어떻게 써먹을 수 있는지에 초점을 두어야 합니다. Effective C++ : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 01 C++를 언어들의 연합체로 바라보는 안목은 필수 오늘날의 C++은 다중패러다임 프로그래밍 언어라고 불린다. 절차적 프로그래밍을 기본으로 객체 지향, 함수식, 일반화, 메타프로그래밍 개념까..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/V0LGj/btszlkriCnM/LgmKO18v349YEKnK3ZDnOk/img.gif)
이번 글에서는 이 전에 렌더 타겟을 통해서 출력한 값들을 기반으로 모두 합쳐서 지연 렌더링 Deferred Rendering을 구현해 보도록 한다. 렌더 타겟은 총 5가지로 포지션, 노말, 텍스처, 프레넬, 매끄러움으로 SV_Target0~4까지 출력하였다. 그리고 이들을 합치는 것은 그렇게 어려운 작업은 아니다. 그러나 프레넬과 매끄러움은 굳이 UI로 표현해 줄 필요성을 못 느꼈기 때문에 이 자리에 대신 조명 처리를 통해 얻은 diffuse와 specular 텍스처를 추가하도록 할 것이다. 오류 수정 이 전에 구현하였을 때는 데스크탑으로 실행하여서 별 문제가 뜨지 않았다. 그러나 같은 프로젝트를 노트북으로 실행했을 때는 Ref Count 문제와 Back Buffer Index 문제가 떠서 실행조차 되지..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uYmy9/btsy3g9opPx/Ssdg9fkWzKHOrFIjhTRPcK/img.gif)
이번 글에서는 렌더 타겟을 구현하기로 한다. 기존에 Forward 렌더링 방식은 제한되는 것과 성능이 좋지 않기 때문에 Deferred 렌더링 방식으로 변경해야 한다. 과거에는 대부분 Forward 방식을 사용했지만 현대 게임들은 대부분 Deferred 방식을 사용한다. 지연 렌더링을 의미하는 Deferred 렌더링은 위키백과에 자세히 설명이 되어 있다. 이번 글에서는 Deferred을 구현하는 것이 아니라 Deferred 렌더링을 하기 위해서 여러 개의 렌더 타겟에 쉐이더 프로그램으로 계산한 결과를 출력하는 것까지가 목표이다. Deferred shading - Wikipedia From Wikipedia, the free encyclopedia Screen-space shading technique D..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FTSim/btsyUgouUnA/bm8qDAGA4R4ppUczIkQdkk/img.png)
이번 글에서는 직교 투영을 이용하여 UI와 같은 오브젝트를 구현하려고 한다. 직교 투영은 원근 투영과는 달리 z 값에 다라 크기가 줄어들거나 늘어나는 것이 아니며 간단하게 DirectX의 XMMatrixOrthographicLH 함수를 이용해서 투영 변환 행렬을 생성하면 된다. 주의할 점은 이 전까지는 카메라로 생성되는 뷰 행렬과 투영 행렬은 모두 패스 당 상수 버퍼 즉 패스 당 한 번만 업데이트 되도록 하였다. 그러나 이렇게만 구현한다면 여러 개의 게임 오브젝트 중에 UI만 찍을 카메라로 직교 투영 행렬을 상수 버퍼에 넘겨주더라도 그 후에 다시 기본 오브젝트들을 찍을 메인 카메라의 원근 투영 행렬 계산을 통해 원근 투영 행렬로 덮어 써 질 것이다. 따라서 다른 방법을 생각해봐야 한다. 가장 쉽게 생각할..