📄 d3dxcore.h
字号:
///////////////////////////////////////////////////////////////////////////
//
// Copyright (C) Microsoft Corporation. All Rights Reserved.
//
// File: d3dxcore.h
// Content: D3DX core types and functions
//
///////////////////////////////////////////////////////////////////////////
#ifndef __D3DXCORE_H__
#define __D3DXCORE_H__
#include <d3d.h>
#include <limits.h>
#include "d3dxerr.h"
typedef struct ID3DXContext *LPD3DXCONTEXT;
// {9B74ED7A-BBEF-11d2-9F8E-0000F8080835}
DEFINE_GUID(IID_ID3DXContext,
0x9b74ed7a, 0xbbef, 0x11d2, 0x9f, 0x8e, 0x0, 0x0, 0xf8, 0x8, 0x8, 0x35);
///////////////////////////////////////////////////////////////////////////
// Defines and Enumerators used below:
///////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------
// D3DX_DEFAULT:
// ---------
// A predefined value that could be used for any parameter in D3DX APIs or
// member functions that is an enumerant or a handle. The D3DX
// documentation indicates wherever D3DX_DEFAULT may be used,
// and how it will be interpreted in each situation.
//-------------------------------------------------------------------------
#define D3DX_DEFAULT ULONG_MAX
//-------------------------------------------------------------------------
// D3DX_DEFAULT_FLOAT:
// ------------------
// Similar to D3DX_DEFAULT, but used for floating point parameters.
// The D3DX documentation indicates wherever D3DX_DEFAULT_FLOAT may be used,
// and how it will be interpreted in each situation.
//-------------------------------------------------------------------------
#define D3DX_DEFAULT_FLOAT FLT_MAX
//-------------------------------------------------------------------------
// Hardware Acceleration Level:
// ---------------------------
// These constants represent pre-defined hardware acceleration levels,
// and may be used as a default anywhere a (DWORD) deviceIndex is required.
// Each pre-define indicates a different level of hardware acceleration.
// They are an alternative to using explicit deviceIndices retrieved by
// D3DXGetDeviceDescription().
//
// The only case these pre-defines should be used as device indices is if
// a particular level of acceleration is required, and given more than
// one capable device on the computer, it does not matter which one
// is used.
//
// The method of selection is as follows: If one of the D3DX devices on
// the primary DDraw device supports a requested hardware acceleration
// level, it will be used. Otherwise, the first matching device discovered
// by D3DX will be used.
//
// Of course, it is possible for no match to exist for any of the
// pre-defines on a particular computer. Passing such a value into the
// D3DX apis will simply cause them to fail, reporting that no match
// is available.
//
// D3DX_HWLEVEL_NULL: Null implementation (draws nothing)
// D3DX_HWLEVEL_REFERENCE: Reference implementation (slowest)
// D3DX_HWLEVEL_2D: 2D acceleration only (RGB rasterizer used)
// D3DX_HWLEVEL_RASTER: Rasterization acceleration (likely most useful)
// D3DX_HWLEVEL_TL: Transform and lighting acceleration
// D3DX_DEFAULT: The highest level of acceleration available
// on the primary DDraw device.
//-------------------------------------------------------------------------
#define D3DX_HWLEVEL_NULL (D3DX_DEFAULT - 1)
#define D3DX_HWLEVEL_REFERENCE (D3DX_DEFAULT - 2)
#define D3DX_HWLEVEL_2D (D3DX_DEFAULT - 3)
#define D3DX_HWLEVEL_RASTER (D3DX_DEFAULT - 4)
#define D3DX_HWLEVEL_TL (D3DX_DEFAULT - 5)
//-------------------------------------------------------------------------
// Surface Class:
// -------------
// These are the various types of 2D-surfaces classified according to their
// usage. Note that a number of them overlap. e.g. STENCILBUFFERS and
// DEPTHBUFFERS overlap (since in DX7 implementation the stencil and depth
// bits are part of the same pixel format).
//
// Mapping to the DX7 DDPIXELFORMAT concepts:
// -----------------------------------------
// D3DX_SC_DEPTHBUFFER: All ddpfs which have the DDPF_ZPIXELS or the
// DDPF_ZBUFFER flags set.
// D3DX_SC_STENCILBUFFER: All ddpfs which have the DDPF_STENCILBUFFER
// flag set.
// D3DX_SC_BUMPMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
// or the DDPF_BUMPDUDV flags set.
// D3DX_SC_LUMINANCEMAP: All ddpfs which have the DDPF_BUMPLUMINANCE
// or the DDPF_LUMINANCE flags set.
// D3DX_SC_COLORTEXTURE: All the surfaces that have color information in
// them and can be used for texturing.
// D3DX_SC_COLORRENDERTGT: All the surfaces that contain color
// information and can be used as render targets.
//-------------------------------------------------------------------------
#define D3DX_SC_DEPTHBUFFER 0x01
#define D3DX_SC_STENCILBUFFER 0x02
#define D3DX_SC_COLORTEXTURE 0x04
#define D3DX_SC_BUMPMAP 0x08
#define D3DX_SC_LUMINANCEMAP 0x10
#define D3DX_SC_COLORRENDERTGT 0x20
//-------------------------------------------------------------------------
// Surface Formats:
// ---------------
// These are the various types of surface formats that can be enumerated,
// there is no DDPIXELFORMAT structure in D3DX, the enums carry the meaning
// (like FOURCCs).
//
// All the surface classes are represented here.
//
//-------------------------------------------------------------------------
typedef enum _D3DX_SURFACEFORMAT
{
D3DX_SF_UNKNOWN = 0,
D3DX_SF_R8G8B8 = 1,
D3DX_SF_A8R8G8B8 = 2,
D3DX_SF_X8R8G8B8 = 3,
D3DX_SF_R5G6B5 = 4,
D3DX_SF_R5G5B5 = 5,
D3DX_SF_PALETTE4 = 6,
D3DX_SF_PALETTE8 = 7,
D3DX_SF_A1R5G5B5 = 8,
D3DX_SF_X4R4G4B4 = 9,
D3DX_SF_A4R4G4B4 =10,
D3DX_SF_L8 =11, // 8 bit luminance-only
D3DX_SF_A8L8 =12, // 16 bit alpha-luminance
D3DX_SF_U8V8 =13, // 16 bit bump map format
D3DX_SF_U5V5L6 =14, // 16 bit bump map format with luminance
D3DX_SF_U8V8L8 =15, // 24 bit bump map format with luminance
D3DX_SF_UYVY =16, // UYVY format (PC98 compliance)
D3DX_SF_YUY2 =17, // YUY2 format (PC98 compliance)
D3DX_SF_DXT1 =18, // S3 texture compression technique 1
D3DX_SF_DXT3 =19, // S3 texture compression technique 3
D3DX_SF_DXT5 =20, // S3 texture compression technique 5
D3DX_SF_R3G3B2 =21, // 8 bit RGB texture format
D3DX_SF_A8 =22, // 8 bit alpha-only
D3DX_SF_TEXTUREMAX =23, // Last texture format
D3DX_SF_Z16S0 =256,
D3DX_SF_Z32S0 =257,
D3DX_SF_Z15S1 =258,
D3DX_SF_Z24S8 =259,
D3DX_SF_S1Z15 =260,
D3DX_SF_S8Z24 =261,
D3DX_SF_DEPTHMAX =262, // Last depth format
D3DX_SF_FORCEMAX = (DWORD)(-1)
} D3DX_SURFACEFORMAT;
//-------------------------------------------------------------------------
// Filtering types for Texture APIs
//
// -------------
// These are the various filter types for generation of mip-maps
//
// D3DX_FILTERTYPE
// -----------------------------------------
// D3DX_FT_POINT: Point sampling only - no filtering
// D3DX_FT_LINEAR: Bi-linear filtering
//
//-------------------------------------------------------------------------
typedef enum _D3DX_FILTERTYPE
{
D3DX_FT_POINT = 0x01,
D3DX_FT_LINEAR = 0x02,
D3DX_FT_DEFAULT = D3DX_DEFAULT
} D3DX_FILTERTYPE;
///////////////////////////////////////////////////////////////////////////
// Structures used below:
///////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------
// D3DX_VIDMODEDESC: Display mode description.
// ----------------
// width: Screen Width
// height: Screen Height
// bpp: Bits per pixel
// refreshRate: Refresh rate
//-------------------------------------------------------------------------
typedef struct _D3DX_VIDMODEDESC
{
DWORD width;
DWORD height;
DWORD bpp;
DWORD refreshRate;
} D3DX_VIDMODEDESC;
//-------------------------------------------------------------------------
// D3DX_DEVICEDESC: Description of a device that can do 3D
// ---------------
// deviceIndex: Unique (DWORD) number for the device.
// hwLevel: Level of acceleration afforded. This is one of the
// predefined Device Indices, and exists in this
// structure for informational purposes only. More than
// one device on the system may have the same hwLevel.
// To refer to a particular device with the D3DX apis,
// use the value in the deviceIndex member instead.
// ddGuid: The ddraw GUID
// d3dDeviceGuid: Direct3D Device GUID
// ddDeviceID: DDraw's GetDeviceIdentifier GUID. This GUID is unique to
// a particular driver revision on a particular video card.
// driverDesc: String describing the driver
// monitor: Handle to the video monitor used by this device (multimon
// specific). Devices that use different monitors on a
// multimon system report different values in this field.
// Therefore, to test for a multimon system, an application
// should look for more than one different monitor handle in
// the list of D3DX devices.
// onPrimary: Indicates if this device is on the primary monitor
// (multimon specific).
//-------------------------------------------------------------------------
#define D3DX_DRIVERDESC_LENGTH 256
typedef struct _D3DX_DEVICEDESC
{
DWORD deviceIndex;
DWORD hwLevel;
GUID ddGuid;
GUID d3dDeviceGuid;
GUID ddDeviceID;
char driverDesc[D3DX_DRIVERDESC_LENGTH];
HMONITOR monitor;
BOOL onPrimary;
} D3DX_DEVICEDESC;
///////////////////////////////////////////////////////////////////////////
// APIs:
///////////////////////////////////////////////////////////////////////////
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//-------------------------------------------------------------------------
// D3DXInitialize: The very first call a D3DX app must make.
//-------------------------------------------------------------------------
HRESULT WINAPI
D3DXInitialize();
//-------------------------------------------------------------------------
// D3DXUninitialize: The very last call a D3DX app must make.
//-------------------------------------------------------------------------
HRESULT WINAPI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -