#pragma once #include #include #include #include #include #include #include #include "Logger.h" #include "d3dx12.h" #define ERRBOX(msg) MessageBoxA(nullptr, std::string(msg).c_str(), "Error!", MB_OK) #define MSGBOX(msg) MessageBoxA(nullptr, std::string(msg).c_str(), "Info", MB_OK) template using ComPtr = Microsoft::WRL::ComPtr; void printCurrentDirectory(); // aktuális környezet elérésének kiírása // GLOBÁLIS WinApi paraméterek struct EntryArgs { HINSTANCE hThisInstance; LPSTR lpszArgs; int nWinMode; void fill(HINSTANCE hThisInstance, LPSTR lpszArgs, int nWinMode); // mezők kitöltése }; extern EntryArgs gEntryArgs; // bináris fájl betöltése egy blobba ComPtr loadBlob(const std::string& fileName); // kiszámítja a mérethez tartozó legkisebb 256-bájtos blokkból álló memóriablokk méretét size_t calc256AlignedSize(size_t origSize); inline std::wstring AnsiToWString(const std::string& str) { WCHAR buffer[512]; MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, buffer, 512); return std::wstring(buffer); } inline std::string WStringToAnsi(const std::wstring& wstr) { std::wstring_convert, wchar_t> converter; return converter.to_bytes(wstr); } // buffer létrehozása az upload heapen inline ComPtr createBuffer_UH(ComPtr device, size_t bufferSize) { ComPtr buffer = nullptr; if (FAILED(device->CreateCommittedResource(&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD), D3D12_HEAP_FLAG_NONE, &CD3DX12_RESOURCE_DESC::Buffer(bufferSize), D3D12_RESOURCE_STATE_GENERIC_READ, nullptr, IID_PPV_ARGS(buffer.GetAddressOf())))) ERRBOX("Failed to create buffer on upload heap!"); return buffer; } // upload heapen elhelyezkedő buffer feltöltése adattal a rendszermemóriából inline void bufferMapCopy(ComPtr bufferResource, void * data, size_t size) { BYTE * mappedData; bufferResource->Map(0, nullptr, reinterpret_cast(&mappedData)); memcpy(mappedData, data, size); bufferResource->Unmap(0, nullptr); } // feltételes transzponálás (ha definiálva van, akkor automatikusan transzponál minden mátrixot) // KÖVETKEZŐ SOR CSAK ITT JÓ!! #define MT_ON #ifdef MT_ON #define MT(m) XMMatrixTranspose(m) #endif #ifndef MT_ON #define MT(m) (m) #endif