📄 direct3drm.pas
字号:
(*==========================================================================;
*
* Copyright (C) 1994-1997 Microsoft Corporation. All Rights Reserved.
*
* Files: D3DRMDef.h D3DRMObj.h D3DRM.h D3DRMWin.h RMXFGUID.h RMXFTmpl.h
* Content: Direct3D Retained Mode include files
*
* DirectX 7.0 Delphi adaptation by Erik Unger
*
* Modified: 11-Jan-2000
*
* Download: http://www.delphi-jedi.org/DelphiGraphics/
* E-Mail: Erik.Unger@gmx.at
*
*
***************************************************************************)
unit Direct3DRM;
interface
{$MINENUMSIZE 4}
{$ALIGN ON}
uses
Windows,
DirectDraw,
Direct3D;
var
D3DRMDLL : HMODULE = 0;
(*==========================================================================;
*
* Copyright (C) 1995-1997 Microsoft Corporation. All Rights Reserved.
*
* File: d3drmdef.h
* Content: Direct3DRM include file
*
***************************************************************************)
type
PD3DRMVector4D = ^TD3DRMVector4D;
TD3DRMVector4D = packed record
x, y, z, w: TD3DValue;
end;
PD3DRMMatrix4D = ^TD3DRMMatrix4D;
TD3DRMMatrix4D = array [0..3, 0..3] of TD3DValue;
PD3DRMQuaternion = ^TD3DRMQuaternion;
TD3DRMQuaternion = packed record
s: TD3DValue;
v: TD3DVector;
end;
PD3DRMRay = ^TD3DRMRay;
TD3DRMRay = packed record
dvDir: TD3DVector;
dvPos: TD3DVector;
end;
PD3DRMBox = ^TD3DRMBox;
TD3DRMBox = packed record
min, max: TD3DVector;
end;
TD3DRMWrapCallback = procedure (var lpD3DVector: TD3DVector;
var lpU, lpV: Integer; var lpD3DRMVA, lpD3DRMVB: TD3DVector; lpArg:
Pointer); stdcall; // unused ?
PD3DRMLightType = ^TD3DRMLightType; // is it 16 or 32 bit ?
TD3DRMLightType = (
D3DRMLIGHT_AMBIENT,
D3DRMLIGHT_POINT,
D3DRMLIGHT_SPOT,
D3DRMLIGHT_DIRECTIONAL,
D3DRMLIGHT_PARALLELPOINT
);
PD3DRMShadeMode = ^TD3DRMShadeMode;
TD3DRMShadeMode = WORD;
const
D3DRMSHADE_FLAT = 0;
D3DRMSHADE_GOURAUD = 1;
D3DRMSHADE_PHONG = 2;
D3DRMSHADE_MASK = 7;
D3DRMSHADE_MAX = 8;
type
PD3DRMLightMode = ^TD3DRMLightMode;
TD3DRMLightMode = WORD;
const
D3DRMLIGHT_OFF = 0 * D3DRMSHADE_MAX;
D3DRMLIGHT_ON = 1 * D3DRMSHADE_MAX;
D3DRMLIGHT_MASK = 7 * D3DRMSHADE_MAX;
D3DRMLIGHT_MAX = 8 * D3DRMSHADE_MAX;
type
PD3DRMFillMode = ^TD3DRMFillMode;
TD3DRMFillMode = WORD;
const
D3DRMFILL_POINTS = 0 * D3DRMLIGHT_MAX;
D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX;
D3DRMFILL_SOLID = 2 * D3DRMLIGHT_MAX;
D3DRMFILL_MASK = 7 * D3DRMLIGHT_MAX;
D3DRMFILL_MAX = 8 * D3DRMLIGHT_MAX;
type
PD3DRMRenderQuality = ^TD3DRMRenderQuality;
TD3DRMRenderQuality = DWORD;
const
D3DRMRENDER_WIREFRAME =
(D3DRMSHADE_FLAT + D3DRMLIGHT_OFF + D3DRMFILL_WIREFRAME);
D3DRMRENDER_UNLITFLAT =
(D3DRMSHADE_FLAT + D3DRMLIGHT_OFF + D3DRMFILL_SOLID);
D3DRMRENDER_FLAT =
(D3DRMSHADE_FLAT + D3DRMLIGHT_ON + D3DRMFILL_SOLID);
D3DRMRENDER_GOURAUD =
(D3DRMSHADE_GOURAUD + D3DRMLIGHT_ON + D3DRMFILL_SOLID);
D3DRMRENDER_PHONG =
(D3DRMSHADE_PHONG + D3DRMLIGHT_ON + D3DRMFILL_SOLID);
D3DRMRENDERMODE_BLENDEDTRANSPARENCY = 1;
D3DRMRENDERMODE_SORTEDTRANSPARENCY = 2;
D3DRMRENDERMODE_LIGHTINMODELSPACE = 8;
D3DRMRENDERMODE_VIEWDEPENDENTSPECULAR = 16;
type
PD3DRMTextureQuality = ^TD3DRMTextureQuality;
TD3DRMTextureQuality = (
D3DRMTEXTURE_NEAREST, (* choose nearest texel *)
D3DRMTEXTURE_LINEAR, (* interpolate 4 texels *)
D3DRMTEXTURE_MIPNEAREST, (* nearest texel in nearest mipmap *)
D3DRMTEXTURE_MIPLINEAR, (* interpolate 2 texels from 2 mipmaps *)
D3DRMTEXTURE_LINEARMIPNEAREST, (* interpolate 4 texels in nearest mipmap *)
D3DRMTEXTURE_LINEARMIPLINEAR (* interpolate 8 texels from 2 mipmaps *)
);
const
(*
* Texture flags
*)
D3DRMTEXTURE_FORCERESIDENT = $00000001; (* texture should be kept in video memory *)
D3DRMTEXTURE_STATIC = $00000002; (* texture will not change *)
D3DRMTEXTURE_DOWNSAMPLEPOINT = $00000004; (* point filtering should be used when downsampling *)
D3DRMTEXTURE_DOWNSAMPLEBILINEAR = $00000008; (* bilinear filtering should be used when downsampling *)
D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH = $00000010; (* reduce bit depth when downsampling *)
D3DRMTEXTURE_DOWNSAMPLENONE = $00000020; (* texture should never be downsampled *)
D3DRMTEXTURE_CHANGEDPIXELS = $00000040; (* pixels have changed *)
D3DRMTEXTURE_CHANGEDPALETTE = $00000080; (* palette has changed *)
D3DRMTEXTURE_INVALIDATEONLY = $00000100; (* dirty regions are invalid *)
(*
* Shadow flags
*)
D3DRMSHADOW_TRUEALPHA = $00000001; (* shadow should render without artifacts when true alpha is on *)
type
PD3DRMCombineType = ^TD3DRMCombineType;
TD3DRMCombineType = (
D3DRMCOMBINE_REPLACE,
D3DRMCOMBINE_BEFORE,
D3DRMCOMBINE_AFTER
);
PD3DRMColorModel = ^TD3DRMColorModel;
TD3DRMColorModel = TD3DColorModel;
PD3DRMPaletteFlags = ^TD3DRMPaletteFlags;
TD3DRMPaletteFlags = (
D3DRMPALETTE_FREE, (* renderer may use this entry freely *)
D3DRMPALETTE_READONLY, (* fixed but may be used by renderer *)
D3DRMPALETTE_RESERVED (* may not be used by renderer *)
);
PD3DRMPaletteEntry = ^TD3DRMPaletteEntry;
TD3DRMPaletteEntry = packed record
red: Byte; (* 0 .. 255 *)
green: Byte; (* 0 .. 255 *)
blue: Byte; (* 0 .. 255 *)
flags: Byte; (* one of D3DRMPALETTEFLAGS *)
end;
PD3DRMImage = ^TD3DRMImage;
TD3DRMImage = packed record
width, height: Integer; (* width and height in pixels *)
aspectx, aspecty: Integer; (* aspect ratio for non-square pixels *)
depth: Integer; (* bits per pixel *)
rgb: Integer; (* if false, pixels are indices into a
palette otherwise, pixels encode
RGB values. *)
bytes_per_line: Integer; (* number of bytes of memory for a
scanline. This must be a multiple
of 4. *)
buffer1: Pointer; (* memory to render into (first buffer). *)
buffer2: Pointer; (* second rendering buffer for double
buffering, set to NULL for single
buffering. *)
red_mask: DWORD;
green_mask: DWORD;
blue_mask: DWORD;
alpha_mask: DWORD; (* if rgb is true, these are masks for
the red, green and blue parts of a
pixel. Otherwise, these are masks
for the significant bits of the
red, green and blue elements in the
palette. For instance, most SVGA
displays use 64 intensities of red,
green and blue, so the masks should
all be set to = $fc. *)
palette_size: Integer; (* number of entries in palette *)
palette: PD3DRMPaletteEntry; (* description of the palette (only if
rgb is false). Must be (1<<depth)
elements. *)
end;
PD3DRMWrapType = ^TD3DRMWrapType;
TD3DRMWrapType = (
D3DRMWRAP_FLAT,
D3DRMWRAP_CYLINDER,
D3DRMWRAP_SPHERE,
D3DRMWRAP_CHROME,
D3DRMWRAP_SHEET,
D3DRMWRAP_BOX
);
const
D3DRMWIREFRAME_CULL = 1; (* cull backfaces *)
D3DRMWIREFRAME_HIDDENLINE = 2; (* lines are obscured by closer objects *)
type
(*
* Do not use righthanded perspective in Viewport2::SetProjection().
* Set up righthanded mode by using IDirect3DRM3::SetOptions().
*)
PD3DRMProjectionType = ^TD3DRMProjectionType;
TD3DRMProjectionType = (
D3DRMPROJECT_PERSPECTIVE,
D3DRMPROJECT_ORTHOGRAPHIC,
D3DRMPROJECT_RIGHTHANDPERSPECTIVE, (* Only valid pre-DX6 *)
D3DRMPROJECT_RIGHTHANDORTHOGRAPHIC (* Only valid pre-DX6 *)
);
const
D3DRMOPTIONS_LEFTHANDED = 00000001; (* Default *)
D3DRMOPTIONS_RIGHTHANDED = 00000002;
type
PD3DRMXOFFormat = ^TD3DRMXOFFormat;
TD3DRMXOFFormat = (
D3DRMXOF_BINARY,
D3DRMXOF_COMPRESSED,
D3DRMXOF_TEXT
);
TD3DRMSaveOptions = DWORD;
const
D3DRMXOFSAVE_NORMALS = 1;
D3DRMXOFSAVE_TEXTURECOORDINATES = 2;
D3DRMXOFSAVE_MATERIALS = 4;
D3DRMXOFSAVE_TEXTURENAMES = 8;
D3DRMXOFSAVE_ALL = 15;
D3DRMXOFSAVE_TEMPLATES = 16;
D3DRMXOFSAVE_TEXTURETOPOLOGY = 32;
type
PD3DRMColorSource = ^TD3DRMColorSource;
TD3DRMColorSource = (
D3DRMCOLOR_FROMFACE,
D3DRMCOLOR_FROMVERTEX
);
PD3DRMFrameConstraint = ^TD3DRMFrameConstraint;
TD3DRMFrameConstraint = (
D3DRMCONSTRAIN_Z, (* use only X and Y rotations *)
D3DRMCONSTRAIN_Y, (* use only X and Z rotations *)
D3DRMCONSTRAIN_X (* use only Y and Z rotations *)
);
PD3DRMMaterialMode = ^TD3DRMMaterialMode;
TD3DRMMaterialMode = (
D3DRMMATERIAL_FROMMESH,
D3DRMMATERIAL_FROMPARENT,
D3DRMMATERIAL_FROMFRAME
);
PD3DRMFogMode = ^TD3DRMFogMode;
TD3DRMFogMode = (
D3DRMFOG_LINEAR, (* linear between start and end *)
D3DRMFOG_EXPONENTIAL, (* density * exp(-distance) *)
D3DRMFOG_EXPONENTIALSQUARED (* density * exp(-distance*distance) *)
);
PD3DRMZBufferMode = ^TD3DRMZBufferMode;
TD3DRMZBufferMode = (
D3DRMZBUFFER_FROMPARENT, (* default *)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -