- Vector2 구조체 선언.
// pch.h
#pragma once
// 미리 컴파일된 헤더
#include <Windows.h>
#include "define.h"
#include "struct.h"
struct.h 헤더 파일에 임의로 만든 구조체들을 모아놓자.
// struct.h
#pragma once
struct Vector2
{
float x;
float y;
Vector2() : x(0.f), y(0.f) {}
Vector2(const Vector2& v) : x(v.x), y(v.y) {}
Vector2(float _x, float _y) : x(_x), y(_y) {}
Vector2(int _x, int _y) : x(static_cast<float>(_x)), y(static_cast<float>(_y)) {}
Vector2 operator+(const Vector2& v) const { return Vector2(x + v.x, y + v.y); }
Vector2 operator-(const Vector2& v) const { return Vector2(x - v.x, y - v.y); }
Vector2 operator*(float scalar) const { return Vector2(x * scalar, y * scalar); }
Vector2 operator/(float scalar) const { return Vector2(x / scalar, y / scalar); }
Vector2 operator-() const { return Vector2(-x, -y); }
Vector2& operator=(const Vector2& v) { x = v.x; y = v.y; return *this; }
Vector2& operator+=(const Vector2& v) { x += v.x; y += v.y; return *this; }
};
Vector2 와 관련된 연사자 오버로딩 함수나 각종 생성자들을 간단히 만들어줌.
- TimeMgr 클래스 설계
// CTimeMgr.h
#pragma once
class CTimeMgr
{
SINGLETON(CTimeMgr);
private:
LARGE_INTEGER m_llCurCount;
LARGE_INTEGER m_llFrequency;
public:
void init();
};
void CTimeMgr::init()
{
// QueryPerformanceCounter: 고해상도 타이머의 현재 카운터 값을 가져옴.
QueryPerformanceCounter(&m_llCurCount);
// QueryPerformanceFrequency: 고해상도 타이머의 주파수(초당 카운트 수)를 가져옴.
QueryPerformanceFrequency(&m_llFrequency);
}
LARGE_INTEGER 는 union 구조체임. 8바이트를 사용.
기존의 GetTickCount 함수는 4바이트에 밀리초 단위(초당 1000 틱)로 저장하기 때문에
시간을 측정하기엔 컴퓨터 속도에 비해 부정확함.
실행해보면 m_llFrequency 값이 10,000,000 = 천만이 나옴.
'Win32 api' 카테고리의 다른 글
| Win32 api 강의 12화. (0) | 2025.09.13 |
|---|---|
| Win32 api 강의 11화. (0) | 2025.09.13 |
| Win32 api 강의 9화. (0) | 2025.09.12 |
| Win32 api 강의 8화. (0) | 2025.09.12 |
| Win32 api 강의 7화. (0) | 2025.09.11 |