Code
-
메탈슬러그 중간과정 3 - backgroundCode/Winapi 2020. 6. 21. 01:22
싱글톤에서부터 시작. Mainfrm 파일에서 InputManager, DBManager, RendManager 을 불러와서 관리할 수 있도록 함. 각 Manager 는 static 정의되어 모든 곳에서 사용할 수 있는 instance를 가져오는 함수(GetInstance)로 관리함. ※ static 정의된 함수는 전역변수처럼 쓸 수 있으므로 어디에서든 사용이 가능. 그러므로 하단과 같이 사용할 수 있다. (Mainfrm.cpp) 그러므로 Mainfrm 파일에서 RendManager 를 Rend 해주어서 Background를 실행하도록 하는 Scene class 를 실행하도록 함. RendManager 에서 더블 버퍼링과 Object 를 담은 vector 내부에 접근하여 하나씩 출력할 수 있도록 함. m_..
-
싱글톤(Singleton)Code 2020. 6. 10. 13:02
싱글톤이란, 프로그램이 시작될 때 단 한번 실행되어 메모리를 할당하는 디자인 패턴이다. 싱글톤은 여러번 호출되어도 실제 생성된 객체는 단 하나로, 원하는 갯수만큼의 객체만 생성하고 그 외의 객체 생성을 막기 위한 목적의 디자인 패턴이다. 싱글톤을 사용하는 이유 1. 메모리 낭비를 방지한다. 단 하나의 객체만 생성하여 의도치 않게 다른 객체가 생성되거나 협업 도중 인식하지 못한 부분에서 재생성 되어 메모리를 낭비하는 것을 막는다. 2. 전역 인스턴스로 공유에 용이하다. 전역변수로 선언된 함수와 인스턴스로 인해 싱글톤 객체를 어디서든 사용 가능하게 되어 프로그램 내부 어디서든 사용하기 쉽게 한다. 싱글톤 사용의 단점 멀티 스레드 환경에서 동기화를 안 할 경우, 중복 생성 등의 위험이 있다. 싱글톤은 stat..
-
HDC, HBITMAPCode 2020. 6. 6. 16:50
HDC = 출력에 관련하는 툴. hdc 는 화면 자체를 도화지로 가지는 HDC 이며, 따로 생성하는 HDC 들은 hdc를 인자로 받아서 그에 대한 속성(혹은 특징)을 복사하여 데이터화 시켜 연산을 하는데 최적화 시켜준다. 그러므로 hdc 를 제외한 개발자 생성 HDC들은 출력되지는 않지만 연산은 마친 상태로, 화면에 보이지는 않아도 같은 작업을 실행중이다. 개발자 생성 HDC 들을 hdc로 출력해줘야 화면에 보이게 됨! (나만 알아볼 수 있으면 된 거 라고 생각함ㅋㅋ) HBITMAP = 출력물을 그려주는 도화지.
-
메탈슬러그 중간과정 2 - backgroundCode/Winapi 2020. 6. 3. 02:16
* 잘못 생각하고 있었자너....? * class 두개를 만들어서 좌표값을 맞추어 저장한 뒤 좌표값을 이동시키기 * POINT 변수 사용 * 좌표값은 Image 가 직접 들고 있을 수 있도록 private 변수로 선언하여 setter/getter 함수 생성 * 이미지의 좌표값은 무조건 본인이 들고 있을 수 있도록! * 이미지 출력하는 함수는 따로 두었음. * background class 에서 불러와서 사용하는 식. * setposition 해서 좌표값 이동하는 방식으로 이미지 이동시키기! 조금 더 생각하는 버릇 들이기. 아직도 부족함. 다양한 방식으로 생각하는 방법을 익혀야 할 것 같은데 그게 잘 안 되는 듯. 코드처럼 생각하기 버릇.... 버릇.. 버릇.. 개롭;;;
-
메탈슬러그 중간과정 1 - backgroundCode/Winapi 2020. 6. 1. 12:09
* 싱글톤 생성 및 필요한 파일과 class 생성. Rend 매니저 Input 매니저 DB 매니저 * 싱글톤 디자인을 생성하는 이유 : 각 class 들의 관리를 용이하게 하기 위해. * 배경 출력을 우선으로 하겠음 ! * 배경 출력을 위해 개별 이미지를 관리하는 ObjectImage class 를 생성하여 Background class 에 선언 후 출력. * 이미지를 개별로 관리므로 배경이 좌우로 움직일 때 이미지만 옮기고 윈도우나 자르는 범위는 바뀌지 않도록 함. * 근데 아직 좌우로 움직이는 것을 못하겠다... 좀 더 생각해보기.
-
WinAPI 더블 버퍼링Code 2020. 5. 16. 23:01
더블버퍼링 (스왑체인) * DC를 2개를 만들어서 바꿔가며 디스플레이 함. * memory DC / Compatible DC 메모리 DC에서 그림을 그리고 콤페터블 DC에서 메모리 DC에서 그린 그림을 복사해서 가져가서 디스플레이 함. hDC = GetDC(hWinMain); hMemDC = CreateCompatibleDC(hdc); hBit => 도화지 = CreateCompatableBitmap(hdc,화면가로,화면세로); * hBit 도 DlelteObject 로 반환해줘야 함. hOldBit => 이전 도화지 저장 = SelectObject 의 반환값을 저장할 것이므로 함수를 만들지 않아도 됨. * Old 를 저장하는 이유 -> 윈도우 운영체제에서 지정한 기본값을 보존시키기 위해. WM_Pain..