League Of Legends - Link Select [winAPI 10] Resource & Path Manager
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿค“ Study/winAPI

[winAPI 10] Resource & Path Manager

by GAMEMING 2024. 6. 6.
728x90

 

 

์ง€๊ธˆ๊นŒ์ง€๋Š” ๋‹จ์ˆœํžˆ ๋„ํ˜•๋งŒ์„ ๋‹ค๋ฃจ์–ด๋ดค๋‹ค๋ฉด ์ด์ œ๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•ด๋ณด์ž. ์‹ค์ œ ๊ฒŒ์ž„์—์„œ๋Š” ์ด๋ฏธ์ง€, ์‚ฌ์šด๋“œ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๊ณ  ์ด๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด์— ์—ฌ๋Ÿฌ ์žฅ๋ฉด์„ ๊ทธ๋ ค ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค.

 

์šฐ์„  ์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ ธ์•ผ ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„ Resํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค (๋ถ€๋ชจ๊ฒฉ ํด๋ž˜์Šค)

๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์œ ์˜ ID์™€ ์ด ๋ฆฌ์†Œ์Šค๊ฐ€ ์–ด๋А ํŒŒ์ผ์— ์œ„์น˜ํ•ด ์žˆ๋Š” ์ง€๋ฅผ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•จ์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

// Res.h

#pragma once

class Res {
private:
	wstring key;			// ๊ณ ์œ  ID
	wstring strRelativePath;	// ๋ฆฌ์†Œ์Šค ์ƒ๋Œ€ ๊ฒฝ๋กœ(ํด๋” ๋‚ด์˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ)

public:
	Res();
	~Res();

	void SetKey(const wstring& _key) { key = _key; }
	void SetRelativePath(const wstring& _str) { strRelativePath = _str; }

	const wstring& GetKey() { return key; }
	const wstring& GetRelativePath() { return strRelativePath; }
};


// Res.cpp
#include "pch.h"
#include "Res.h"

Res::Res()
{
}

Res::~Res()
{
}

 

 

์ด๋•Œ์˜ ๊ฒฝ๋กœ๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๊ด€๋ฆฌ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

์ด๋ฅผ Path Manager๋ผ๊ณ  ํ•˜๊ฒ ๋‹ค.

 

ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๊ฐ€ VS๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆฌ๋ฉด ํ•ด๋‹น exe ํŒŒ์ผ์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์–˜๊ฐ€ ์‹คํ–‰ ํŒŒ์ผ์ด๋‹ค. Debug๋ชจ๋“œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฒŒ์ž„์„ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๋””๋ฒ„๊น…์ด ์šฉ์ดํ•˜๋„๋ก ํ•˜๋Š” ๋ฒ„์ „, Release๋ชจ๋“œ๋Š” ๋ฐฐํฌ ๋ฒ„์ „์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๋ณดํ†ต ์œ ์ €์—๊ฒŒ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•  ๋•Œ ์ด Release ๋ชจ๋“œ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ๊ฒŒ์ž„์„ ๋ฐฐํฌํ•  ๋•Œ exeํŒŒ์ผ์„ ํ•˜๋Š”๋ฐ ๊ทธ ๋‚ด๋ถ€์˜ ๋ฆฌ์†Œ์Šค์™€ ๊ด€๋ จ ๊ฒฝ๋กœ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

Release ํŒŒ์ผ ๋‚ด๋ถ€์— ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋†“์œผ๋ฉด ๋œ๋‹ค. 

 

์ผ๋‹จ ์ด๋ฅผ ์œ„ํ•ด์„œ ๊ธฐ์กด์— ์ƒ์„ฑ๋œ ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ํ•ด์„œ ๋งŒ๋“  exeํŒŒ์ผ๋“ค์„ Output์ด๋ผ๋Š” ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋„๋ก ์„ค์ •ํ•˜์ž.

 

ํ”„๋กœ์ ํŠธ → ์†์„ฑ →  ๊ตฌ์„ฑ : Debug / Release (๋‘˜ ๋‹ค ๊ฐ๊ฐ ์„ค์ •ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค) → ์ผ๋ฐ˜ → ์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ ์„ค์ •

 

Debug ์„ค์ • : $(SolutionDir)Output\bin_debug\

Release ์„ค์ • : $(SolutionDir)Output\bin\

 

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๊ณ  ๊ฐ ๋ฒ„์ „์—์„œ ์‹คํ–‰์‹œํ‚จ ํ›„ ํŒŒ์ผ์„ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด ์•„๋ž˜์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

bin ํŒŒ์ผ์ด Release๋ชจ๋“œ, bin_debug๊ฐ€ Debug๋ชจ๋“œ๋กœ ์ปดํŒŒ์ผ ํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” exeํŒŒ์ผ๋กœ, ๊ฐ ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€ exe๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

bin ํŒŒ์ผ ๋‚ด๋ถ€์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋„ฃ์„ Content๋ผ๋Š” ํŒŒ์ผ์„ ๋„ฃ๊ณ  Texture, Sound ๋“ฑ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด์ž.

 

bin\Content

 

๊ทผ๋ฐ ์ด๋Ÿฌ๋ฉด Debug ๋ฒ„์ „์œผ๋กœ ๋Œ๋ฆด ๋•Œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•ด์•ผ ํ• ๊นŒ? ๊ฐ™์€ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ๋˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋‚ญ๋น„์ž„์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์—ฌ Release ๋ชจ๋“œ ์•ˆ์˜ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์„ ์ ‘๊ทผํ•ด ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

 

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ Path Manager์„ ๋งŒ๋“ค๊ณ  ์„ค์ •ํ•ด๋ณด๋„๋ก ํ•˜์ž.

 

// PathManager.h

#pragma once
class PathManager{
	SINGLE(PathManager);
private:
	wchar_t		contentPath[255];

public:
	void init();
	const wchar_t* GetContentPath() { return contentPath; }
};


// PathManager.cpp
#include "pch.h"
#include "PathManager.h"

#include "Core.h"

PathManager::PathManager()
	: contentPath{}
{

}

PathManager::~PathManager()
{

}

void PathManager::init()
{
	GetCurrentDirectory(255, contentPath);

	int len = wcslen(contentPath);
	for (int i = len - 1; 0 <= i; --i) {
		if ('\\' == contentPath[i]) {
			contentPath[i] = '\0';
			break;
		}
	}

	wcscat_s(contentPath, 255, L"\\bin\\Content\\");

	SetWindowText(Core::Instance()->getMainHandle(), contentPath);
}

 

 

 

ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ์•Œ์•„์˜ค๋Š” ํ•จ์ˆ˜ GetCurrentDirectory()๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด contentPath์— ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ ์ฑ„์›Œ์ง„๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์€ binํŒŒ์ผ์— ์žˆ์Œ์œผ๋กœ ๋‚ด๊ฐ€ ๊ฐ€์ ธ์˜จ ๊ฒฝ๋กœ์—์„œ ์ „ ํŒŒ์ผ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€์•ผ ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

 

์ด๋Š” ๋ฌธ์ž์—ด ๊ด€๋ จ ํ—ค๋” ํŒŒ์ผ์„ ์ด์šฉํ•˜๋Š” ๋ฒ•์ด ์žˆ์ง€๋งŒ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ž์—ด๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

๊ฐ€์ ธ์˜จ ๊ฒฝ๋กœ๋ฅผ ๊ฑฐ๊พธ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ  '\\' ๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ฑฐ๊ธฐ์„œ ๋ฉˆ์ถ”๋ฉด ๋œ๋‹ค.

 

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ

F5์™€ Ctrl + F5์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋กœ ์ง„ํ–‰๋œ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ F5๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ๋„ ๊ธฐ์กด ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

 

์•„๋ž˜์˜ ์„ค์ •์„ ํ•˜๋ฉด ๋œ๋‹ค.

 

ํ”„๋กœ์ ํŠธ → ์†์„ฑ →  ๊ตฌ์„ฑ : ๋ชจ๋“  ๊ตฌ์„ฑ → ๋””๋ฒ„๊น… → ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ€๊ฒฝ

$(SolutionDir)Output\bin\

 

 

 

๊ฒฝ๋กœ๋ฅผ ๋Š์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋‹ค์Œ์— binํŒŒ์ผ์˜ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

 

์„ค์ •๋œ ๊ฒฝ๋กœ

 

 

 

PathManager์˜ init()์„ Core ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ๋ถˆ๋Ÿฌ์ฃผ๋Š” ์ž‘์—…๋„ ์žŠ์ง€ ๋ง๊ณ  ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด exe๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์˜ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ์ •์ƒ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ๋‹ค.

 


 

 

 

๊ฒŒ์ž„ ๋‚ด์˜ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ Texture๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ ์—ฌ๋Ÿฌ ๋ชจ๋ธ๋ง์— ๊ด€๋ จ ํ…์Šค์ณ๋ฅผ ์ž…ํ˜€ ๋ฌผ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ์‹์ด ๋งŽ๋‹ค.

 

// Texture.h

class Texture : public Res {
private:
	HDC			dc;
	HBITMAP		bit;
	BITMAP		info;

public:
	Texture();
	~Texture();

	void Load(const wstring& _str);
	UINT Width() { return info.bmWidth; }
	UINT Height() { return info.bmHeight; }

	HDC GetDC() { return dc; }
};


// Texture.cpp
#include "pch.h"
#include "Texture.h"

#include "Core.h"

Texture::Texture()
	: bit(0)
	, dc(0)
	, info{}
{
}

Texture::~Texture()
{
	DeleteDC(dc);
	DeleteObject(bit);
}

void Texture::Load(const wstring& _str)
{
	bit = (HBITMAP)LoadImage(nullptr, _str.c_str(), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
	assert(bit);	// ๋น„ํŠธ๋งต์ด ์—†์„ ๊ฒฝ์šฐ์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ

	// ๋น„ํŠธ๋งต๊ณผ ์—ฐ๊ฒฐํ•  DC
	dc = CreateCompatibleDC(Core::Instance()->GetMainDC());

	// ๋น„ํŠธ๋งต๊ณผ DC ์—ฐ๊ฒฐ
	HBITMAP preBit = (HBITMAP)SelectObject(dc, bit);
	DeleteObject(preBit);

	// ๊ฐ€๋กœ ์„ธ๋กœ ๊ธธ์ด
	GetObject(bit, sizeof(BITMAP), &info);
}

 

 

์šฐ๋ฆฌ๊ฐ€ ์กฐ์ž‘ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•ด ํ‘œํ˜„ํ•ด๋ณด์ž.

 

// Player.h

#pragma once
#include "Object.h"

class Texture;		// ์ถ”๊ฐ€

class Player : public Object {
private:
	Texture* tex;

	void CreateMissile();

public:
	Player();
	~Player();

	virtual void update();
	virtual void render(HDC _dc);	// ์ถ”๊ฐ€
};


// Player.cpp


#include "PathManager.h"
#include "Texture.h"

Player::Player()
	: tex(nullptr)
{
	// Texture Loading
	tex = new Texture;
	wstring strPath = PathManager::Instance()->GetContentPath();
	strPath += L"Texture\\Player.bmp";
	tex->Load(strPath);
}

Player::~Player()
{
	if(nullptr != tex)
		delete tex;
}

void Player::render(HDC _dc)
{
	int width = (int)tex->Width();
	int height = (int)tex->Height();

	Vec2 vPos = getPos();

	vPos.x - (float)(width / 2);
	vPos.y - (float)(height / 2);

	TransparentBlt(_dc
		, int(vPos.x - (float)(width / 2))
		, int(vPos.y - (float)(height / 2))
		, width, height
		, tex->GetDC()
		, 0, 0, width, height
		, RGB(255, 0, 255));
}

 

 

Player๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์†Œ๋ฉธ๋  ๋•Œ ํ•ด์ œํ•˜๋„๋ก ํ•œ๋‹ค.

๊ธฐ์กด Object์—์„œ ๊ทธ๋ ธ์ง€๋งŒ, ์ด์ œ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ–๊ณ  ๊ทธ๋ ค์•ผ ํ•˜๋ฏ€๋กœ renderํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ ์œ„์˜ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์•„๋ž˜์˜ BitBlt์œผ๋กœ ๊ทธ๋ฆฌ๋ฉด ๋ชจ๋“  ํ”ฝ์…€์„ ์˜ฎ๊ฒจ ์ฐ์Œ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ†ต์งธ๋กœ ์ฐ๊ฒŒ ๋œ๋‹ค.

	BitBlt(_dc
		,int(vPos.x - (float)(width / 2))
		,int(vPos.y - (float)(height / 2))
		,width, height
		, tex->GetDC()
		, 0, 0, SRCCOPY);

 

 

 

๊ทธ๋ ‡๊ธฐ์— ํŠน์ • ์ƒ‰์„ ์ œ์™ธํ•˜๊ณ  ๊ทธ๋ฆฌ๋Š” ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ ์ด๋•Œ ์ด ํŠน์ •์ƒ‰์€ ๋ณดํ†ต RPG(255, 0, 255) ์˜ ๋งˆ์  ํƒ€ ์ƒ‰์„ ์‚ฌ์šฉํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งˆ์  ํƒ€ ์ƒ‰์€ ํ˜„์‹ค์—์„œ ๊ฑฐ์˜ ์•ˆ ์“ฐ๋Š” ์ƒ‰์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

TransparentBlt ํ•จ์ˆ˜๊ฐ€ ํŠน์ • ์ƒ‰์„ ์ œ์™ธํ•˜๊ณ  ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜๋„๋ก ํ•ด๋ผ.

https://blog.naver.com/power2845/50147965306 

 

TransparentBlt ํ•จ์ˆ˜

 ์ด ๋‚ด์šฉ์€ MSDN์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Microsoft Visual C++ 2008 ๊ธฐ์ค€...

blog.naver.com

 

 [ ์ฃผ์˜ ]

์ด ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ ค๋ฉด ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. pch ํŒŒ์ผ์— ์•„๋ž˜๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค!!!

#pragma comment(lib, "Msimg32.lib")

 

๊ฒฐ๊ณผ
๋ฏธ์‚ฌ์ผ๋„ OK

 

 

 

์ง€๊ธˆ๊นŒ์ง€ ํฌ์ŠคํŒ…ํ•œ ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํฌ์ŠคํŒ…์„ ๊ธฐ์ค€์œผ๋กœ ์ปค๋ฐ‹ํ•˜์—ฌ ๋‚˜๋ˆ„์–ด ๋†จ๋‹ค.

https://github.com/MiyeongEom/GameBasic/commits/main/

 

GitHub - MiyeongEom/GameBasic

Contribute to MiyeongEom/GameBasic development by creating an account on GitHub.

github.com

 

 

์‚ฌ์šฉํ•œ ํ…์Šค์ฒ˜ ํŒŒ์ผ๋„ ์œ„์˜ ๊นƒํ—ˆ๋ธŒ์—์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐค๋Ÿฌ๊ทธ์—์„œ ๋”ฐ์˜จ๊ฑด๋ฐ ๋ฐ”ํƒ•์€ ๋‚ด๊ฐ€ ์—ด์‹ฌํžˆ ์ฒ˜๋ฆฌํ•จ..

 


 

 

์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ง  ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์—†์„๊นŒ?

๋งŒ์•ฝ ๋ชฌ์Šคํ„ฐ๋„ ์ด์™€ ๊ฐ™์ด ์ง ๋‹ค๋ฉด, ๋ชฌ์Šคํ„ฐ๋ฅผ ๋ช‡ ์ฒœ๋งˆ๋ฆฌ, ๋ช‡ ๋งŒ๋งˆ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ทธ๋งŒํผ ๋™์ ์œผ๋กœ ํ• ๋‹น๋œ๋‹ค๐Ÿ˜ต๐Ÿ˜ต๐Ÿ˜ต. ์ด๋ ‡๊ฒŒ ๋์„ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋จน๋‹ค๊ฐ€ ์šฉ๋Ÿ‰ ๋ถ€์กฑ์œผ๋กœ ์ฃฝ์„ ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ์ „์— ์ผ๋‹จ ๊ฐ™์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ถˆ๋Ÿฌ ๋งŒ๋“œ๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ํ•„์š”ํ•œ ๊ฒƒ์ด Resource Manager๋‹ค.

์–˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜๋ฉด, ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ๋„ ๊ธˆ๋ฐฉ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌ์กฐ๊ฐ€ ์งœ์—ฌ์„œ ์ข‹๋‹ค.

 

 

'๐Ÿค“ Study > winAPI' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[winAPI 12] Collider(1)  (0) 2024.06.06
[winAPI 11] Resource Manager  (0) 2024.06.06
[winAPI 09] ๊ธฐ์ดˆ ์ˆ˜ํ•™  (0) 2024.06.05
[winAPI 08] Object  (0) 2024.06.05
[winAPI 07] Scene & Scene Manager  (1) 2024.06.04