◤ 2022๋ 8์ 25์ผ ๋ชฉ์์ผ
● ์ธ๋ฆฌ์ผ ๊ณต์ ๋ฌ๋ (์จ๋ผ์ธ ๊ฐ์ข ์ฌ์ดํธ)
◤ 2022๋ 8์ 12์ผ ๊ธ์์ผ
● 13์ผ์ฐจ (๋ค์ ์ฃผ 8์ 19์ผ ๋ฐํ)
◤ 2022๋ 8์ 11์ผ ๋ชฉ์์ผ
● ๊ทธ๋ํฝ ์์ 12์ผ์ฐจ
◤ 2022๋ 8์ 10์ผ ์์์ผ
● ํดํท ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ปดํ์ผ
● C++ ์ปดํ์ผ ์๊ฐ ์ค์ด๋ ํ
◤ 2022๋ 8์ 8์ผ ์์์ผ
● ๊ทธ๋ํฝ ํ๋ก๊ทธ๋๋ฐ 10์ผ์ฐจ
◤ 2022๋ 8์ 5์ผ ๊ธ์์ผ
● ๊ทธ๋ํฝ์ค 9์ผ์ฐจ ์์
◤ 2022๋ 8์ 4์ผ ๋ชฉ์์ผ
● ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ 8์ผ์ฐจ ์์ (๋ฏธ๋ฆฌ ์ปดํ์ผ ์ค์ )
● ํ์ ์ฐ์ญ? 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์ผ์ฐจ
◤ 2022๋ 7์ 31์ผ ์ผ์์ผ
● ์ธ๋ฆฌ์ผ ์์ง์ผ๋ก ๋ง๋ ๋ฎค์ง ๋น์ฅฌ์ผ๋ผ์ด์
◤ 2022๋ 7์ 29์ผ ๊ธ์์ผ
● DirectXTex ์ฌ์ฉ
//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); } }}
◤ 2022๋ 7์ 28์ผ ๋ชฉ์์ผ
● ๊นํ๋ธ ๊ณต๋ถํด๋ณด๊ธฐ
◤ 2022๋ 7์ 27์ผ ์์์ผ
● ๊นํ๋ธ ์ฒซ ์ฌ์ฉ
◤ 2022๋ 7์ 25์ผ ์์์ผ
● 7์ 25์ผ ์์์ผ
◤ 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)์ ์ด์ด์ ๋ฉ๋ชจ์ฅ์์ ์์ ํด์ค๋ ๋๋ค.















































