본문 바로가기

Win32 api

Win32 api 강의 10화.

- 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