75 lines
2.0 KiB
C
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);
|
|
}
|
|
|
|
};
|