⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d3dtypes.h

📁 国外游戏开发者杂志1997年第九期配套代码
💻 H
📖 第 1 页 / 共 3 页
字号:
#if (defined __cplusplus) && (defined D3D_OVERLOADS)
    _D3DVERTEX() { }
    _D3DVERTEX(const D3DVECTOR& v, const D3DVECTOR& n, float _tu, float _tv)
        { x = v.x; y = v.y; z = v.z;
          nx = n.x; ny = n.y; nz = n.z;
          tu = _tu; tv = _tv;
        }
#endif
} D3DVERTEX, *LPD3DVERTEX;

/*
 * Matrix, viewport, and tranformation structures and definitions.
 */

typedef struct _D3DMATRIX {
#if (defined __cplusplus) && (defined D3D_OVERLOADS)
    union {
        struct {
#endif

            D3DVALUE        _11, _12, _13, _14;
            D3DVALUE        _21, _22, _23, _24;
            D3DVALUE        _31, _32, _33, _34;
            D3DVALUE        _41, _42, _43, _44;

#if (defined __cplusplus) && (defined D3D_OVERLOADS)
        };
        D3DVALUE m[4][4];
    };
    _D3DMATRIX() { }
    _D3DMATRIX( D3DVALUE _m00, D3DVALUE _m01, D3DVALUE _m02, D3DVALUE _m03,
                D3DVALUE _m10, D3DVALUE _m11, D3DVALUE _m12, D3DVALUE _m13,
                D3DVALUE _m20, D3DVALUE _m21, D3DVALUE _m22, D3DVALUE _m23,
                D3DVALUE _m30, D3DVALUE _m31, D3DVALUE _m32, D3DVALUE _m33
        ) 
        {
                m[0][0] = _m00; m[0][1] = _m01; m[0][2] = _m02; m[0][3] = _m03;
                m[1][0] = _m10; m[1][1] = _m11; m[1][2] = _m12; m[1][3] = _m13;
                m[2][0] = _m20; m[2][1] = _m21; m[2][2] = _m22; m[2][3] = _m23;
                m[3][0] = _m30; m[3][1] = _m31; m[3][2] = _m32; m[3][3] = _m33;
        }

    D3DVALUE& operator()(int iRow, int iColumn) { return m[iRow][iColumn]; }
    const D3DVALUE& operator()(int iRow, int iColumn) const { return m[iRow][iColumn]; }
#endif
} D3DMATRIX, *LPD3DMATRIX;

typedef struct _D3DVIEWPORT {
    DWORD       dwSize;
    DWORD       dwX;
    DWORD       dwY;		/* Top left */
    DWORD       dwWidth;
    DWORD       dwHeight;	/* Dimensions */
    D3DVALUE    dvScaleX;	/* Scale homogeneous to screen */
    D3DVALUE    dvScaleY;	/* Scale homogeneous to screen */
    D3DVALUE    dvMaxX;		/* Min/max homogeneous x coord */
    D3DVALUE    dvMaxY;		/* Min/max homogeneous y coord */
    D3DVALUE    dvMinZ;
    D3DVALUE    dvMaxZ;		/* Min/max homogeneous z coord */
} D3DVIEWPORT, *LPD3DVIEWPORT;

typedef struct _D3DVIEWPORT2 {
    DWORD       dwSize;
    DWORD       dwX;
    DWORD       dwY;		/* Viewport Top left */
    DWORD       dwWidth;
    DWORD       dwHeight;	/* Viewport Dimensions */
    D3DVALUE    dvClipX;		/* Top left of clip volume */
    D3DVALUE    dvClipY;	
    D3DVALUE    dvClipWidth;	/* Clip Volume Dimensions */
    D3DVALUE    dvClipHeight;
    D3DVALUE    dvMinZ;			/* Min/max of clip Volume */
    D3DVALUE    dvMaxZ;		
} D3DVIEWPORT2, *LPD3DVIEWPORT2;

/*
 * Values for clip fields.
 */
#define D3DCLIP_LEFT				0x00000001L
#define D3DCLIP_RIGHT				0x00000002L
#define D3DCLIP_TOP				0x00000004L
#define D3DCLIP_BOTTOM				0x00000008L
#define D3DCLIP_FRONT				0x00000010L
#define D3DCLIP_BACK				0x00000020L
#define D3DCLIP_GEN0				0x00000040L
#define D3DCLIP_GEN1				0x00000080L
#define D3DCLIP_GEN2				0x00000100L
#define D3DCLIP_GEN3				0x00000200L
#define D3DCLIP_GEN4				0x00000400L
#define D3DCLIP_GEN5				0x00000800L

/*
 * Values for d3d status.
 */
#define D3DSTATUS_CLIPUNIONLEFT			D3DCLIP_LEFT
#define D3DSTATUS_CLIPUNIONRIGHT		D3DCLIP_RIGHT
#define D3DSTATUS_CLIPUNIONTOP			D3DCLIP_TOP
#define D3DSTATUS_CLIPUNIONBOTTOM		D3DCLIP_BOTTOM
#define D3DSTATUS_CLIPUNIONFRONT		D3DCLIP_FRONT
#define D3DSTATUS_CLIPUNIONBACK			D3DCLIP_BACK
#define D3DSTATUS_CLIPUNIONGEN0			D3DCLIP_GEN0
#define D3DSTATUS_CLIPUNIONGEN1			D3DCLIP_GEN1
#define D3DSTATUS_CLIPUNIONGEN2			D3DCLIP_GEN2
#define D3DSTATUS_CLIPUNIONGEN3			D3DCLIP_GEN3
#define D3DSTATUS_CLIPUNIONGEN4			D3DCLIP_GEN4
#define D3DSTATUS_CLIPUNIONGEN5			D3DCLIP_GEN5

#define D3DSTATUS_CLIPINTERSECTIONLEFT		0x00001000L
#define D3DSTATUS_CLIPINTERSECTIONRIGHT		0x00002000L
#define D3DSTATUS_CLIPINTERSECTIONTOP		0x00004000L
#define D3DSTATUS_CLIPINTERSECTIONBOTTOM	0x00008000L
#define D3DSTATUS_CLIPINTERSECTIONFRONT		0x00010000L
#define D3DSTATUS_CLIPINTERSECTIONBACK		0x00020000L
#define D3DSTATUS_CLIPINTERSECTIONGEN0		0x00040000L
#define D3DSTATUS_CLIPINTERSECTIONGEN1		0x00080000L
#define D3DSTATUS_CLIPINTERSECTIONGEN2		0x00100000L
#define D3DSTATUS_CLIPINTERSECTIONGEN3		0x00200000L
#define D3DSTATUS_CLIPINTERSECTIONGEN4		0x00400000L
#define D3DSTATUS_CLIPINTERSECTIONGEN5		0x00800000L
#define D3DSTATUS_ZNOTVISIBLE				0x01000000L
/* Do not use 0x80000000 for any status flags in future as it is reserved */

#define D3DSTATUS_CLIPUNIONALL	(		\
	    D3DSTATUS_CLIPUNIONLEFT	|	\
	    D3DSTATUS_CLIPUNIONRIGHT	|	\
	    D3DSTATUS_CLIPUNIONTOP	|	\
	    D3DSTATUS_CLIPUNIONBOTTOM	|	\
	    D3DSTATUS_CLIPUNIONFRONT	|	\
	    D3DSTATUS_CLIPUNIONBACK	|	\
	    D3DSTATUS_CLIPUNIONGEN0	|	\
	    D3DSTATUS_CLIPUNIONGEN1	|	\
	    D3DSTATUS_CLIPUNIONGEN2	|	\
	    D3DSTATUS_CLIPUNIONGEN3	|	\
	    D3DSTATUS_CLIPUNIONGEN4	|	\
	    D3DSTATUS_CLIPUNIONGEN5		\
	    )

#define D3DSTATUS_CLIPINTERSECTIONALL	(		\
	    D3DSTATUS_CLIPINTERSECTIONLEFT	|	\
	    D3DSTATUS_CLIPINTERSECTIONRIGHT	|	\
	    D3DSTATUS_CLIPINTERSECTIONTOP	|	\
	    D3DSTATUS_CLIPINTERSECTIONBOTTOM	|	\
	    D3DSTATUS_CLIPINTERSECTIONFRONT	|	\
	    D3DSTATUS_CLIPINTERSECTIONBACK	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN0	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN1	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN2	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN3	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN4	|	\
	    D3DSTATUS_CLIPINTERSECTIONGEN5		\
	    )

#define D3DSTATUS_DEFAULT	(			\
	    D3DSTATUS_CLIPINTERSECTIONALL	|	\
	    D3DSTATUS_ZNOTVISIBLE)


/*
 * Options for direct transform calls
 */
#define D3DTRANSFORM_CLIPPED       0x00000001l
#define D3DTRANSFORM_UNCLIPPED     0x00000002l

typedef struct _D3DTRANSFORMDATA {
    DWORD           dwSize;
    LPVOID	    lpIn;           /* Input vertices */
    DWORD           dwInSize;       /* Stride of input vertices */
    LPVOID	    lpOut;          /* Output vertices */
    DWORD           dwOutSize;      /* Stride of output vertices */
    LPD3DHVERTEX    lpHOut;         /* Output homogeneous vertices */
    DWORD           dwClip;         /* Clipping hint */
    DWORD           dwClipIntersection;
    DWORD           dwClipUnion;    /* Union of all clip flags */
    D3DRECT         drExtent;       /* Extent of transformed vertices */
} D3DTRANSFORMDATA, *LPD3DTRANSFORMDATA;

/*
 * Structure defining position and direction properties for lighting.
 */
typedef struct _D3DLIGHTINGELEMENT {
    D3DVECTOR dvPosition;     	    /* Lightable point in model space */
    D3DVECTOR dvNormal;             /* Normalised unit vector */
} D3DLIGHTINGELEMENT, *LPD3DLIGHTINGELEMENT;

/*
 * Structure defining material properties for lighting.
 */
typedef struct _D3DMATERIAL {
    DWORD       	dwSize;
    union {
	D3DCOLORVALUE   diffuse;        /* Diffuse color RGBA */
	D3DCOLORVALUE   dcvDiffuse;
    };
    union {
	D3DCOLORVALUE   ambient;        /* Ambient color RGB */
	D3DCOLORVALUE   dcvAmbient;
    };
    union {
	D3DCOLORVALUE   specular;       /* Specular 'shininess' */
	D3DCOLORVALUE   dcvSpecular;
    };
    union {
	D3DCOLORVALUE	emissive;       /* Emissive color RGB */
	D3DCOLORVALUE	dcvEmissive;
    };
    union {
	D3DVALUE    	power;          /* Sharpness if specular highlight */
	D3DVALUE    	dvPower;
    };
    D3DTEXTUREHANDLE    hTexture;   	/* Handle to texture map */
    DWORD       	dwRampSize;
} D3DMATERIAL, *LPD3DMATERIAL;

typedef enum _D3DLIGHTTYPE {
    D3DLIGHT_POINT          = 1,
    D3DLIGHT_SPOT           = 2,
    D3DLIGHT_DIRECTIONAL    = 3,
    D3DLIGHT_PARALLELPOINT  = 4,
    D3DLIGHT_FORCE_DWORD    = 0x7fffffff, /* force 32-bit size enum */
} D3DLIGHTTYPE;

/*
 * Structure defining a light source and its properties.
 */
typedef struct _D3DLIGHT {
    DWORD           dwSize;
    D3DLIGHTTYPE    dltType;           	/* Type of light source */
    D3DCOLORVALUE   dcvColor;		/* Color of light */
    D3DVECTOR       dvPosition;		/* Position in world space */
    D3DVECTOR       dvDirection;        /* Direction in world space */
    D3DVALUE        dvRange;            /* Cutoff range */
    D3DVALUE        dvFalloff;          /* Falloff */
    D3DVALUE        dvAttenuation0;     /* Constant attenuation */
    D3DVALUE        dvAttenuation1;     /* Linear attenuation */
    D3DVALUE        dvAttenuation2;     /* Quadratic attenuation */
    D3DVALUE        dvTheta;            /* Inner angle of spotlight cone */
    D3DVALUE        dvPhi;              /* Outer angle of spotlight cone */
} D3DLIGHT, *LPD3DLIGHT;

/*
 * Structure defining a light source and its properties.
 */

/* flags bits */
#define D3DLIGHT_ACTIVE			0x00000001
#define D3DLIGHT_NO_SPECULAR	0x00000002

/* maximum valid light range */
#define D3DLIGHT_RANGE_MAX		((float)sqrt(FLT_MAX))

typedef struct _D3DLIGHT2 {
    DWORD           dwSize;
    D3DLIGHTTYPE    dltType;		/* Type of light source */
    D3DCOLORVALUE   dcvColor;		/* Color of light */
    D3DVECTOR       dvPosition;		/* Position in world space */
    D3DVECTOR       dvDirection;	/* Direction in world space */
    D3DVALUE        dvRange;		/* Cutoff range */
    D3DVALUE        dvFalloff;		/* Falloff */
    D3DVALUE        dvAttenuation0;	/* Constant attenuation */
    D3DVALUE        dvAttenuation1;	/* Linear attenuation */
    D3DVALUE        dvAttenuation2;	/* Quadratic attenuation */
    D3DVALUE        dvTheta;		/* Inner angle of spotlight cone */
    D3DVALUE        dvPhi;			/* Outer angle of spotlight cone */
	DWORD			dwFlags;
} D3DLIGHT2, *LPD3DLIGHT2;

typedef struct _D3DLIGHTDATA {
    DWORD                dwSize;
    LPD3DLIGHTINGELEMENT lpIn;		/* Input positions and normals */
    DWORD                dwInSize;	/* Stride of input elements */
    LPD3DTLVERTEX        lpOut;		/* Output colors */
    DWORD                dwOutSize;	/* Stride of output colors */
} D3DLIGHTDATA, *LPD3DLIGHTDATA;

/*
 * Before DX5, these values were in an enum called
 * D3DCOLORMODEL. This was not correct, since they are
 * bit flags. A driver can surface either or both flags
 * in the dcmColorModel member of D3DDEVICEDESC.
 */
#define D3DCOLOR_MONO   1
#define D3DCOLOR_RGB    2

typedef DWORD D3DCOLORMODEL;

/*
 * Options for clearing
 */
#define D3DCLEAR_TARGET            0x00000001l /* Clear target surface */
#define D3DCLEAR_ZBUFFER           0x00000002l /* Clear target z buffer */

/*
 * Execute buffers are allocated via Direct3D.  These buffers may then
 * be filled by the application with instructions to execute along with
 * vertex data.
 */

/*
 * Supported op codes for execute instructions.
 */
typedef enum _D3DOPCODE {
    D3DOP_POINT             	= 1,
    D3DOP_LINE              	= 2,
    D3DOP_TRIANGLE		= 3,
    D3DOP_MATRIXLOAD       	= 4,
    D3DOP_MATRIXMULTIPLY   	= 5,
    D3DOP_STATETRANSFORM      	= 6,
    D3DOP_STATELIGHT      	= 7,
    D3DOP_STATERENDER      	= 8,
    D3DOP_PROCESSVERTICES    	= 9,
    D3DOP_TEXTURELOAD      	= 10,
    D3DOP_EXIT              	= 11,
    D3DOP_BRANCHFORWARD		= 12,
    D3DOP_SPAN			= 13,
    D3DOP_SETSTATUS		= 14,
    D3DOP_FORCE_DWORD           = 0x7fffffff, /* force 32-bit size enum */
} D3DOPCODE;

typedef struct _D3DINSTRUCTION {
    BYTE bOpcode;   /* Instruction opcode */
    BYTE bSize;     /* Size of each instruction data unit */
    WORD wCount;    /* Count of instruction data units to follow */
} D3DINSTRUCTION, *LPD3DINSTRUCTION;

/*
 * Structure for texture loads
 */
typedef struct _D3DTEXTURELOAD {
    D3DTEXTUREHANDLE hDestTexture;
    D3DTEXTUREHANDLE hSrcTexture;
} D3DTEXTURELOAD, *LPD3DTEXTURELOAD;

/*
 * Structure for picking
 */
typedef struct _D3DPICKRECORD {
    BYTE     bOpcode;
    BYTE     bPad;
    DWORD    dwOffset;
    D3DVALUE dvZ;
} D3DPICKRECORD, *LPD3DPICKRECORD;

/*
 * The following defines the rendering states which can be set in the
 * execute buffer.
 */

typedef enum _D3DSHADEMODE {
    D3DSHADE_FLAT              = 1,
    D3DSHADE_GOURAUD           = 2,
    D3DSHADE_PHONG             = 3,
    D3DSHADE_FORCE_DWORD       = 0x7fffffff, /* force 32-bit size enum */
} D3DSHADEMODE;

typedef enum _D3DFILLMODE {
    D3DFILL_POINT	       = 1,
    D3DFILL_WIREFRAME	       = 2,
    D3DFILL_SOLID	       = 3,
    D3DFILL_FORCE_DWORD        = 0x7fffffff, /* force 32-bit size enum */
} D3DFILLMODE;

typedef struct _D3DLINEPATTERN {
    WORD	wRepeatFactor;
    WORD	wLinePattern;
} D3DLINEPATTERN;

typedef enum _D3DTEXTUREFILTER {
    D3DFILTER_NEAREST          = 1,
    D3DFILTER_LINEAR           = 2,
    D3DFILTER_MIPNEAREST       = 3,
    D3DFILTER_MIPLINEAR        = 4,
    D3DFILTER_LINEARMIPNEAREST = 5,
    D3DFILTER_LINEARMIPLINEAR  = 6,
    D3DFILTER_FORCE_DWORD      = 0x7fffffff, /* force 32-bit size enum */
} D3DTEXTUREFILTER;

typedef enum _D3DBLEND {
    D3DBLEND_ZERO              = 1,
    D3DBLEND_ONE               = 2,
    D3DBLEND_SRCCOLOR          = 3,
    D3DBLEND_INVSRCCOLOR       = 4,
    D3DBLEND_SRCALPHA          = 5,
    D3DBLEND_INVSRCALPHA       = 6,
    D3DBLEND_DESTALPHA         = 7,
    D3DBLEND_INVDESTALPHA      = 8,
    D3DBLEND_DESTCOLOR         = 9,
    D3DBLEND_INVDESTCOLOR      = 10,
    D3DBLEND_SRCALPHASAT       = 11,
    D3DBLEND_BOTHSRCALPHA      = 12,
    D3DBLEND_BOTHINVSRCALPHA   = 13,
    D3DBLEND_FORCE_DWORD       = 0x7fffffff, /* force 32-bit size enum */
} D3DBLEND;

typedef enum _D3DTEXTUREBLEND {
    D3DTBLEND_DECAL            = 1,
    D3DTBLEND_MODULATE         = 2,
    D3DTBLEND_DECALALPHA       = 3,
    D3DTBLEND_MODULATEALPHA    = 4,
    D3DTBLEND_DECALMASK        = 5,
    D3DTBLEND_MODULATEMASK     = 6,
    D3DTBLEND_COPY             = 7,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -