mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
239 lines
6.9 KiB
C++
239 lines
6.9 KiB
C++
/**
|
|
* Production "d3d9.h" file.
|
|
*
|
|
* TODO: Auto-generate this file from internal headers.
|
|
*/
|
|
#ifndef _D3D9_H
|
|
#define _D3D9_H
|
|
#include <windows.h>
|
|
#include <winerror.h>
|
|
#include <unknwn.h>
|
|
|
|
UINT D3D_SDK_VERSION = 0x0900;
|
|
|
|
#define D3DADAPTER_DEFAULT 0
|
|
|
|
//not sure if this goes here.
|
|
/*#define API_ENTER_NO_LOCK() \
|
|
do { \
|
|
InterlockedIncrement(&g_nInsideAPI); \
|
|
} while (false)*/
|
|
|
|
#ifdef _DEBUG
|
|
#define DXGASSERT(exp) do { \
|
|
if (!(exp)) { \
|
|
fprintf(stderr, "Assertion failed: %s, file %s, line %d\n", #exp, __FILE__, __LINE__); \
|
|
abort(); \
|
|
} \
|
|
} while (0)
|
|
#else
|
|
#define DXGASSERT(exp) ((void)0)
|
|
#endif
|
|
|
|
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
|
|
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
|
|
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
|
|
|
|
|
|
typedef enum {
|
|
REF_EXTERNAL = 0,
|
|
REF_INTRINSIC = 1,
|
|
REF_INTERNAL = 2
|
|
|
|
} REF_TYPE;
|
|
/**
|
|
* Defines the various types of surface formats.
|
|
*/
|
|
typedef enum _D3DFORMAT {
|
|
D3DFMT_UNKNOWN = 0,
|
|
|
|
D3DFMT_R8G8B8 = 20,
|
|
D3DFMT_A8R8G8B8 = 21,
|
|
D3DFMT_X8R8G8B8 = 22,
|
|
D3DFMT_R5G6B5 = 23,
|
|
D3DFMT_X1R5G5B5 = 24,
|
|
D3DFMT_A1R5G5B5 = 25,
|
|
D3DFMT_A4R4G4B4 = 26,
|
|
D3DFMT_R3G3B2 = 27,
|
|
D3DFMT_A8 = 28,
|
|
D3DFMT_A8R3G3B2 = 29,
|
|
D3DFMT_X4R4G4B4 = 30,
|
|
D3DFMT_A2B10G10R10 = 31,
|
|
D3DFMT_A8B8G8R8 = 32,
|
|
D3DFMT_X8B8G8R8 = 33,
|
|
D3DFMT_G16R16 = 34,
|
|
D3DFMT_A2R10G10B10 = 35,
|
|
D3DFMT_A16B16G16R16 = 36,
|
|
|
|
D3DFMT_A8P8 = 40,
|
|
D3DFMT_P8 = 41,
|
|
|
|
D3DFMT_L8 = 50,
|
|
D3DFMT_A8L8 = 51,
|
|
D3DFMT_A4L4 = 52,
|
|
|
|
D3DFMT_V8U8 = 60,
|
|
D3DFMT_L6V5U5 = 61,
|
|
D3DFMT_X8L8V8U8 = 62,
|
|
D3DFMT_Q8W8V8U8 = 63,
|
|
D3DFMT_V16U16 = 64,
|
|
D3DFMT_A2W10V10U10 = 67,
|
|
|
|
D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
|
|
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
|
|
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
|
|
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
|
|
D3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
|
|
D3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
|
|
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
|
|
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
|
|
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
|
|
|
|
D3DFMT_D16_LOCKABLE = 70,
|
|
D3DFMT_D32 = 71,
|
|
D3DFMT_D15S1 = 73,
|
|
D3DFMT_D24S8 = 75,
|
|
D3DFMT_D24X8 = 77,
|
|
D3DFMT_D24X4S4 = 79,
|
|
D3DFMT_D16 = 80,
|
|
|
|
D3DFMT_D32F_LOCKABLE = 82,
|
|
D3DFMT_D24FS8 = 83,
|
|
|
|
#if !defined(D3D_DISABLE_9EX)
|
|
D3DFMT_D32_LOCKABLE = 84,
|
|
D3DFMT_S8_LOCKABLE = 85,
|
|
#endif // !D3D_DISABLE_9EX
|
|
|
|
D3DFMT_L16 = 81,
|
|
|
|
D3DFMT_VERTEXDATA =100,
|
|
D3DFMT_INDEX16 =101,
|
|
D3DFMT_INDEX32 =102,
|
|
|
|
D3DFMT_Q16W16V16U16 =110,
|
|
|
|
D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
|
|
|
|
D3DFMT_R16F = 111,
|
|
D3DFMT_G16R16F = 112,
|
|
D3DFMT_A16B16G16R16F = 113,
|
|
|
|
D3DFMT_R32F = 114,
|
|
D3DFMT_G32R32F = 115,
|
|
D3DFMT_A32B32G32R32F = 116,
|
|
|
|
D3DFMT_CxV8U8 = 117,
|
|
|
|
#if !defined(D3D_DISABLE_9EX)
|
|
D3DFMT_A1 = 118,
|
|
D3DFMT_A2B10G10R10_XR_BIAS = 119,
|
|
D3DFMT_BINARYBUFFER = 199,
|
|
#endif // !D3D_DISABLE_9EX
|
|
|
|
D3DFMT_FORCE_DWORD =0x7fffffff
|
|
} D3DFORMAT;
|
|
|
|
/**
|
|
* Defines the levels of full-scene multisampling that the device can apply.
|
|
*/
|
|
typedef enum D3DMULTISAMPLE_TYPE {
|
|
D3DMULTISAMPLE_NONE = 0,
|
|
D3DMULTISAMPLE_NONMASKABLE = 1,
|
|
D3DMULTISAMPLE_2_SAMPLES = 2,
|
|
D3DMULTISAMPLE_3_SAMPLES = 3,
|
|
D3DMULTISAMPLE_4_SAMPLES = 4,
|
|
D3DMULTISAMPLE_5_SAMPLES = 5,
|
|
D3DMULTISAMPLE_6_SAMPLES = 6,
|
|
D3DMULTISAMPLE_7_SAMPLES = 7,
|
|
D3DMULTISAMPLE_8_SAMPLES = 8,
|
|
D3DMULTISAMPLE_9_SAMPLES = 9,
|
|
D3DMULTISAMPLE_10_SAMPLES = 10,
|
|
D3DMULTISAMPLE_11_SAMPLES = 11,
|
|
D3DMULTISAMPLE_12_SAMPLES = 12,
|
|
D3DMULTISAMPLE_13_SAMPLES = 13,
|
|
D3DMULTISAMPLE_14_SAMPLES = 14,
|
|
D3DMULTISAMPLE_15_SAMPLES = 15,
|
|
D3DMULTISAMPLE_16_SAMPLES = 16,
|
|
D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
|
|
} D3DMULTISAMPLE_TYPE, *LPD3DMULTISAMPLE_TYPE;
|
|
|
|
/**
|
|
* Defines swap effects
|
|
*/
|
|
typedef enum D3DSWAPEFFECT {
|
|
D3DSWAPEFFECT_DISCARD = 1,
|
|
D3DSWAPEFFECT_FLIP = 2,
|
|
D3DSWAPEFFECT_COPY = 3,
|
|
D3DSWAPEFFECT_OVERLAY = 4,
|
|
D3DSWAPEFFECT_FLIPEX = 5,
|
|
D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
|
|
} D3DSWAPEFFECT, *LPD3DSWAPEFFECT;
|
|
|
|
/**
|
|
* Describes the presentation parameters.
|
|
*/
|
|
struct D3DPRESENT_PARAMETERS {
|
|
UINT BackBufferWidth;
|
|
UINT BackBufferHeight;
|
|
D3DFORMAT BackBufferFormat;
|
|
UINT BackBufferCount;
|
|
D3DMULTISAMPLE_TYPE MultiSampleType;
|
|
DWORD MultiSampleQuality;
|
|
D3DSWAPEFFECT SwapEffect;
|
|
HWND hDeviceWindow;
|
|
BOOL Windowed;
|
|
BOOL EnableAutoDepthStencil;
|
|
D3DFORMAT AutoDepthStencilFormat;
|
|
DWORD Flags;
|
|
UINT FullScreen_RefreshRateInHz;
|
|
UINT PresentationInterval;
|
|
};
|
|
typedef struct D3DPRESENT_PARAMETERS D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;
|
|
|
|
struct IDirect3DDevice9 : public IUnknown {
|
|
virtual HRESULT QueryInterface(REFIID riid, void** ppvObj);
|
|
virtual ULONG AddRef();
|
|
virtual ULONG Release();
|
|
|
|
// Define other methods required by IDirect3D9 interface
|
|
};
|
|
typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;
|
|
|
|
/**
|
|
* Defines device types
|
|
*/
|
|
typedef enum D3DDEVTYPE {
|
|
D3DDEVTYPE_HAL = 1,
|
|
D3DDEVTYPE_NULLREF = 4,
|
|
D3DDEVTYPE_REF = 2,
|
|
D3DDEVTYPE_SW = 3,
|
|
D3DDEVTYPE_FORCE_DWORD = 0xffffffff
|
|
} D3DDEVTYPE, *LPD3DDEVTYPE;
|
|
|
|
struct IDirect3D9 : public IUnknown {
|
|
IDirect3D9(UINT SDKVersion);
|
|
|
|
HRESULT QueryInterface(REFIID riid, void** ppvObj);
|
|
ULONG AddRef();
|
|
ULONG Release();
|
|
|
|
HRESULT CreateDevice(
|
|
UINT Adapter,
|
|
D3DDEVTYPE DeviceType,
|
|
HWND hFocusWindow,
|
|
DWORD BehaviorFlags,
|
|
D3DPRESENT_PARAMETERS *pPresentationParameters,
|
|
IDirect3DDevice9 **ppReturnedDeviceInterface
|
|
);
|
|
|
|
private:
|
|
DWORD m_cRef;
|
|
|
|
// Define other methods required by IDirect3D9 interface
|
|
};
|
|
typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
|
|
IDirect3D9* Direct3DCreate9(UINT SDKVersion);
|
|
|
|
#endif
|