#ifndef BOO_WIN32COMMON_HPP #define BOO_WIN32COMMON_HPP #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS 1 /* STFU MSVC */ #endif #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif #include #include namespace boo {class IWindow;} #if _WIN32_WINNT_WIN10 #include #include #include struct D3D12Context { ComPtr m_dev; ComPtr m_qalloc[2]; ComPtr m_q; ComPtr m_loadqalloc; ComPtr m_loadq; ComPtr m_frameFence; ComPtr m_rs; struct Window { ComPtr m_swapChain; ComPtr m_fb[2]; /* Double-buffered */ UINT m_backBuf = 0; size_t width, height; }; std::unordered_map m_windows; }; #elif _WIN32_WINNT_WIN7 #include #include #else #error Unsupported Windows target #endif struct D3D11Context { ComPtr m_dev; ComPtr m_devCtx; struct Window { IDXGISwapChain1* m_swapChain; size_t width, height; }; std::unordered_map m_windows; }; #include "boo/System.hpp" struct D3DAppContext { D3D11Context m_ctx11; #if _WIN32_WINNT_WIN10 D3D12Context m_ctx12; #endif ComPtr m_dxFactory; }; struct HWNDEvent { UINT uMsg; WPARAM wParam; LPARAM lParam; HWNDEvent(UINT m, WPARAM w, LPARAM l) : uMsg(m), wParam(w), lParam(l) {} }; #endif // BOO_WIN32COMMON_HPP