성공적으로 임포트를 했다고 생각했으나 결과는 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..
1. 화면 좌표를 하나의 변수에 저장하기 int main() { unsigned int x = 1280, y = 720; unsigned int x2 = x 16)
원인을 찾아보았더니, 마우스의 WM_MOVE 메세지 처리시에 너무 많은 Event가 호출이 되어서 프리징이 걸리는 것 같다. 마우스 포지션 부분을 주석처리 하였더니 에러가 나지 않는 것으로 보아 그게 맞는 것 같다. 수정하기 위해서는 2가지 방법이 있다. 첫번째는 위치값을 큐에 넣지 않고 바로 메모리에 반영하도록 하는 방법이 있고, 두번째는 큐의 크기를 제한하도록 하는 것이다. 2가지 방법을 모두 시행해야 겠다. 일단 MouseMove는 첫번째 방법으로 수정하자. 그리고 찾아보니 키 메세지에 해당 키가 이전에 눌렸는지 여부를 알려주는 비트가 존재하고 있었다. 내가 억지로 만든 PostUpdate 등을 하지 않더라도 KeyDown, KeyUp 처리를 32, 31 번째 비트를 가지고 처리를 할 수 있었다. ..