목록분류 전체보기 (156)
승쨩개발공부
컨텍스트 스위칭이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 떄 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)을 교체하는 작업을 컨텍스트 스위칭(Context Switching)라고 한다. 참고로 컨텍스트 스위칭 떄 해당 CPU는 아무런 일을 하지 못한다. 따라서 컨텍스트 스위칭이 잦아지면 오버헤드가 발생해 효율(성능)이 떨어진다. 컨텍스트는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등 현재 상황(상태)을 규정하는 ..
커널 커널은 컴퓨터 시스템을 제어하는 일을 한다. 여기에는 메모리, 사운드카드, 키보드, 모니터와 같은 시스템자원을 포함한다. 이러한 시스템자원을 사용하는 것은 보통 응용 프로그램의 요청을 통해서 이루어지게 되므로 커널은 응용 프로그램을 관리하는 일도 한다. 응용 프로그램의 실행되는 순서라든지 응용 프로그램이 요구하는 시스템자원에 대한 관리가 그것이다. 커널 (Kernel, 핵심) - 소프트웨어적인 관점에서 프로그램의 뇌 - 시스템 데이터나 하드웨어를 직접 액세스 및 제어 프로세스와 쓰레드의 차이점 프로그램의 실행 관점에서 이해하는 것도 중요하지만, 메모리 관점에서 이 둘의 차이점을 이해하는 것 도 중요하다. 프로세스는 메모리를 공유하지 않지만, 프로세스 내에 존재하는 둘 이상의 쓰레드들은 스텍을 제외한..
오브젝트 풀 객체를 매번 할당, 해제하지 않고 고정 크기 풀에 들어있는 객체를 재사용함으로써 메모리 성능을 개선한다. 해제하지 않는데 어떻게 메모리 사용 성능이 개선된다는걸까? 게임에는 총을쏘거나 마법을쓰거나 검을 휘두를떄 빛이 생성이된다. 이 빛은 파티클 시스템이 필요하다. 검을 몇번 휘두르는것만 해도 수많은 파티클이 생성이되야한다. 그렇기에 이 파티클을 굉장히 빠르게 만들 수 있어야 한다. 더욱 중요한것은 파티클을 생성, 제거하는 과정에 메모리 단편화가 생겨서는 안 된다는 점 이다. 단편화를 막으면서도 메모리 할당 속도 떄문에 메모리를 언제 어떻게 관리할 지를 엄청 신경써야 한다. 이러한 문제는 게임이 실행될 떄 메모리를 미리 크게 잡아놓고 끝날 떄까지 들고 있는 것으로 해결할 수 있다. 하지만 이러..
FileInfo 클래스를 다 만들었다면 구조체로 ObjKey값,StateKey값 이미지경로값, 이미지갯수값을 잡아주자 PathFind 클래스에 list로 방금만든 구조체를 넣어주자 list를 돌면서 10진수로 바꾸고 ObjKey값과 토큰 StateKey값과 토큰, 이미지 갯수와 토큰, 경로를 ListBox에 넣어준다 OutStream으로 Data폴더안에 ImgPath.txt폴더를 만든다 파일이 정상적으로 개방되었다면 Obj키값, State키값, 이미지갯수, 경로를 저장하고 닫아준다 그리고 NotePad를 실행한다 이것까지 다 했다면 이제 PathFind를 실행하고 Texture 폴더를 넣으면 이런식으로 되고 Save를 누르면 메모장에 위 경로들이 저장이되고 Load로 불러올수있다. 편하게 사용하기위해 H..
자 이제 리스트박스 에 드레그&드랍을 하면 경로, ObjKey값, StateKey값, 파일이름, 이미지갯수 를 메모장에 저장을해서 불러오는형식으로 텍스쳐를 추가해보자. 일단 Header에 fstream을 추가시켜준다 우선 Tool 솔루션에 MFC클래스를 생성해준다. Load,Save 버튼 등이 필요하니 기본클래스는 Dialog로 해준다. 클래스 생성후 리소스뷰로와서 리스트박스, 저장,불러오기 버튼을 만들어준다 리스트 박스는 드래그&드랍이 필요하니 Accept Files를 True 해준다. 그리고 버튼,리스트박스 이벤트처리기와 DropFIle메세지를 클래스에 추가시켜준다. 이제 함수들의 값을 채워주기위해 새로 다른 FileInfo라는 클래스를 C++ 클래스로 만들어준다. ConvertRelativePath..
자 이제 맵툴을 만들어보자 MFC 클래스를 생성한다 CMapTool로 기본클래스는 CDialog로 받는다 우선 맵툴을 만들려면 폼뷰 다이얼로그에서 버튼 넣고 함수로 OnMapTool추가 해준다 맵툴 클래스를 받아오기위해 헤더추가후 멤버변수 선언해준다 UnitTool과 똑같이 폰트를 받아오기위해 Oninitialize에 넣어주고 OnMapTool엔 똑같이 처리해준다 맵툴에선 뭐할거냐? 텍스쳐(타일)들을 드래그 앤 드랍을 할것이다. MapTool다이얼로그로 가서 List Box(왼쪽) Pickture Control(오른쪽) Button(아래) 도구상자로 만들어준다 리스트박스는 타일의 이름을 둘것이고 픽쳐컨트롤은 리스트박스 해당 인덱스를 누르면 이미지가 출력되게 할것이고 버튼은 만든맵을 저장할것이다. 리스트 ..