포트폴리오 만들기19 19.Script ReLoad 버그/Manager/빌드 종속성/ConstBf,Transform/namespace , DLL간의 종속성을 줄이기 위한 생각. 0.Script ReLoad 버그 생김 고치기. Script 재 빌드 하기 전에 Dll 해제를 안해줘서 발생한 버그임. 또 Dll 해제 후 재 빌드를 했으면 다시 Load 해 놓도록 했음. Load에 실패하면 경고 메세지 출력. ReLoad 잘 된다. ReLoad 조건 1) application focus가 해제되었다가 다시 focus in 되었을때 Script 변경점을 조사한다. 조건 2) time stemp 가 달라졌다면 변경점이 있다는 것으로 script를 다시 빌드해서 load 한다. 인데 현재는 조건 2가 아니어도 조건1만 충족되면 해당 함수가 호출되도록 했다. 나중에 코드를 더 구현하고도 문제가 없다면 해당 부분은 지울 예정. 콘솔창이 로딩 끝나면 사라지길 바라면 아래 사진에서 pause 부분.. 포트폴리오 만들기 2024. 1. 24. 18.Resource사용한 삼각형 출력/ResourceManager/SPtr,Entity,Resource 위치 변경/RBT operator[] 변경 1.Resource사용한 삼각형 출력 이전 시간에 기존의 CDxDevice Render 함수에 통째로 있던 코드를 Mesh,Shader로 분리하는 작업을 했다. 이번에는 분리된 Mesh,Shader를 이용해서 CDxDevice 에서 출력하도록 테스트 해봤다. 테스트할때 미세하게 틀린 부분이 있었는데,이것때문에 좀 시간을 잡아먹혔다. 아무튼 성공! 2.Resource Manager 만들기. Resource Manager 원래 Engine에 위치 시키려 했는데 Resource 들에 대한 헤더 정보가 필요하기 때문에 문제가 발생한다. 그래서 Renderer 로 위치를 변경하도록 함. FindResource typeid 로 비교할때 hash_code를 쓰는 이유는 객체 자체를 비교하는 것보다 hash_code로.. 포트폴리오 만들기 2024. 1. 23. 17.AddTCHAR/Renderer 추상클래스/Entity Class 위치 변경/Resource/SmartPointer구현/Convert WC2C,C2WC 1.AddTCHAR mystring 을 짜서 raii 하게 동작하도록 해도 되지만 간단하게 스마트 포인터로 사용할 수 있도록 했다. 2.Renderer 추상 클래스 만들기. 물론 나는 여러 버전을 구현할건 아니지만 예를들어 dx 의 경우에도 추상클래스를 제공하면 그래픽 카드 회사들이 내용을 구현하는걸로 알고 있다. 이렇게 하는게 모듈성,확장성이 좋고 유지 관리에 용이한 것 같다. (외부에서 호출하는 함수는 어차피 똑같고 내부 수정만 일어난거라 외부 사용자는 모른다.) 예를들어 지금 아래와 같이 되어있는데, 1)InitDevice와 Render는 외부에서 필요하지만 Create 들은 외부에서 알 필요가 없다. 2)CDxDevice 라는 이름이 아니라 Device 라는 이름을 사용하는 추상클래스여야 한다. .. 포트폴리오 만들기 2024. 1. 22. 16.DX Code 짜기/IManager 분리/Flip Model/삼각형 띄우기/FileManager/AddTCHAR 1.Engine이 만들어질 때 HWND가 연결되어 있어야 한다. 기존 코드는 MainManager 생성 시점에 Engine이 만들어지는데 생성 이후에 설정했음. 그래서 첫번째로 MainManager::Create가 Init에 , Destroy가 Release에 위치하는게 깔끔할 것 같아서 기존 InitInctance 함수를 Initialize로 변경 후 내부에서 MainManager::Create 호출. Release 함수 추가 후 내부에서 MainManager::Destroy 호출. 두번째로 MainManager::Create 후 Engine Instance -> SetHWND() 이런식으로 따로 초기화 해줬는데 생성 시점에 설정이 되어야 하기 때문에 MainManager::Initialize(HWND.. 포트폴리오 만들기 2024. 1. 21. 15.DxRenderer Dll 1.Renderer CDevice class 생성 2.DirectxMath는 전체 프로젝트가 공유 - Math 는 공유하고 나머지 Dx 함수들은 공유 안되게 하고 싶었다. 그런데 다운받은 Simplemath.h 는 d3d11 을 로드하지 않았다면 include 되지 못하게 예외처리가 되어있었다. 익숙하지 않은 코드라 해당 부분을 지우면 자꾸 에러가 뜨길래 삽질을 좀 오래했다. (외부용 Vector를 따로 구현해줘야하나 그건 너무 오래걸릴것 같은데 하면서 구현했다가 지우고 다른 방법해보고 계속 삽질..) 근데 나중에 보니까 내가 그거 주석 건다고 #pragma once 도 함께 주석 걸어버려서 생긴 문제였다. 그래서 예외처리 부분 주석걸고 #pragma once 해줌. Math는 stl.lib에서 선언해놨.. 포트폴리오 만들기 2024. 1. 19. 14.CMake/MemoryLeak/system(cmake) 1.CMake Window에서 make 명령어 쓰기 https://gnuwin32.sourceforge.net/packages/make.htm Make for Windows • Complete package, except sources Setup 3384653 25 November 2006 8ae51379d1f3eef8360df4e674f17d6d gnuwin32.sourceforge.net 1.설치한다. 2.시스템 환경 변수 path 에 gnuwin\bin 경로를 넣어준다. 3.cmd 창에서 make -v 쳤을때 사진과 같게 나오면 설치된 것. 참고: https://ndb796.tistory.com/381 윈도우(Windows)에서 make 명령 사용하기 윈도우(Windows) 환경에서 GNU Make.. 포트폴리오 만들기 2024. 1. 18. 13.ConsoleTestCode/Map변경점/CRKEngine변경점/CScriptReLoad Class 생성/FileManager 변경점 1.ScriptReLoad 감지 Console Test Code 2. Map 변경점 Map Find 매개인자 변경 Key 값에 따라 const 가 붙어줬으면 했다. 예를 들어 T == int => const int T == int*=> const int* const 문제는 * 의 경우 const int* 가 아닌 int* const가 된다. (T에 대한 const 라 주소를 const 한듯.) 예전에 봤던 타입 추론에 대한 내용이 가물 가물 해서 그 부분과 헷갈렸다. 예제 1의 경우 class 객체를 선언할때 T 가 정해진다. 이 상태에서 const 를 붙이면 T = TCHAR* => const T = TCHAR* const 가 되는 것. TCHAR 주소를 const 시키는게 된다. 예제 2의 경우도 c.. 포트폴리오 만들기 2024. 1. 17. 12. ScriptManager 자동화 ScriptManager 자동화 ScriptReader 완성 및 Script dll 에 적용 cpp 구현 변경점 체크 구현 결과 Script Reader.exe 를 Script 프로젝트가 빌드될 때 빌드 이벤트로 실행 시키도록 했다. Script가 추가되거나 삭제될 때 마다 Script Project가 빌드가 되면 ScriptManager 가 자동으로 갱신된다. 포트폴리오 만들기 2023. 12. 28. 11. ScriptReader/FileManager/ FileManager ReadFile 기능을 구현하였다. 만든 함수들 함수 설명 ReadFile 파일 내용을 읽는 함수이다. 1. CatPath (): _ePath 로 들어온 type에 따른 Path 정보와 _tcPath 정보를 이어붙인다.(읽고자하는 파일 주소.) 2. 파일의 내용을 한글자씩 읽으며 '\n' 만나면 거기까지가 1 SET의 문자열로 취급한다. 즉, 1줄당 1개의 문자열로 저장한다. 3. 읽은 문자열(m_lineData)과 줄 갯수 (m_col) 들을 모은 FILEDATA* 를 리턴한다. 동적 할당된 line 정보들은 언제 delete 해줄까? FreeFileDetail() 호출 시 해제된다. ReadHeaderFileNameList ReadFile() 과 동작은 유사하지만 .h 파일의 이.. 포트폴리오 만들기 2023. 12. 27. 10.map nilnode,begin,특수화 delete 수정 / FileManager / ScriptReader 1.Map nilnode , begin() 수정 공유 되는 nilnode => 공유 안되는 nilnode 기존의 map은 nilnode가 static 이었다. 이렇게 하면 같은 Key,Value로 만든 map이 여러개인 경우, 같은 nilnode를 공유하기 때문에 문제가 발생한다. 소멸자에서 delete nilnode를 해주기 때문에 다른 rbt에서 접근할때 오류가 발생한다. 따라서 rbt 당 1개의 nilnode를 사용하도록 변경하였다. begin() 함수 root가 nilnode인 경우 예외 처리 root 가 nilnode 인 경우 begin~ end로 이루어진 for문이 돌지 않아야 하기 때문에 이와 같은 예외처리를 해줘야 한다. 안그러면 begin != end 가 되기 때문에 operator++을.. 포트폴리오 만들기 2023. 12. 26. 9.Map 문자열 사전식 정렬 / map + Script time stemp 1.Map 수정사항 사전식 비교를 위한 수정 기존 문자열 비교가 사전순으로 이루어지지 않은 부분에 대해 추가 작업을 하였다. 특수화 처리하기는 코드가 길어질 것 같아서 아래와 같이 template를 변경하였다. 기본적으로 아무 입력값이 없다면 기본 greater 와 less 를 사용하도록 했다. 문자열의 경우 operator를 지정해줘야 하기 때문에 아래와 같이 한다. 그러면 문자열의 비교는 어떻게 이루어질까? 사전식 비교를 하도록 operator를 구현했다. + Equal 도 추가했다. 테스트 기본 테스트 디버깅으로 node들의 구성을 확인한 결과 rbt 시뮬레이션과 동일하게 삽입이 이루어졌다. 문자열 테스트 문제가 나의 정렬방식 아래와 같다. [1] 문자열 길이가 짧은게 우선순위가 높다. [2] 문자.. 포트폴리오 만들기 2023. 12. 22. 8.구조 바꿈/ Sha256 다운받아서 프로젝트에 적용. 1. 구조 바꿈 바뀌기 전 구조는 dll에서 받아온 기능을 랩핑한 class 느낌으로 구조를 짰다. 바뀐 후 구조는 Engine 과 Lib에서 포인터를 받아서 해당 pointer를 통해 접근하게 했다. 이렇게 함으로써 좀 더 깔끔하고 보호 수준을 높이려는 의도와 맞는 것 같았다. 주의점 여기서 주의할 점이 있다. RokaProj에서 생성된 LM_DLL과 dll 에서 생성된 LM_DLL 은 별개로 취급된다. 추측하기로는 공유 메모리가 아니기 때문인 것 같다. main proj에서 lib를 통해 생성한 메모리는 .exe 쪽 메모리에 잡히고 dll 내부에서 lib를 통해 생성한 메모리는 dll 쪽 메모리에 잡히기 때문에 별개로 취급된다고 추측한다. 2.Openssl SHA256 적용 및 테스트 다운로드 htt.. 포트폴리오 만들기 2023. 12. 21. 이전 1 2 다음