Unit DXRender

Classes

TDXRMachine -

Functions

dxrDDSurfaceLock -
dxrDDSurfaceUnLock -
dxrDefRenderStates -
dxrDrawIndexedPrimitive -
dxrDrawPointeredPrimitive -
dxrDrawPrimitive - p[1] - p[2]
dxrGetOption - /cpuid
dxrMakeIndexedSurface -
dxrMakeRGBSurface -
dxrScanLine -
dxrSetOption -
dxrZBufferClear -

Types

PDXRMachine_Axis
PDXRMachine_Color
PDXRMachine_Int64
PDXRMachine_Reg_Color
PDXRMachine_Reg_Texture
PDXRMachine_Tree
PDXR_Option
PDXR_Surface
PDXR_TextureLayer
PDXR_Vertex
PPDXR_Vertex
TDXRColorChannel
TDXRColorChannels
TDXRMachine_Axis
TDXRMachine_Color
TDXRMachine_Int64
TDXRMachine_Reg_Axis
TDXRMachine_Reg_Color
TDXRMachine_Reg_RHW
TDXRMachine_Reg_Texture
TDXRMachine_Reg_ZBuffer
TDXRMachine_Tree
TDXRMachine_TreeType
TDXR_Blend
TDXR_CmpFunc
TDXR_Color
TDXR_ColorChannel
TDXR_ColorType
TDXR_Cull
TDXR_Option
TDXR_PrimitiveType
TDXR_RenderStates
TDXR_ShadeMode
TDXR_Surface
TDXR_SurfaceColor
TDXR_TextureAddress
TDXR_TextureFilter
TDXR_TextureLayer
TDXR_TextureLayerBlend
TDXR_Value
TDXR_Vertex

Constants

DXR_MAXTEXTURE

Variables


Functions


function dxrDDSurfaceLock(DDSurface: IDirectDrawSurface; var Surface: TDXR_Surface): Boolean;


procedure dxrDDSurfaceUnLock(DDSurface: IDirectDrawSurface; const Surface: TDXR_Surface);


procedure dxrDefRenderStates(var States: TDXR_RenderStates);


procedure dxrDrawIndexedPrimitive(const Dest: TDXR_Surface; const States: TDXR_RenderStates; PrimitiveType: TDXR_PrimitiveType; VertexList: PDXR_Vertex; VertexCount: DWORD; IndexList: PDWORD; IndexCount: DWORD);


procedure dxrDrawPointeredPrimitive(const Dest: TDXR_Surface; const States: TDXR_RenderStates; PrimitiveType: TDXR_PrimitiveType; VertexList: PPDXR_Vertex; VertexCount: DWORD);


procedure dxrDrawPrimitive(const Dest: TDXR_Surface; const States: TDXR_RenderStates; PrimitiveType: TDXR_PrimitiveType; VertexList: PDXR_Vertex; VertexCount: DWORD);

p[1] - p[2]

function dxrGetOption(Option: TDXR_Option): DWORD;

/cpuid

procedure dxrMakeIndexedSurface(var Surface: TDXR_Surface; Width, Height, BitCount: DWORD; Bits: Pointer; pitch: Integer; idx_index, idx_alpha: DWORD);


procedure dxrMakeRGBSurface(var Surface: TDXR_Surface; Width, Height, BitCount: DWORD; Bits: Pointer; pitch: Integer; rgb_red, rgb_green, rgb_blue, rgb_alpha: DWORD);


function dxrScanLine(const Surface: TDXR_Surface; y: DWORD): Pointer;


procedure dxrSetOption(Option: TDXR_Option; Value: DWORD);


procedure dxrZBufferClear(const Surface: TDXR_Surface);


Types


PDXRMachine_Axis = ^TDXRMachine_Axis

PDXRMachine_Color = ^TDXRMachine_Color

PDXRMachine_Int64 = ^TDXRMachine_Int64

PDXRMachine_Reg_Color = ^TDXRMachine_Reg_Color

PDXRMachine_Reg_Texture = ^TDXRMachine_Reg_Texture

PDXRMachine_Tree = ^TDXRMachine_Tree

PDXR_Option = ^TDXR_Option
TDXR_Option
PDXR_Surface = ^TDXR_Surface
TDXR_Surface
PDXR_TextureLayer = ^TDXR_TextureLayer
TDXR_TextureLayer
PDXR_Vertex = ^TDXR_Vertex
TDXR_Vertex
PPDXR_Vertex = ^PDXR_Vertex

TDXRColorChannel = (chRed, chGreen, chBlue, chAlpha);
Blend color DXR_TREETYPE_BLEND TDXR_Blend Color1 Color2
TDXRColorChannels = set of TDXRColorChannel

TDXRMachine_Axis = record
X : DWORD;
Y : DWORD;
end;

TDXRMachine_Color = record
R : WORD;
G : WORD;
B : WORD;
A : WORD;
end;

TDXRMachine_Int64 = Comp

TDXRMachine_Reg_Axis = record
Axis : TDXRMachine_Axis;
IncEnable : Boolean;
end;

TDXRMachine_Reg_Color = record
Enable : Boolean;
nColor : TDXRMachine_Color;
iColor : TDXRMachine_Color;
Gouraud : Boolean;
Channels : TDXRColorChannels;
end;

TDXRMachine_Reg_RHW = record
Enable : Boolean;
nRHW : TDXRMachine_Int64;
iRHW : TDXRMachine_Int64;
end;

TDXRMachine_Reg_Texture = record
Enable : Boolean;
Surface : PDXR_Surface;
nAxis : TDXRMachine_Axis;
iAxis : TDXRMachine_Axis;
Filter : TDXR_TextureFilter;
ColorKeyEnable : Boolean;
ColorKey : TDXR_SurfaceColor;
Channels : TDXRColorChannels;
TextureAddress : TDXR_TextureAddress;
DefaultColor : TDXR_Color;
end;

TDXRMachine_Reg_ZBuffer = record
Enable : Boolean;
Surface : PDXR_Surface;
CmpFunc : TDXR_CmpFunc;
WriteEnable : Boolean;
end;

TDXRMachine_Tree = record
Typ : TDXRMachine_TreeType;
Channels : TDXRColorChannels;
end;

TDXRMachine_TreeType = (                          
    DXR_TREETYPE_LOADBLACK,      // Load black color
                                 //   DXR_TREETYPE_LOADBLACK
    DXR_TREETYPE_LOADCOLOR,      // Load vertex color
                                 //   DXR_TREETYPE_LOADCOLOR TDXR_Color
    DXR_TREETYPE_LOADTEXEL,      // Load texel
                                 //   DXR_TREETYPE_LOADTEXEL t?
    DXR_TREETYPE_LOADDESTPIXEL,  // Load dest pixel
                                 //   DXR_TREETYPE_LOADDESTPIXEL
    DXR_TREETYPE_BLEND           // Blend color
                                 //   DXR_TREETYPE_BLEND TDXR_Blend
                                 //     Color1
                                 //     Color2
  );
TDXRMachine
TDXR_Blend = (
    DXR_BLEND_ZERO_ZERO,               // r=0
    DXR_BLEND_ZERO_ONE,                // r=c2
    DXR_BLEND_ONE_ZERO,                // r=c1
    DXR_BLEND_ONE_ONE,                 // r=c1+c2
    DXR_BLEND_SRCALPHA_ZERO,           // r=c1*a1
    DXR_BLEND_SRCALPHA_ONE,            // r=c1*a1+c2
    DXR_BLEND_SRCALPHA_INVSRCALPHA,    // r=c1*a1+c2*(1-a2)
    DXR_BLEND_INVSRCALPHA_SRCALPHA,    // r=c1*(1-a1)+c2*a2
    DXR_BLEND_DECAL,                   // r=c1
    DXR_BLEND_DECALALPHA,              // r=c1    ra=a2
    DXR_BLEND_MODULATE,                // r=c1*c2 ra=a2
    DXR_BLEND_MODULATEALPHA,           // r=c1*c2
    DXR_BLEND_ADD                      // r=c1+c2 ra=a2
  );
TDXR_Blend
TDXR_CmpFunc = (
    DXR_CMPFUNC_NEVER,
    DXR_CMPFUNC_LESS,
    DXR_CMPFUNC_EQUAL,
    DXR_CMPFUNC_LESSEQUAL,
    DXR_CMPFUNC_GREATER,
    DXR_CMPFUNC_NOTEQUAL,
    DXR_CMPFUNC_GREATEREQUAL,
    DXR_CMPFUNC_ALWAYS
  );
TDXR_CmpFunc
TDXR_Color = DWORD

TDXR_ColorChannel = record
Mask : DWORD;
BitCount : DWORD;
rshift : DWORD;
lshift : DWORD;
end;
TDXR_ColorChannel
TDXR_ColorType = (
    DXR_COLORTYPE_INDEXED,     // Palette indexed color
    DXR_COLORTYPE_RGB          // RGB color
  );
TDXR_ColorType
TDXR_Cull = (
    DXR_CULL_NONE,
    DXR_CULL_CW,
    DXR_CULL_CCW
  );
TDXR_Cull
TDXR_Option = (
    DXR_OPTION_VERSION,
    DXR_OPTION_MMXENABLE,
    DXR_OPTION_RENDERPRIMITIVES
  );

TDXR_PrimitiveType = (
    DXR_PRIMITIVETYPE_TRIANGLELIST,
    DXR_PRIMITIVETYPE_TRIANGLESTRIP
  );
TDXR_PrimitiveType
TDXR_RenderStates = record
DitherEnable : Boolean;
SpecularEnable : Boolean;
CullMode : TDXR_Cull;
Shade : TDXR_ShadeMode;
TexBlend : TDXR_Blend;
Blend : TDXR_Blend;
TextureEnable : Boolean;
TextureList : array[0..DXR_MAXTEXTURE-1] of TDXR_TextureLayer;
TextureFilter : TDXR_TextureFilter;
ZBuffer : PDXR_Surface;
ZFunc : TDXR_CmpFunc;
ZWriteEnable : Boolean;
end;
TDXR_RenderStates
TDXR_ShadeMode = (
    DXR_SHADEMODE_FLAT,
    DXR_SHADEMODE_GOURAUD
  );
TDXR_ShadeMode
TDXR_Surface = record
ColorType : TDXR_ColorType;
Width : DWORD;
Height : DWORD;
WidthBit : DWORD;
HeightBit : DWORD;
Width2 : DWORD;
Height2 : DWORD;
WidthMask : DWORD;
HeightMask : DWORD;
BitCount : DWORD;
Bits : Pointer;
Pitch : Integer;
PitchBit : Integer;
MipmapChain : PDXR_Surface;
end;

TDXR_SurfaceColor = DWORD

TDXR_TextureAddress = (
    DXR_TEXTUREADDRESS_TILE,           // tx=tx and WidthMask ty=ty and HeightMask
    DXR_TEXTUREADDRESS_DONOTCLIP       // tx=tx               ty=ty
  );
TDXR_TextureAddress
TDXR_TextureFilter = (
    DXR_TEXTUREFILTER_NEAREST,
    DXR_TEXTUREFILTER_LINEAR,
    DXR_TEXTUREFILTER_MIPMAP_NEAREST,
    DXR_TEXTUREFILTER_MIPMAP_LINEAR
  );
TDXR_TextureFilter
TDXR_TextureLayer = record
Surface : PDXR_Surface;
LayerBlend : TDXR_TextureLayerBlend;
Blend : TDXR_Blend;
ColorKeyEnable : Boolean;
ColorKey : TDXR_SurfaceColor;
TextureAddress : TDXR_TextureAddress;
end;

TDXR_TextureLayerBlend = (
    DXR_TEXTURELAYERBLEND_TEXEL,
    DXR_TEXTURELAYERBLEND_LAST
  );
TDXR_TextureLayerBlend
TDXR_Value = Double

TDXR_Vertex = record
sx : TDXR_Value;
sy : TDXR_Value;
sz : TDXR_Value;
rhw : TDXR_Value;
color : TDXR_Color;
specular : TDXR_Color;
tu : array[0..DXR_MAXTEXTURE-1] of TDXR_Value;
tv : array[0..DXR_MAXTEXTURE-1] of TDXR_Value;
end;

Constants

DXR_MAXTEXTURE = 4


Variables