본문 바로가기

DirectX( 다이렉트 X)/D3D11 제작일지

오브젝트별 트리형식으로 출력 (2020 01 21)

 

Main 파일
APP  :: 매프레임 루프해 명령큐에 있는 메세지를 확인하고 처리 , +오브젝트 생성 (PeekMessage)
Camera :: 카메라 행렬과 프로젝션을 이용해 카메라 위치를 조절하는 클래스
Texture :: 텍스쳐 리소스와 리소스 뷰를 생성해서 바인딩하는 클래스
GDIManager :: 윈도우즈의 핵심 모듈 중의 하나로 출력과 관련된 기능을 담당하는 클래스
Keyboard :: 어떤 키보드의 키를 입력 받았는지 확인
Mouse :: 마우스 키 입력을 받았는지 확인
Timer :: 프레임 반복을 위한 타이머 메소드 (C++11에서 지원하는 시간라이브러리 chorno 사용)
Window :: 윈도우 객체 생성하고 키보드 마우스 객체도 생성, 메세지 프로시저
WinMain :: 메인 함수 
InfoManager :: 예외처리시 오류정보들 저장한뒤 띄우기,
GrahpicsClass :: 디바이스 초기화, 다비이스 가져오기
PointLight :: 포인트 라이트 생성하고 바인딩하는 클래스
Surface :: 텍스쳐를 입히는 클래스
MeshObject :: 모델링 로드용 및 초기 설정 클래스 + 모델 루트출력
Vertex :: 버텍스 정보 설정, 템플릿 클래스

 

 

매크로
CustomException :: 예외처리용, 예외발생시 메세지박스 띄움
CustomDefine :: 매크로 정의 및 상수
WindowErrorMacro :: 런타임용 예외처리 검사
NoExcept :: 예외발생 무시용 매크로

 

 

HLSL 쉐이더 코드
PhongPS,VS.hlsl:: 색에 따라 라이트를 받는 쉐이더 (픽셀, 버텍스)
SolidPS,VS.hlsl:: 지정한 단일색으로 칠하는 쉐이더 (픽셀, 버텍스)

 

 

파이프라인
PipeLineHeaders :: 파이프라인 폴더 헤더파일 모음
PipeLine ::바인딩 함수가 필요한 클래스의 부모클래스 (콘텍스트 바인딩 함수 정의)
VertexBuffer :: 정점 버퍼 생성 및 바인딩
InputAssembler :: InputLayout 생성한 후  콘텍스트에 바인딩
(정점 버퍼로 부터 가져온 데이터로 프리미티브 제작, 시스템 생성값을 버텍스 쉐이더에 보내 출력)
VertexShader :: 버텍스 쉐이더 생성 및 바인딩 
PixelShader ::픽셀 쉐이더 생성 및 바인딩 (색담당)
IndexBuffer :: 인덱스 버퍼 생성 및 바인딩
Topology :: 프리미티브 설정 타입을 매개변수로 받아 생성 바인딩
ConstantBuffers :: 상수버퍼 생성 (자식클래스 VertexConstantBuffer,PixelConstantBuffer)
TransformConstantBuffer :: 크기(S),회전(R),위치(T)를 위한 상수 버퍼
Sampler :: 샘플러 선언 (필터) 및 바인딩하는 클래스

 

 

그리기
Drawing :: 오브젝트들을 벡터 스마트포인터에 저장하고 APP에서 출력
DrawBase :: 모든 도형의 부모클래스 템플릿을 사용해 다형성 지향
Cone :: 원뿔을 만드는 클래스
Cube :: TriangleList를 사용해 큐브 오브젝트를 만드는 클래스
Plane :: 2D 평면용 사각형을 만드는 클래스
Prism :: 삼각뿔을 만드는 클래스
Sphere :: 구를 만드는 클래스
Modle :: 가져온 모델링 그리는 클래스

 

 

다음할일:: 프레임워크 정리, 오브젝트 텍스쳐 매핑

 

후기:: 재귀함수로 루트노드부터 자식노드까지 출력하는 방식을 사용해 구현했다.unique_ptr 스마트포인터들을 sharded_ptr로 묶을 수 있을것 같다.

 

assmip(모델링 로드 라이브러리) https://github.com/assimp/assimp

ImGui(UI 라이브러리) https://github.com/ocornut/imgui