Direct2D Simple

#define SAFE_RELEASE(p) if(p) { p->Release(); p = NULL; }
// 2D
ID2D1Factory* g_pD2DFactory = NULL;    // Direct2D factory
ID2D1HwndRenderTarget* g_pD2DRenderTarget = NULL;    // Direct2D render target
ID2D1SolidColorBrush* g_pD2DBlackBrush = NULL;    // A black brush fro Direct2D
RECT g_D2DRect;    // Render area
// Create Direct2D Factory
HRESULT hr;
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &g_pD2DFactory);
if(FAILED(hr))
{
    MessageBoxA(0, "Create D2D Factory Failed!", "Error", 0);
    return;
}
// Create Direct2D Render Target
hr = g_pD2DFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(),
    D2D1::HwndRenderTargetProperties(g_hWnd, D2D1::SizeU(1366, 768)), &g_pD2DRenderTarget);
if(FAILED(hr))
{
    MessageBoxA(0, "Create D2D Render Target failed!", "Error", 0);
    return;
}
// Create D2D Brush
hr = g_pD2DRenderTarget->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Red), &g_pD2DBlackBrush);
if(FAILED(hr))
{
    MessageBoxA(0, "Create D2D Brush Failed!", "Error", 0);
    return;
}
// D2D Draw
g_pD2DRenderTarget->BeginDraw();
g_pD2DRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White)); // Warning: Clear() is Between BeginDraw() and EndDraw()
g_pD2DRenderTarget->DrawRectangle(D2D1::RectF(100.0f, 100.0f, 500.0f, 500.0f), g_pD2DBlackBrush);
HRESULT hr = g_pD2DRenderTarget->EndDraw();
if(FAILED(hr))
{
    MessageBoxA(0, "D2D Draw Failed!", "Error", 0);
    return;
}
// Release Resources
void CleanUp()
{
    SAFE_RELEASE(g_pD2DBlackBrush);
    SAFE_RELEASE(g_pD2DRenderTarget);
    SAFE_RELEASE(g_pD2DFactory);
}
原文地址:https://www.cnblogs.com/ketmales/p/2485071.html