* 벡터2 구조체를 만들고, 관련 연산자들을 재정의해서 편의성 있게 사용 가능하도록 함 //Vector2.h #pragma once //프로그래밍에서 수학은 //손으로 푸는것이 중요한 게 아니라 이 수학 공식을 사용하면 어떻게 되는지 //정도만 알면 된다. #include //라디안 등 여러 곳에 원주율이 두루두루 쓰이므로 상수로 등록해 놓는다. const float PI = 3.141592f; struct Vector2 { float x, y; //아무것도 안넣으면 0으로 초기화 Vector2() : x(0.f), y(0.f) {} //두개의 값을 인자로 받으면 각각 x, y로 Vector2(float _x, float _y) : x(_x), y(_y) {} //한개의 값을 인자로 받으면 x, y 동일..
* LARGE_INTEGER: 공용체(union) - 공용체는 메모리 공간을 공유하는 메모리 타입이다. * 32비트 기준 - DWORD LowPart = Unsigned int (4byte) - LONG HighPart= int(4byte) - 둘이 합친 공간인 8byte는 - LONGLONG Quadpart와 공유된다. typedef union _LARGE_INTEGER { struct { DWORD LowPart; LONG HighPart; } DUMMYSTRUCTNAME; struct { DWORD LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER;
* HDC를 통한 그리기 방법 학습 * DeltaTime을 구현하여 프레임 변동해도 일정한 게임 속도 유지시키는 법 학습 //Class CGameManager //GameManager.h #pragma once #include "GameInfo.h" #include "SingletonMacro.h" /* [프레임과 게임 처리] 내 컴퓨터는 100프레임 PC방 컴퓨터는 200프레임 게임 코드는 1프레임당 한번 게임 로직을 처리 만약 게임 로직이 1프레임에 5씩 캐릭터를 이동시킨다면 내 컴퓨터에서 500 움직일 동안 PC방 컴퓨터는 1000을 움직이게 된다. 아주 심각한 문제 * 매 프레임마다 한 프레임을 그리는 데 걸렸던 시간을 변수에 저장한다. * 그리고 다음 프레임을 그릴때 시간 단위를 위에서 저장한 ..
* 일종의 번호로 되어 있음. - 이 번호들은 커널 오브젝트에 속함. * 커널: 운영체제가 사용하는 특수한 영역 및 핵심 부분. 사용자는 컨트롤 불가능 * 커널 오브젝트: 커널에 있는 메모리 - 커널에 값을 넣어 놓음 * 핸들은 각자 자신이 부여받은 번호에 속한 오브젝트들을 컨트롤하는 역할을 한다. ex) HWND(윈도우 핸들): 윈도우 창을 컨트롤하기 위한 용도 HDC: WIN32에서 제공하는 그리기 도구. 윈도우 창의 클라이언트와 연결 됨. HINSTANCEm_hInst; HWNDm_hWnd; HDCm_DC;
* m_Loop 루프 지속 여부를 확인할 변수 - static 변수로 선언한 이유 static 함수는 static 변수만 처리 가능하다. 계속 루프를 할 지 여부는 메시지를 통해 결정해야 한다. 메시지 루프 처리는 WinProc 함수에서 진행한다. WinProc는 static 함수이다 -> 일반 선언 변수는 처리가 불가능하고 static 변수만 처리 가능하기 때문에 아래 변수를 static으로 선언한 것 static boolm_Loop; static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { //WIN32API 기본 코드에서 가져온 내용 // //message 큐로부터 받은 message에 따라 어떤 ..
윈도우 창을 보여준다. 1번인자에 들어간 핸들의 윈도우 창을 보여줄지 말지를 결정해준다. 2번인자: 기본값인 nCmdShow 대신 SW_SHOW(창을 보여준다), SW_HIDE(창울 숨긴다 - 백그라운드)를 넣어줄 수도 있다. cf)SW_HIDE 외에도 왼도우 서비스를 통해 창을 표시하지 않을 수도 있다. ShowWindow(m_hWnd, SW_SHOW);
사각형을 표현하기 위해서 지원하는 구조체이다. left, top, right, bottom 값으로 이루어져 있다. left와 top = 사각형의 좌측 상단 좌표 right와 bottom = 사각형의 우측 하단 좌표 두 점을 통해 직사각형을 그린다. 윈도우 크기를 표현하는 Rect 구조체를 하나 만들어준다. RECT rc = { 0, 0, 1280, 720 }; 위에서 지정한 크기만큼 클라이언트 영역의 크기로 잡기 위해서 필요한 실제 윈도우의 크기를 얻어온다. * 1번 인자: 원하는 창의 크기가 저장된 주소(RECT 구조체) * 2번 인자: 조절할 창의 기본 형태가 무엇인지 전달 * 3번 인자: 메뉴바 있는지 여부 전달 * 해당 인자들을 전달해 주면, ..