참고 영상들
게임 수학.
www.youtube.com/watch?v=nY6cZOY3VOs
www.youtube.com/watch?v=iSpxD_Qm6YM&list=PL-xqYJ8bjgMC-p94R7iXjFCs-znRg93PJ
Physically Based Rendering( PBR )에 대해서.
lifeisforu.tistory.com/category/Physically%20Based%20Rendering
Visual Studio 단축키
Ctrl + - 뒤로 탐색.
Ctrl + Shifft + - 앞으로 탐색.
F12 정의로 이동
F12로 쭉쭉 들어가다가 나오고 싶을 때, Ctrl + - 로 되돌아오면 됨.
컴퓨터 메모리(RAM, Random Access Memory) 공간의 종류
우리가 구분한 논리적인 구분이다. 메모리는 이런 거 모른다.
스택(Stack) - LIFO
용량 작을 때 / 메모리 해제 자동 / 빠름 / 변수 잡을 때
힙(Heap)
용량 클 때 / 메모리 해제 수동 / 느림 / 동적할당 할 때
예를 들면,
포인터 변수를 잡고, (포인터 변수는 스택에 생성.)
동적 할당했다. (힙에 생성.)
(스택에 존재하는 포인터 변수)는 (힙에 존재하는 데이터의 주소)를 가리킴.
포인터 변수를 잘 못 관리하면, 스택에서는 해제가 되겠지만 힙에 데이터가 남아있을 수 있다. (이게 메모리 릭.)
잘 관리해주면 문제가 없겠지만, 프로그램을 실행할 때마다 많은 양의 메모리가 릭이 나면 문제가 된다.
그래서 MS에서 제공하는 스마트 포인터를 사용했다. 자동으로 관리해준다.
원래 이렇게 썼다면,
// 포인터 선언.
ID3D11Device* device;
// 포인터 사용.
device // 포인터
&device // 포인터의 주소.
// 접근할 때는 똑같음.
*device
요렇게 쓰면 된다.
#include <wrl.h>
// 원래는 선언할 때, Microsoft::WRL::ComPtr<ID3D11Device> device 해야하는데, 너무 기니까.
using Microsoft::WRL::ComPtr;
// 스마트 포인터 선언.
ComPtr<ID3D11Device> device;
// 스마트 포인터 사용.
device.Get() // 포인터.
device.GetAddressOf() // 포인터의 주소.
// 접근할 때는 똑같음.
*device
함수 파라미터로 넘길 때는 스마트 포인터말고, 일반 포인터를 쓰면 된다.
스마트 포인터는 데이터를 쉽게 관리하기 위해서이지, 주소값을 원하는 파라미터와는 상관이 없기 때문이다.
#include <wrl.h>
void test(int* ptr); // 여기에는 일반 포인터를 쓰면 됨.
int main()
{
// 스마트 포인터 사용.
Microsoft::WRL::ComPtr<int> ptr; // 스택에 생성.
ptr = new int(5); // 힙에 생성.
// 주소를 가진 ptr이 복사되서 스택에 생성됨. 함수가 끝나면 복사된 것이 사라짐.
// 그러므로 함수 파라미터에는 스마트 포인터를 쓸 이유가 없음. 어차피 주소만 원함.
test(ptr.Get());
}
작성한 DirectX 코드
- BasicShader 클래스 생성.
- 스마트 포인터로 바꾸기.
- Vector 클래스 추가. (제작 중)
github.com/mingyu243/STL_GraphicsEngine2/tree/92e5ba62ee3b115bb1b83d04f0680c1e472a22c5
변한 건 없지만, 사진이 없으니 어색해서 어제 것으로 적용했다.
'기타 > DirectX' 카테고리의 다른 글
[DirectX11] 8일차 (DirectXTex 라이브러리 추가 / 텍스쳐 매핑하기) (0) | 2021.02.24 |
---|---|
[DirectX11] 7일차 (Transform 클래스 구현하기 / Quad Triangle 그리기) (0) | 2021.02.23 |
[DirectX11] 5일차 (삼각형 그리기 / 클래스 캡슐화) (0) | 2021.02.19 |
[DirectX11] 4일차 (배경색 칠하기) (0) | 2021.02.18 |
[DirectX11] 3일차 (DirectX 초기화하기) (0) | 2021.02.17 |