그전에 렌더링 과정을 좀 개선해야할 필요성을 느꼈다. 나도 Material 쓰고 싶다고! 먼저 Renderer에서 필요한 리소스를 모두 들고 있는게 마음에 안 들었다. 다른 곳에서 해당 리소스에 접근하려면 무조건 Renderer에게 말을 걸어야 했기 때문이다. 그러니까 아예 파일을 관리하는 file manager를 제작하기로 했다. Shader live compile과 Shader 초기화 방법 : https://stackoverflow.com/questions/50155656/creating-dx11-shaders-from-string 일단 파일들을 탐색하는 방법은 io.h 헤더를 포함시키고 다음과 같이 파일을 찾아낼 수 있다. void FileManager::Search(std::string path)..
진행과정 기록

assimp dll 문제도 해결했고, 다시 Modeling 임포트를 진행해보자. 솔직히 어제 쓰는 법은 대충 다 알았기 떄문에 오늘은 렌더링 하는 과정을 좀더 개선하는 게 좋을 것 같다. Mesh Renderer에서 모든 바인딩 명령을 처리하도록 해놓고 Renderer에서는 그냥 그 함수를 호출하도록 하는 과정은 Mesh Renderer에게 너무 많은 참조를 요구한다. 그렇기 때문에 Mesh Renderer는 실제로 아무런 작업을 하지 않고 렌더링 해주세요~ 하고 요청을 하는데, 이때 Mesh정보와 Transform 정보를 Renderer에게 알려주는 것이다. 실제로 Renderer는 그 호출에 따라 필요한 정보를 Bind 하고, Material 정보를 또 받아와서 나머지를 다 처리하도록 만들면 될 것이..

성공적으로 임포트를 했다고 생각했으나 결과는 dll파일이 없어 실행할 수 없다는 이상한 메세지였다. 분명히 dll파일과 lib 파일이 같은 디렉토리에 있는데도 불구하고 말이다. 검색에 또 검색 끝에 하나의 블로그를 찾았다. http://blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220817543315 dll은 dynamically linked library이다. 즉, exe파일에 포함되지 않고 runtime 때 참조하는 것이다. 그래서 내가 코드를 쓸 때는 에러가 나지 않고 실행시 에러가 났던 것이다. include, lib만 경로를 추가할 것이 아니라 dll도 따로 작업을 해주어야 한다. 해당 블로그에서는 프로젝트의 디버깅에 환경 변수를 세팅해주는 ..
어제 그렇게 낑낑 대며 assimp를 넣어두고 테스트 코드 같은 것도 하나도 못 만들었다. 오늘은 이제 진짜 3d 모델링을 갖고 오도록 해보자. 역시 doc를 보면서 시작해야겠지. https://assimp-docs.readthedocs.io/en/latest/usage/use_the_lib.html# Access by C++ class interface — Asset-Importer-Lib September 2019 documentation The assimp library can be accessed by both a class or flat function interface. The C++ class interface is the preferred way of interaction: you crea..

어제는 계획만 세우고 관련 자료 찾기만 하다가 자버렸다. 이제 뭘 만들어야 할 지 생각 났으니 한번 만들어 보려고 한다. assimp를 활용한 mesh 데이터 로드 -> Picking -> Picking 시 imgui에 Component 메뉴 표기되도록 (Inspector 창 제작) 이 정도 까지 한번 해보려고 한다. Open Asset input Library (Assimp) http://www.assimp.org/ 일단 설치를 어떻게 하는 가부터 막막하다. 일단 Doc를 찾아보기로 했다. https://assimp-docs.readthedocs.io/en/latest/ Welcome to the Asset-Importer-Lib Documentation — Asset-Importer-Lib Septe..
이제 텍스쳐도 화면에 출력할 수 있게 되었으니 다음으로 할 일을 정해보자. 1. assimp로 모델링 임포트 2. Time 클래스 제작 3. Lighting 대충 현재 가능한 건 이 정도 있다. 막연히 구현해야 된다고 생각하는 것들을 아래 정리해보자. 1. Skeletal Animation 2. Terrain 3. Select modeling 4. Global illumination 5. Post Processing 6. Gizmo 7.Physics ... 이 정도이다. 일단 물리엔진은 좀 나중으로 미뤄두고, 일단 모델링을 선택하고 UI에서 이리저리 세팅을 할 수 있고 둘러보고 할 수 있도록 하는 게 우선 과제인 것 같다. 때깔을 곱게 출력할 수 있게 하는 것이다. 그렇다면 역시 일단 모델링 임포팅부터 ..
드디어 인풋 클래스에서 모든 처리를 할 수 있게 되었다! 이제 웬만하면 인풋클래스를 수정하지 않아도 될 것이다. 현재 필요한 기능을 모두 제공하니까. 키보드 키를 얻어낼 때 map을 만들어야 하지만... 일단 오늘은 Texture를 가져오도록 해보자. 일단 필요한 용어 정리. 'SamplerState란 대체 무엇인가?' 일단 Sample이라는 건 검색해보니 랜덤한 입력에 대해서 regular한 출력을 하는 과정이 Sample이라고 한다. 대충 감이 오긴 하지만 구체적으로 좀 더 파보자. 다음 링크를 참조하자. http://keithditch.powweb.com/Games/html/sampler_states.html Direct3D Sampler States Sampler States Sampling is..
후... 드디어 완성했다! 저번 꺼보다 매우 깨끗해보이는 Input Class가 완성되었다. #pragma once class Input { public: class Mouse { friend class Input; public: class Event { friend class Mouse; public: enum State : char { Invalid = 0b0000'0000, KeyDown = 0b0000'0001, Key = 0b0000'0010, KeyUp = 0b0000'0100, }; enum Type : char { None = -1, Left = 0, Middle, Right, }; private: State state; Type type; unsigned int pos; public: E..