◤ 2022๋…„ 8์›” 25์ผ ๋ชฉ์š”์ผ

● ์–ธ๋ฆฌ์–ผ ๊ณต์‹ ๋Ÿฌ๋‹ (์˜จ๋ผ์ธ ๊ฐ•์ขŒ ์‚ฌ์ดํŠธ)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





์–ธ๋ฆฌ์–ผ ๋Ÿฌ๋‹


◤ 2022๋…„ 8์›” 12์ผ ๊ธˆ์š”์ผ

● 13์ผ์ฐจ (๋‹ค์Œ ์ฃผ 8์›” 19์ผ ๋ฐœํ‘œ)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




# enlightenn (https://www.siliconstudio.co.jp/middleware/enlighten/en/)

# ๋””ํ“จ์ฆˆ (https://kblog.popekim.com/2011/12/04-part-1.html)

# ๊ทธ๋ƒฅ๊ทธ๋Ÿฐ๋ธ”๋กœ๊ทธ (๋ผ์ดํŒ…, ์ด›๋ถˆ ๊ตฌํ˜„?)

# ๋ฆฌํ”Œ๋ ‰์…˜

# Effective Modern ์ดํŽ™ํ‹ฐ๋ธŒ ๋ชจ๋˜ C++ (http://www.yes24.com/Product/Goods/20288684)
    - ํ•ญ๋ชฉ 9,10 ๋ฐœํ‘œ ์ค€๋น„

# ์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++ (http://www.yes24.com/Product/Goods/77669043)

# C++ ํ•ต์‹ฌ ๊ฐ€์ด๋“œ๋ผ์ธ (https://www.cppkorea.org/CppCoreGuidelines/)

# https://fonts.google.com/specimen/Flow+Circular?preview.text=0&preview.text_type=custom

◤ 2022๋…„ 8์›” 11์ผ ๋ชฉ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ ์ˆ˜์—… 12์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.




# UNITE SEOUL 2016 - แ„†แ…ฎแ†ฏแ„…แ…ต แ„€แ…ตแ„‡แ…กแ†ซ แ„‰แ…ฐแ„‹แ…ตแ„ƒแ…ฅแ„‹แ…ด แ„’แ…ฅแ„‹แ…ช แ„‰แ…ตแ†ฏ

◤ 2022๋…„ 8์›” 10์ผ ์ˆ˜์š”์ผ

● ํˆดํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํŒŒ์ผ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ํˆดํ‚ท ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ปดํŒŒ์ผ

https://github.com/microsoft/DirectXTK

๋‹ค์šด๋ฐ›์•„์„œ debug/x64๋กœ ์†”๋ฃจ์…˜ ๋นŒ๋“œ

(C:\Users\stl\Downloads\DirectXTK-main\DirectXTK-main\Bin\Desktop_2022\Win32\Debug)

● C++ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ค„์ด๋Š” ํŒ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# C++ ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์ค„์ด๋Š” ํŒ (MS ๋ธ”๋กœ๊ทธ)
https://devblogs.microsoft.com/cppblog/recommendations-to-speed-c-builds-in-visual-studio/

#include remover

◤ 2022๋…„ 8์›” 8์ผ ์›”์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 10์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ์†Œ๋ฉธ์ž์— virtual์€ ์™œ? ์–ธ์ œ?

◤ 2022๋…„ 8์›” 5์ผ ๊ธˆ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ์Šค 9์ผ์ฐจ ์ˆ˜์—…

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







# 9์ผ์ฐจ

- RTTI ์ฝ”๋“œ ์ถ”๊ฐ€
    
    [Custom RTTI](https://www.notion.so/Custom-RTTI-1dd5033465a64f7db6a8e7200fbc65a0)
    
- ์ฐธ๊ณ  : [https://www.codeproject.com/Tips/1068171/Cplusplus-Custom-RTTI](https://www.codeproject.com/Tips/1068171/Cplusplus-Custom-RTTI)
- ์—”ํ‹ฐํ‹ฐ - ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ ์ ์šฉ
    - [https://gameprogrammingpatterns.com/component.html](https://gameprogrammingpatterns.com/component.html)
- ํŠธ๋žœ์Šคํผ ์ปดํฌ๋„ŒํŠธ ์ถ”๊ฐ€
- ๋ฌผ์ฒด ๋‘๊ฐœ ๊ทธ๋ฆฌ๊ธฐ

The Modernest C++ #4 - ์ปดํฌ๋„ŒํŠธ์™€ ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ํ”„๋กœ๊ทธ๋ž˜๋ฐ ไธŠ
https://gamedevforever.com/m/347

◤ 2022๋…„ 8์›” 4์ผ ๋ชฉ์š”์ผ

● ๊ทธ๋ž˜ํ”ฝ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ 8์ผ์ฐจ ์ˆ˜์—… (๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ์„ค์ •)

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.






# ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ์„ค์ •








# ์‚ฌ์›์ˆ˜ ์›๋ฆฌ (https://www.youtube.com/watch?v=yea8K3D2sxM)

# Lerpf ํ•จ์ˆ˜?

● ํ˜•์‹ ์—ฐ์—ญ? type deduction??

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ˜•์‹์„ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ ์š”์†Œ(์ฃผ๋กœ ๋ณ€์ˆ˜)์˜ ํ˜•์‹์„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ดˆ๊ธฐ์น˜์— ๊ทผ๊ฑฐํ•ด์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์„ ํ”ํžˆ type inference๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. inference๋Š” ํ”ํžˆ ์ถ”๋ก ์ด๋ผ๊ณ  ๋ฒˆ์—ญํ•˜์ง€๋งŒ, ๋ฌธ๋งฅ์— ๋”ฐ๋ผ์„œ๋Š” ‘์ถ”๋ฆฌ’๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด ์ œ ๋ฒˆ์—ญ์„œ ์ธ๊ณต์ง€๋Šฅ: ํ˜„๋Œ€์  ์ ‘๊ทผ๋ฐฉ์‹์—์„œ๋Š” ์ถ”๋ก ์„ inference๋ณด๋‹ค ์ข€ ๋” ํฌ๊ด„์ ์ธ reasoning์—๊ฒŒ ์–‘๋ณดํ•˜๊ณ , inference๋Š” ‘์ถ”๋ฆฌ’๋กœ ๋ฒˆ์—ญํ–ˆ์Šต๋‹ˆ๋‹ค)1.

๊ทธ๋Ÿฐ๋ฐ Effective Modern C++์—์„œ ์ €์ž ์Šค์ฝง ๋งˆ์ด์–ด์Šค(SM)๋Š” ์ผ๊ด€๋˜๊ฒŒ type deduction, ์ฆ‰ ‘ํ˜•์‹ ์—ฐ์—ญ’์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ์—ญ์„œ p.27์ด๋‚˜ p.45๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, SM์ด ์• ์ดˆ์— ํ˜•์‹ ์ถ”๋ก ์ด๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋ชฐ๋ž๋˜ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํŠนํžˆ, p.45๋ฅผ ๋ณด๋ฉด type inference๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์—์„œ “ํ”ํžˆ ์“ฐ์ธ๋‹ค”๋Š” ์ ๋„ ์•Œ๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.   

๊ณ„์† ๋ณด๊ธฐ => https://occamsrazr.net/tt/311



◤ 2022๋…„ 8์›” 1์ผ ์›”์š”์ผ

● Effective Modern C++ ๊ณต๋ถ€ 1์ผ์ฐจ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





1. ํ˜•์‹ ์—ฐ์—ญ(type deduction)์ด๋ž€?

2. ํ…œํ”Œ๋ฆฟ(template)์ด ๋ญ์•ผ?

3. ํƒ€์ž…์ด๋ฆ„(type name)์ด ๋ญ ์–ด์ฉŒ๋ผ๊ณ ?

4. ์—ฐ์—ญ์€ expr์˜ ํ˜•์‹์— ์˜์กดํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ParamType์˜ ํ˜•ํƒœ์—๋„ ์˜์กดํ•œ๋‹ค?


◤ 2022๋…„ 7์›” 31์ผ ์ผ์š”์ผ

● ์–ธ๋ฆฌ์–ผ ์—”์ง„์œผ๋กœ ๋งŒ๋“  ๋ฎค์ง ๋น„์ฅฌ์–ผ๋ผ์ด์ €

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.









◤ 2022๋…„ 7์›” 29์ผ ๊ธˆ์š”์ผ

● DirectXTex ์‚ฌ์šฉ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







๊นƒํ—ˆ๋ธŒ์— ๊ณต๊ฐœ๋œ ์†Œ์Šค๋ฅผ ๋‹ค์šด ๋ฐ›์•„ ์ด์šฉํ•œ๋‹ค
github.com/microsoft/directxtex ์ ‘์†ํ•˜์—ฌ ์ฝ”๋“œํŒŒ์ผ์„ ZIP์œผ๋กœ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.



์••์ถ•์„ ํ’€๊ณ  DirectXTex_Desktop_2022.sln ์†”๋ฃจ์…˜ ํŒŒ์ผ์„ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค๋กœ ์—ด๊ณ  ๋นŒ๋“œ๋ฅผ ํ•ด์ค€๋‹ค.




๋นŒ๋“œ๊ฐ€ ์ž˜ ๋๋‚˜๋ฉด ์œ„์˜ ํด๋”์—์„œ DirectXTex.lib ํŒŒ์ผ์„ ์ด์šฉ์„ ํ•  ๊ฑด๋ฐ..
 




์—ฌ๊ธฐ์— ๋ณต์‚ฌ๋ฅผ ํ•ด์ฃผ๊ณ 



ํ—ค๋” ํŒŒ์ผ์„ ๋ณต์‚ฌํ•ด์„œ..




Include ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ณต์‚ฌํ•ด ์ฃผ์—ˆ๋‹ค


์—”์ง„ ์†์„ฑ์—์„œ DLL๊ณผ LIB ํŒŒ์ผ์„ ๋ถˆ์–ด์˜ฌ ํŒŒ์ผ์„ ์„ค์ •ํ•ด์ฃผ๊ณ ..



ํด๋” ๊ฒฝ๋กœ ์„ค์ •๋„ ํ•ด์ค€๋‹ค



์†์„ฑ์—์„œ C/C++์€ ํ—ค๋” ํŒŒ์ผ์„ ์—ฐ๊ฒฐ, ํฌํ•จํ•ด์ค„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ด ์ค€๋‹ค




C/C++ ์„ค์ •์€ ํ—ค๋”ํŒŒ์ผ, ๋ง์ปค๋Š” dll. lib ์—ฐ๊ฒฐ ์„ค์ •.










ํ”„๋กœ์ ํŠธ์— ํฌํ•จ ์‹œํ‚ฌ ๋•Œ๋Š” ๋งˆ์šฐ์Šค๋กœ ํŒŒ์ผ์„ ๋Œ์–ด๋‹ค๊ฐ€ ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ํด๋” ํŠธ๋ฆฌ ์ฐฝ์— ๋“œ๋ž˜๊ทธ&๋“œ๋กญ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.



ํ…์Šค์ณ ํŒŒ์ผ์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ID3D11ShaderResourceView ์ด์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.



์ฝ”๋“œ ์˜ˆ์ œ.

//by JSHong CodeBlock//
#include "Core.h"
#include "TextureLoader.h"
#include <DirectXTex.h>
#include <Utility/STLException.h>

namespace STL
{
std::unordered_map<std::wstring, ID3D11ShaderResourceView*> TextureLoader::textureMap;

ID3D11ShaderResourceView* TextureLoader::CreateShaderResourceView(ID3D11Device* device, const std::wstring& filename)
{
auto search = textureMap.find(filename);
if (search != textureMap.end())
{
return search->second;
}

std::wstring extension = filename.substr(filename.find_last_of(TEXT(".")) + 1);
std::transform(extension.begin(), extension.end(), extension.begin(), tolower);

static auto basePath = std::filesystem::current_path().parent_path();

auto finalPath = basePath;
finalPath /= "Content\\Textures";
finalPath /= filename;

DirectX::ScratchImage image;
HRESULT hr = E_FAIL;
if (extension == TEXT("tga") || extension == TEXT("targa"))
{
hr = DirectX::LoadFromTGAFile(
finalPath.c_str(),
nullptr,
image
);
}
else
{
hr = DirectX::LoadFromWICFile(
finalPath.c_str(),
DirectX::WIC_FLAGS_NONE,
nullptr,
image
);
}

ThrowIfFailed(hr, "Failed to load scratch image.");

ID3D11Texture2D* texture = nullptr;
hr = DirectX::CreateTexture(
device,
image.GetImages(),
image.GetImageCount(),
image.GetMetadata(),
reinterpret_cast<ID3D11Resource**>(&texture)
);

ThrowIfFailed(hr, "Failed to create texture.");

D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
memset(&srvDesc, 0, sizeof(srvDesc));
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MipLevels = 1;
srvDesc.Format = image.GetMetadata().format;

ID3D11ShaderResourceView* shaderResourceView = nullptr;
hr = device->CreateShaderResourceView(
texture,
&srvDesc,
&shaderResourceView
);

SafeRelease(texture);
ThrowIfFailed(hr, "Failed to shader resource view.");

textureMap.insert({ filename, shaderResourceView });

return shaderResourceView;
}

void TextureLoader::Release()
{
for (auto pair : textureMap)
{
SafeRelease(pair.second);
}
}
}


# ์…ฐ์ด๋” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ ์ฑ… (http://www.yes24.com/Product/Goods/7366949)



◤ 2022๋…„ 7์›” 28์ผ ๋ชฉ์š”์ผ

● ๊นƒํ—ˆ๋ธŒ ๊ณต๋ถ€ํ•ด๋ณด๊ธฐ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.







# TDD ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ
# DDD ๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ(์„ค๊ณ„)
    - ์˜ˆ์ „์— ์ธ๊ธฐ์˜€๋‹ค๊ฐ€ ์‚ฌ์žฅ๋˜๋‹ค๊ฐ€ ๋‹ค์‹œ ๋– ์˜ค๋ฅด๋Š” ๋ฐฉ์‹

# ๊นƒํ—ˆ๋ธŒ ๋ฌด๋ฃŒ ๊ฐ•์ขŒ (https://www.inflearn.com/course/30%EB%B6%84-%EC%8B%9C%EC%A6%8C4-%EA%B9%83%ED%97%88%EB%B8%8C)

#ํ•œ๋น› ์ „์ž์ฑ… https://www.hanbit.co.kr/realtime/



◤ 2022๋…„ 7์›” 27์ผ ์ˆ˜์š”์ผ

● ๊นƒํ—ˆ๋ธŒ ์ฒซ ์‚ฌ์šฉ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# MS์˜ COM๊ตฌ์กฐ๋Š” ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ์—์„œ ํ†ต์ผํ™”๋ฅผ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ.

# ์ˆ™์ œ Effective Modern C++ ํ•ญ๋ชฉ 2 (๋งค์ฃผ ๊ธˆ์š”์ผ ๋ฐœํ‘œ)

# GitHub ๋ ˆํฌ์ง€ํ„ฐ๋ฆฌ ์„ค์ • ๋ฐ ๋™๊ธฐํ™”
    - GitHub Desktop ์„ค์น˜ ๋ฐ ์„ค์ •
    - ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ
    - .gitignore ํŒŒ์ผ ์ˆ˜์ •

◤ 2022๋…„ 7์›” 25์ผ ์›”์š”์ผ

● 7์›” 25์ผ ์›”์š”์ผ

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





# ์–ธ๋ฆฌ์–ผ ๋นŒ๋“œ ํˆด (https://docs.unrealengine.com/4.27/ko/ProductionPipelines/BuildTools/)
    - ๋นŒ๋“œ ํˆด ๊ณต๋ถ€ํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ์Œ

# c++ unicode (ํ…์ŠคํŠธ ์ธ์ฝ”๋”ฉ)
https://www.youtube.com/watch?v=tOHnXt3Ycfo

#๋น„์ฅฌ์–ผ ์ŠคํŠœ๋””์˜ค ์ฝ”๋“œ (์—๋””ํ„ฐ) ์‚ฌ์šฉํ•ด ๋ณผ๊นŒ?

# ์†”๋ฃจ์…˜ ์„ค์ •
    - 'STL_RenderEngineV2'์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ์†”๋ฃจ์…˜ ์ƒ์„ฑ์„ ํ•ด์ฃผ๊ณ 

    - 'Game'๊ณผ 'Engine'์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ํ•ด์ฃผ์—ˆ๋‹ค.

    - Game ๋ฐ Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ [๊ตฌ์„ฑ ์†์„ฑ]-[์ผ๋ฐ˜] ์†์„ฑ์—์„œ '์ถœ๋ ฅ ๋””๋ ‰ํ„ฐ๋ฆฌ'์™€ '์ค‘๊ฐ„ ๋””๋ ‰ํ„ฐ๋ฆฌ' ์„ค์ •์„ ํ•ด์ฃผ์—ˆ๋‹ค

    - Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ๋Š” [์ผ๋ฐ˜]-[๊ตฌ์„ฑ ํ˜•์‹] ์—์„œ '์‹คํ–‰ํŒŒ์ผ'์„ '๋™์  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ'๋กœ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค

    - Engine ํ”„๋กœ์ ํŠธ ์†์„ฑ์—์„œ [๊ตฌ์„ฑ์†์„ฑ]-[C/C++]-[์ „์ฒ˜๋ฆฌ๊ธฐ] ์ „์ฒ˜๋ฆฌ๊ธฐ ์ •์˜์— ENIGNE_BUILD_DLL;๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค

    - Game์ด๋ž€ ํ”„๋กœ์ ํŠธ์™€ Engine์ด๋ž€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค

    - Engine์—๋Š” Sourceํด๋”๋ฅผ ๋งŒ๋“ค๊ณ  Core ํด๋”์™€ Device ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค (์ด๋•Œ ํ•„ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ ๋กœ์ปฌ ํด๋”๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•จ ์ฃผ์˜!)

    - Core์—๋Š” Core.cpp ์™€ Core.h ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ 

    - Device์—๋Š” Window.cpp์™€ Window.h ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค

    - ์ด๋•Œ Device ์šฐํด๋ฆญ ํ›„ ํด๋ž˜์Šค ์ถ”๊ฐ€๋กœ 'Widnows'๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ณ 

    - Windows.cpp ํŒŒ์ผ๊ณผ Windows.h ํŒŒ์ผ์€ ๋งˆ์šฐ์Šค๋กœ ๋Œ์–ด๋‹ค๊ฐ€ Device ํด๋”๋กœ ์˜ฎ๊ฒจ์ฃผ์—ˆ๋‹ค

    - Lib ์—ฐ๋™์„ ์œ„ํ•ด '์„ค์ •'์„ ํ•ด์ฃผ๊ณ 

    - Game ์†์„ฑ์—์„œ๋Š” ์ฐธ์กฐ ์ถ”๊ฐ€๋ฅผ 'Engine'์œผ๋กœ ํ•ด์ฃผ์—ˆ๋‹ค

    - Game ์†์„ฑ [๋งํฌ]์—์„œ ์ถ”๊ฐ€ ์ข…์†์„ฑ ์„ค์ •์„ ํ•˜์—ฌ Engine.lib๋ฅผ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋‹ค

    - Game ์†์„ฑ [์ผ๋ฐ˜]-[์ถ”๊ฐ€ ํฌํ•จ ๋””๋ ‰ํ† ๋ฆฌ]์—์„œ '$(SolutionDir)Engine\Source\'๋ฅผ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋‹ค




















# Engine.Lib ํŒŒ์ผ ๊ตฌ์กฐ
    - LoadLibrary("MyDLL") DLL์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค






์›๋ž˜ ๋”ฐ๋กœ ๋นŒ๋“œ ํ•ด์•ผ ํ•˜์ง€๋งŒ ์ฐธ์กฐ ์„ค์ •์„ ํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ Engine ๋นŒ๋“œ ๋‹ค์‹œ ํ•ด์ฃผ๊ณ  Game ๋นŒ๋“œ๋ฅผ ํ•ด์ค€๋‹ค (์ž๋™ํ™”)





๊ฒฐ๊ณผ


๋นŒ๋“œ๋ฅผ 2๊ฐœ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค!






๊ฐ€๋” ์‹ค์ œ ์˜ค๋ฅ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ 'warning'์ด ๊ท€์ฐฎ์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ๊บผ์ค€๋‹ค. (ใ…‹ใ…‹ใ…‹)





์™ธ๋ถ€์—์„œ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ• ๋•Œ ๋งˆ์šฐ์Šค๋กœ ๋Œ์–ด๋‹ค ๋†“์•„๋„ ๋˜์ง€๋งŒ ์ถ”๊ฐ€ [๊ธฐ์กด ํ•ญ๋ชฉ] ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ฐพ์•„ import๋ฅผ ํ•˜๋Š”๊ฒŒ ์•ˆ์ „(!)ํ•˜๋‹ค.





ํ—ˆ๋ฌดํ•˜์ง€๋งŒ... ์–ด์จŒ๋“  ์ฐฝ ํ•˜๋‚˜ ๋‹ฌ๋ž‘ ๋„์šฐ๊ธฐ ์„ฑ๊ณต ใ… ใ… 




# ์ˆ™์ œ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„ ์ˆ˜ํ•™ ๋ธ”๋กœ๊ทธ' 16๋ฒˆ๊นŒ์ง€ ์ฝ์–ด๋ณด๊ธฐ






◤ 2022๋…„ 7์›” 22์ผ ๊ธˆ์š”์ผ

● ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ์„ค์ •

※ ์ง€๊ทนํžˆ ๊ฐœ์ธ์ ์ธ ์ผ์ƒ ๋ฉ”๋ชจ์™€ ๊ธฐ๋ก์„ ์œ„ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.





 






๋ฐฐ์น˜ ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ง์ปค์˜ ์—ญํ• ์„ ๋Œ€์‹  ํ•ด์ค€๋‹ค


//๋นŒ๋“œ ์ „ ์ด๋ฒคํŠธ not exist "$(OutDir)..\Application" mkdir "$(OutDir)..\Application" if not exist "$(SolutionDir)Lib\Engine\$(Platform)\$(Configuration)" mkdir "$(SolutionDir)Lib\Engine\$(Platform)\$(Configuration)" //๋นŒ๋“œ ํ›„ ์ด๋ฒคํŠธ copy "$(OutDir)Engine.dll" "$(Outdir)..\Application\" copy "$(OutDir)Engine.lib" "$(SolutionDir)Lib\Engine\$(Platform)\$(Configuration)\" Engine.vcxproj ํŒŒ์ผ(xml)์„ ์—ด์–ด์„œ ๋ฉ”๋ชจ์žฅ์—์„œ ์ˆ˜์ •ํ•ด์ค˜๋„ ๋œ๋‹ค.