#pragma once -> 중복해서 여러번 복사하는걸 방지해주는 구문
pch -> PreCompileHeader
typedef -> 이름 재정의
batch file -> 엔진 빌드할 때마다 계속 변경된 코드를 이동시켜야하는데
이걸 편하게 하기 위해서
cd(current directory) $(SolutionDir) -> 현재 디렉터리를 솔루션 디렉터리로 가라
call(실행시켜라) EngineCopy.bat -> 배치파일을 실행시켜라
xcopy /s /y /exclude:exclude_list.txt ".\
"" 안에 있는 주소에 복사해라~
level -> scene 을 의미
entity는 최상위클래스여서 다른것들이 대부분 상속받는다
랜더링하려면 그래픽카드를 제어할 수 있어야한다.
랜더링하는 방식을 gpu를 통해 랜더링 하는 방식으로 바꾼다.
엔진클래스가 최고 관리자 클래스이다.
디바이스클래스는 직접적으로 gpu 관련된 조작하는 매니저 클래스이다.
뎁스스텐실과 랜더타겟은 1:1로 픽셀수가 일치해야한다.
그래야 깊이정보도 그대로 저장될 수 있다.
비트맵은 ram(시스템메모리)에 있었기 때문에 윈도우도 그려질 비트맵이 ram에 있다.
더블버퍼링 dc가 가리키고 있는 비트맵끼리 복사하는 방식
GPU로 랜더링 한다~
gpu에 있는 메모리에 렌더타겟텍스쳐가 그려진다.
프론트버퍼로 지정된걸 윈도우로 보내서 보여지고 있다.
백버퍼로 지정된 곳에 그림을 그리고 완성되면 스왚체인에게 두 버퍼를 교체하라고 하면(present)
백버퍼가 프론트가 되고 프론트가 백버퍼가 된다.
그럼 이제 윈도우로 보내지는건 새롭게 프론트가 된 프론트버퍼이다.
*백버퍼랑 프론트버퍼를 관리하는게 스왚체인.
완성된 그림은 항상 풀스크린으로 들어가는게 아니라 위치를 지정해서(뷰포트) 그릴 수 있다.
하지만 게임은 대부분 뷰포트를 사용하지 않고 풀스크린으로 한다.