2025-11-28 00:35:46 +09:00

75 lines
2.0 KiB
C

//////////////////////////////////////////////////////////////////////
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//////////////////////////////////////////////////////////////////////
#pragma once
const UINT BACK_BUFFER_COUNT = 1;
//-------------------------------------------------------------------
// D3DHelper
//
// Manages the Direct3D device.
//-------------------------------------------------------------------
struct D3DHelper
{
IDirect3D9Ex* m_pD3D;
IDirect3DDevice9Ex* m_pDevice;
D3DPRESENT_PARAMETERS m_d3dpp;
BOOL m_bWindowed;
BOOL m_bInModeChange; // If TRUE, a mode change is in progress.
RECT m_rcWindow;
BOOL m_bAllowHWDevice; // Allow hardware Direct3D device?
BOOL m_bAllowSWDevice; // Allow software Direct3D device?
BOOL m_bDXVA_SW; // Software DXVA-HD device?
HMODULE m_hSWRastDLL;
PVOID m_pfnD3D9GetSWInfo;
D3DHelper() :
m_bWindowed(TRUE),
m_bInModeChange(FALSE),
m_bAllowSWDevice(TRUE),
m_bAllowHWDevice(TRUE),
m_bDXVA_SW(FALSE),
m_pD3D(NULL),
m_pDevice(NULL),
m_hSWRastDLL(NULL),
m_pfnD3D9GetSWInfo(NULL)
{
ZeroMemory(&m_d3dpp, sizeof(m_d3dpp));
SetRectEmpty(&m_rcWindow);
}
~D3DHelper()
{
DestroyD3D9();
}
BOOL InitializeD3D9(HWND hwnd);
BOOL RegisterSoftwareRasterizer();
BOOL ResetDevice(BOOL bChangeWindowMode);
BOOL SetWindowedMode(BOOL bWindowMode);
HRESULT TestCooperativeLevel();
void DestroyD3D9()
{
SafeRelease(&m_pD3D);
SafeRelease(&m_pDevice);
}
};