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

📄 direct3d.pas

📁 directx 控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
(*
 * The following defines the rendering states which can be set in the
 * execute buffer.
 *)

  PD3DShadeMode = ^TD3DShadeMode;
  TD3DShadeMode = (
    D3DSHADE_INVALID_0,
    D3DSHADE_FLAT,
    D3DSHADE_GOURAUD,
    D3DSHADE_PHONG);

  PD3DFillMode = ^TD3DFillMode;
  TD3DFillMode = (
    D3DFILL_INVALID_0,
    D3DFILL_POINT,
    D3DFILL_WIREFRAME,
    D3DFILL_SOLID);

  PD3DLinePattern = ^TD3DLinePattern;
  TD3DLinePattern = packed record
    wRepeatFactor: WORD;
    wLinePattern: WORD;
  end;

  PD3DTextureFilter = ^TD3DTextureFilter;
  TD3DTextureFilter = (
    D3DFILTER_INVALID_0,
    D3DFILTER_NEAREST,
    D3DFILTER_LINEAR,
    D3DFILTER_MIPNEAREST,
    D3DFILTER_MIPLINEAR,
    D3DFILTER_LINEARMIPNEAREST,
    D3DFILTER_LINEARMIPLINEAR);

  PD3DBlend = ^TD3DBlend;
  TD3DBlend = (
    D3DBLEND_INVALID_0,
    D3DBLEND_ZERO,
    D3DBLEND_ONE,
    D3DBLEND_SRCCOLOR,
    D3DBLEND_INVSRCCOLOR,
    D3DBLEND_SRCALPHA,
    D3DBLEND_INVSRCALPHA,
    D3DBLEND_DESTALPHA,
    D3DBLEND_INVDESTALPHA,
    D3DBLEND_DESTCOLOR,
    D3DBLEND_INVDESTCOLOR,
    D3DBLEND_SRCALPHASAT,
    D3DBLEND_BOTHSRCALPHA,
    D3DBLEND_BOTHINVSRCALPHA);

  PD3DTextureBlend = ^TD3DTextureBlend;
  TD3DTextureBlend = (
    D3DTBLEND_INVALID_0,
    D3DTBLEND_DECAL,
    D3DTBLEND_MODULATE,
    D3DTBLEND_DECALALPHA,
    D3DTBLEND_MODULATEALPHA,
    D3DTBLEND_DECALMASK,
    D3DTBLEND_MODULATEMASK,
    D3DTBLEND_COPY,
    D3DTBLEND_ADD);

  PD3DTextureAddress = ^TD3DTextureAddress;
  TD3DTextureAddress = (
    D3DTADDRESS_INVALID_0,
    D3DTADDRESS_WRAP,
    D3DTADDRESS_MIRROR,
    D3DTADDRESS_CLAMP,
    D3DTADDRESS_BORDER);

  PD3DCull = ^TD3DCull;
  TD3DCull = (
    D3DCULL_INVALID_0,
    D3DCULL_NONE,
    D3DCULL_CW,
    D3DCULL_CCW);

  PD3DCmpFunc = ^TD3DCmpFunc;
  TD3DCmpFunc = (
    D3DCMP_INVALID_0,
    D3DCMP_NEVER,
    D3DCMP_LESS,
    D3DCMP_EQUAL,
    D3DCMP_LESSEQUAL,
    D3DCMP_GREATER,
    D3DCMP_NOTEQUAL,
    D3DCMP_GREATEREQUAL,
    D3DCMP_ALWAYS);

  PD3DStencilOp = ^TD3DStencilOp;
  TD3DStencilOp = (
    D3DSTENCILOP_INVALID_0,
    D3DSTENCILOP_KEEP,
    D3DSTENCILOP_ZERO,
    D3DSTENCILOP_REPLACE,
    D3DSTENCILOP_INCRSAT,
    D3DSTENCILOP_DECRSAT,
    D3DSTENCILOP_INVERT,
    D3DSTENCILOP_INCR,
    D3DSTENCILOP_DECR);
    
  PD3DFogMode = ^TD3DFogMode;
  TD3DFogMode = (
    D3DFOG_NONE,
    D3DFOG_EXP,
    D3DFOG_EXP2,
    D3DFOG_LINEAR);

  PD3DZBufferType = ^TD3DZBufferType;
  TD3DZBufferType = (
    D3DZB_FALSE,
    D3DZB_TRUE,   // Z buffering
    D3DZB_USEW);  // W buffering

  PD3DAntialiasMode = ^TD3DAntialiasMode;
  TD3DAntialiasMode = (
    D3DANTIALIAS_NONE,
    D3DANTIALIAS_SORTDEPENDENT,
    D3DANTIALIAS_SORTINDEPENDENT);

// Vertex types supported by Direct3D
  PD3DVertexType = ^TD3DVertexType;
  TD3DVertexType = (
    D3DVT_INVALID_0,
    D3DVT_VERTEX,
    D3DVT_LVERTEX,
    D3DVT_TLVERTEX);

// Primitives supported by draw-primitive API
  PD3DPrimitiveType = ^TD3DPrimitiveType;
  TD3DPrimitiveType = (
    D3DPT_INVALID_0,
    D3DPT_POINTLIST,
    D3DPT_LINELIST,
    D3DPT_LINESTRIP,
    D3DPT_TRIANGLELIST,
    D3DPT_TRIANGLESTRIP,
    D3DPT_TRIANGLEFAN);

(*
 * Amount to add to a state to generate the override for that state.
 *)

const
  D3DSTATE_OVERRIDE_BIAS          = 256;

(*
 * A state which sets the override flag for the specified state type.
 *)

function D3DSTATE_OVERRIDE(StateType: DWORD) : DWORD;

type
  PD3DTransformStateType = ^TD3DTransformStateType;
  TD3DTransformStateType = DWORD;
const
  D3DTRANSFORMSTATE_WORLD         = 1;
  D3DTRANSFORMSTATE_VIEW          = 2;
  D3DTRANSFORMSTATE_PROJECTION    = 3;
  D3DTRANSFORMSTATE_WORLD1        = 4;  // 2nd matrix to blend
  D3DTRANSFORMSTATE_WORLD2        = 5;  // 3rd matrix to blend
  D3DTRANSFORMSTATE_WORLD3        = 6;  // 4th matrix to blend
  D3DTRANSFORMSTATE_TEXTURE0      = 16;
  D3DTRANSFORMSTATE_TEXTURE1      = 17;
  D3DTRANSFORMSTATE_TEXTURE2      = 18;
  D3DTRANSFORMSTATE_TEXTURE3      = 19;
  D3DTRANSFORMSTATE_TEXTURE4      = 20;
  D3DTRANSFORMSTATE_TEXTURE5      = 21;
  D3DTRANSFORMSTATE_TEXTURE6      = 22;
  D3DTRANSFORMSTATE_TEXTURE7      = 23;

type
  PD3DLightStateType = ^TD3DLightStateType;
  TD3DLightStateType = (
    D3DLIGHTSTATE_INVALID_0,
    D3DLIGHTSTATE_MATERIAL,
    D3DLIGHTSTATE_AMBIENT,
    D3DLIGHTSTATE_COLORMODEL,
    D3DLIGHTSTATE_FOGMODE,
    D3DLIGHTSTATE_FOGSTART,
    D3DLIGHTSTATE_FOGEND,
    D3DLIGHTSTATE_FOGDENSITY,
    D3DLIGHTSTATE_COLORVERTEX);

  PD3DRenderStateType = ^TD3DRenderStateType;
  TD3DRenderStateType = DWORD;
const
    D3DRENDERSTATE_ANTIALIAS          = 2;    (* D3DANTIALIASMODE *)
    D3DRENDERSTATE_TEXTUREPERSPECTIVE = 4;    (* TRUE for perspective correction *)
    D3DRENDERSTATE_ZENABLE            = 7;    (* D3DZBUFFERTYPE (or TRUE/FALSE for legacy) *)
    D3DRENDERSTATE_FILLMODE           = 8;    (* D3DFILL_MODE        *)
    D3DRENDERSTATE_SHADEMODE          = 9;    (* D3DSHADEMODE *)
    D3DRENDERSTATE_LINEPATTERN        = 10;   (* D3DLINEPATTERN *)
    D3DRENDERSTATE_ZWRITEENABLE       = 14;   (* TRUE to enable z writes *)
    D3DRENDERSTATE_ALPHATESTENABLE    = 15;   (* TRUE to enable alpha tests *)
    D3DRENDERSTATE_LASTPIXEL          = 16;   (* TRUE for last-pixel on lines *)
    D3DRENDERSTATE_SRCBLEND           = 19;   (* D3DBLEND *)
    D3DRENDERSTATE_DESTBLEND          = 20;   (* D3DBLEND *)
    D3DRENDERSTATE_CULLMODE           = 22;   (* D3DCULL *)
    D3DRENDERSTATE_ZFUNC              = 23;   (* D3DCMPFUNC *)
    D3DRENDERSTATE_ALPHAREF           = 24;   (* D3DFIXED *)
    D3DRENDERSTATE_ALPHAFUNC          = 25;   (* D3DCMPFUNC *)
    D3DRENDERSTATE_DITHERENABLE       = 26;   (* TRUE to enable dithering *)
    D3DRENDERSTATE_ALPHABLENDENABLE   = 27;   (* TRUE to enable alpha blending *)
    D3DRENDERSTATE_FOGENABLE          = 28;   (* TRUE to enable fog blending *)
    D3DRENDERSTATE_SPECULARENABLE     = 29;   (* TRUE to enable specular *)
    D3DRENDERSTATE_ZVISIBLE           = 30;   (* TRUE to enable z checking *)
    D3DRENDERSTATE_STIPPLEDALPHA      = 33;   (* TRUE to enable stippled alpha (RGB device only) *)
    D3DRENDERSTATE_FOGCOLOR           = 34;   (* D3DCOLOR *)
    D3DRENDERSTATE_FOGTABLEMODE       = 35;   (* D3DFOGMODE *)
    D3DRENDERSTATE_FOGSTART           = 36;   (* Fog start (for both vertex and pixel fog) *)
    D3DRENDERSTATE_FOGEND             = 37;   (* Fog end      *)
    D3DRENDERSTATE_FOGDENSITY         = 38;   (* Fog density  *)
    D3DRENDERSTATE_EDGEANTIALIAS      = 40;   (* TRUE to enable edge antialiasing *)
    D3DRENDERSTATE_COLORKEYENABLE     = 41;   (* TRUE to enable source colorkeyed textures *)
    D3DRENDERSTATE_ZBIAS              = 47;   (* LONG Z bias *)
    D3DRENDERSTATE_RANGEFOGENABLE     = 48;   (* Enables range-based fog *)

    D3DRENDERSTATE_STENCILENABLE      = 52;   (* BOOL enable/disable stenciling *)
    D3DRENDERSTATE_STENCILFAIL        = 53;   (* D3DSTENCILOP to do if stencil test fails *)
    D3DRENDERSTATE_STENCILZFAIL       = 54;   (* D3DSTENCILOP to do if stencil test passes and Z test fails *)
    D3DRENDERSTATE_STENCILPASS        = 55;   (* D3DSTENCILOP to do if both stencil and Z tests pass *)
    D3DRENDERSTATE_STENCILFUNC        = 56;   (* D3DCMPFUNC fn.  Stencil Test passes if ((ref & mask) stencilfn (stencil & mask)) is true *)
    D3DRENDERSTATE_STENCILREF         = 57;   (* Reference value used in stencil test *)
    D3DRENDERSTATE_STENCILMASK        = 58;   (* Mask value used in stencil test *)
    D3DRENDERSTATE_STENCILWRITEMASK   = 59;   (* Write mask applied to values written to stencil buffer *)
    D3DRENDERSTATE_TEXTUREFACTOR      = 60;   (* D3DCOLOR used for multi-texture blend *)

    (*
     * 128 values [128; 255] are reserved for texture coordinate wrap flags.
     * These are constructed with the D3DWRAP_U and D3DWRAP_V macros. Using
     * a flags word preserves forward compatibility with texture coordinates
     * that are >2D.
     *)
    D3DRENDERSTATE_WRAP0              = 128;  (* wrap for 1st texture coord. set *)
    D3DRENDERSTATE_WRAP1              = 129;  (* wrap for 2nd texture coord. set *)
    D3DRENDERSTATE_WRAP2              = 130;  (* wrap for 3rd texture coord. set *)
    D3DRENDERSTATE_WRAP3              = 131;  (* wrap for 4th texture coord. set *)
    D3DRENDERSTATE_WRAP4              = 132;  (* wrap for 5th texture coord. set *)
    D3DRENDERSTATE_WRAP5              = 133;  (* wrap for 6th texture coord. set *)
    D3DRENDERSTATE_WRAP6              = 134;  (* wrap for 7th texture coord. set *)
    D3DRENDERSTATE_WRAP7              = 135;  (* wrap for 8th texture coord. set *)
    D3DRENDERSTATE_CLIPPING            = 136;
    D3DRENDERSTATE_LIGHTING            = 137;
    D3DRENDERSTATE_EXTENTS             = 138;
    D3DRENDERSTATE_AMBIENT             = 139;
    D3DRENDERSTATE_FOGVERTEXMODE       = 140;
    D3DRENDERSTATE_COLORVERTEX         = 141;
    D3DRENDERSTATE_LOCALVIEWER         = 142;
    D3DRENDERSTATE_NORMALIZENORMALS    = 143;
    D3DRENDERSTATE_COLORKEYBLENDENABLE = 144;
    D3DRENDERSTATE_DIFFUSEMATERIALSOURCE    = 145;
    D3DRENDERSTATE_SPECULARMATERIALSOURCE   = 146;
    D3DRENDERSTATE_AMBIENTMATERIALSOURCE    = 147;
    D3DRENDERSTATE_EMISSIVEMATERIALSOURCE   = 148;
    D3DRENDERSTATE_VERTEXBLEND              = 151;
    D3DRENDERSTATE_CLIPPLANEENABLE          = 152;

//
// retired renderstates - not supported for DX7 interfaces
//
    D3DRENDERSTATE_TEXTUREHANDLE      = 1;    (* Texture handle for legacy interfaces (Texture;Texture2) *)
    D3DRENDERSTATE_TEXTUREADDRESS     = 3;    (* D3DTEXTUREADDRESS  *)
    D3DRENDERSTATE_WRAPU              = 5;    (* TRUE for wrapping in u *)
    D3DRENDERSTATE_WRAPV              = 6;    (* TRUE for wrapping in v *)
    D3DRENDERSTATE_MONOENABLE         = 11;   (* TRUE to enable mono rasterization *)
    D3DRENDERSTATE_ROP2               = 12;   (* ROP2 *)
    D3DRENDERSTATE_PLANEMASK          = 13;   (* DWORD physical plane mask *)
    D3DRENDERSTATE_TEXTUREMAG         = 17;   (* D3DTEXTUREFILTER *)
    D3DRENDERSTATE_TEXTUREMIN         = 18;   (* D3DTEXTUREFILTER *)
    D3DRENDERSTATE_TEXTUREMAPBLEND    = 21;   (* D3DTEXTUREBLEND *)
    D3DRENDERSTATE_SUBPIXEL           = 31;   (* TRUE to enable subpixel correction *)
    D3DRENDERSTATE_SUBPIXELX          = 32;   (* TRUE to enable correction in X only *)
    D3DRENDERSTATE_STIPPLEENABLE      = 39;   (* TRUE to enable stippling *)
    D3DRENDERSTATE_BORDERCOLOR        = 43;   (* Border color for texturing w/border *)
    D3DRENDERSTATE_TEXTUREADDRESSU    = 44;   (* Texture addressing mode for U coordinate *)
    D3DRENDERSTATE_TEXTUREADDRESSV    = 45;   (* Texture addressing mode for V coordinate *)
    D3DRENDERSTATE_MIPMAPLODBIAS      = 46;   (* D3DVALUE Mipmap LOD bias *)
    D3DRENDERSTATE_ANISOTROPY         = 49;   (* Max. anisotropy. 1 = no anisotropy *)
    D3DRENDERSTATE_FLUSHBATCH         = 50;   (* Explicit flush for DP batching (DX5 Only) *)
    D3DRENDERSTATE_TRANSLUCENTSORTINDEPENDENT=51; (* BOOL enable sort-independent transparency *)
    D3DRENDERSTATE_STIPPLEPATTERN00   = 64;   (* Stipple pattern 01...  *)
    D3DRENDERSTATE_STIPPLEPATTERN01   = 65;
    D3DRENDERSTATE_STIPPLEPATTERN02   = 66;
    D3DRENDERSTATE_STIPPLEPATTERN03   = 67;
    D3DRENDERSTATE_STIPPLEPATTERN04   = 68;
    D3DRENDERSTATE_STIPPLEPATTERN05   = 69;
    D3DRENDERSTATE_STIPPLEPATTERN06   = 70;
    D3DRENDERSTATE_STIPPLEPATTERN07   = 71;
    D3DRENDERSTATE_STIPPLEPATTERN08   = 72;
    D3DRENDERSTATE_STIPPLEPATTERN09   = 73;
    D3DRENDERSTATE_STIPPLEPATTERN10   = 74;
    D3DRENDERSTATE_STIPPLEPATTERN11   = 75;
    D3DRENDERSTATE_STIPPLEPATTERN12   = 76;
    D3DRENDERSTATE_STIPPLEPATTERN13   = 77;
    D3DRENDERSTATE_STIPPLEPATTERN14   = 78;
    D3DRENDERSTATE_STIPPLEPATTERN15   = 79;
    D3DRENDERSTATE_STIPPLEPATTERN16   = 80;
    D3DRENDERSTATE_STIPPLEPATTERN17   = 81;
    D3DRENDERSTATE_STIPPLEPATTERN18   = 82;
    D3DRENDERSTATE_STIPPLEPATTERN19   = 83;
    D3DRENDERSTATE_STIPPLEPATTERN20   = 84;
    D3DRENDERSTATE_STIPPLEPATTERN21   = 85;
    D3DRENDERSTATE_STIPPLEPATTERN22   = 86;
    D3DRENDERSTATE_STIPPLEPATTERN23   = 87;
    D3DRENDERSTATE_STIPPLEPATTERN24   = 88;
    D3DRENDERSTATE_STIPPLEPATTERN25   = 89;
    D3DRENDERSTATE_STIPPLEPATTERN26   = 90;
    D3DRENDERSTATE_STIPPLEPATTERN27   = 91;
    D3DRENDERSTATE_STIPPLEPATTERN28   = 92;
    D3DRENDERSTATE_STIPPLEPATTERN29   = 93;
    D3DRENDERSTATE_STIPPLEPATTERN30   = 94;
    D3DRENDERSTATE_STIPPLEPATTERN31   = 95;

//
// retired renderstate names - the values are still used under new naming conventions
//
    D3DRENDERSTATE_FOGTABLESTART      = 36;   (* Fog table start    *)
    D3DRENDERSTATE_FOGTABLEEND        = 37;   (* Fog table end      *)
    D3DRENDERSTATE_FOGTABLEDENSITY    = 38;   (* Fog table density  *)

type
// Values for material source
  PD3DMateralColorSource = ^TD3DMateralColorSource;
  TD3DMateralColorSource = (
    D3DMCS_MATERIAL,              // Color from material is used
    D3DMCS_COLOR1,                // Diffuse vertex color is used
    D3DMCS_COLOR2                 // Specular vertex color is used
  );

const
  // For back-compatibility with legacy compilations
  D3DRENDERSTATE_BLENDENABLE = D3DRENDERSTATE_ALPHABLENDENABLE;


// Bias to apply to the texture coordinate set to apply a wrap to.
   D3DRENDERSTATE_WRAPBIAS                = 128;

(* Flags to construct the WRAP render states *)
  D3DWRAP_U   = $00000001;
  D3DWRAP_V   = $00000002;

(* Flags to construct the WRAP render states for 1D thru 4D texture coordinates *)
  D3DWRAPCOORD_0   = $00000001;    // same as D3DWRAP_U
  D3DWRAPCOORD_1   = $00000002;    // same as D3DWRAP_V
  D3DWRAPCOORD_2   = $00000004;
  D3DWRAPCOORD_3   = $00000008;

function D3DRENDERSTATE_STIPPLEPATTERN(y: integer) : TD3DRenderStateType;

type
  PD3DState = ^TD3DState;
  TD3DState = packed record
    case Integer of
    0: (
      dtstTransformStateType: TD3DTransformStateType;
      dwArg: Array [ 0..0 ] of DWORD;
     );
    1: (
      dlstLightStateType: TD3DLightStateType;
      dvArg: Array [ 0..0 ] of TD3DValue;
     );
    2: (
      drstRenderStateType: TD3DRenderStateType;
     );
  end;

(*
 * Operation used to load matrices
 * hDstMat = hSrcMat
 *)
  PD3DMatrixLoad = ^TD3DMatrixLoad;
  TD3DMatrixLoad = packed record
    hDestMatrix: TD3DMatrixHandle;   (* Destination matrix *)
    hSrcMatrix: TD3DMatrixHandle;    (* Source matrix *)
  end;

(*
 * Operation used to multiply matrices
 * hDstMat = hSrcMat1 * hSrcMat2

⌨️ 快捷键说明

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