亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dxrender.pas

?? 傳奇源代碼的delphi版本
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit DXRender;

interface

{$INCLUDE DelphiXcfg.inc}

uses
  Windows,
{$IfDef StandardDX}
  DirectDraw,
  {$ifdef DX7}
  Direct3D;
  {$endif}
  {$IfDef DX9}
  Direct3D9, Direct3D, D3DX9, {Direct3D8,} DX7toDX8;
//  {$Else}
//  {$IfDef DX81}
//  D3DX8, DirectXGraphics, DX7toDX8;
//  {$Else}
//   Direct3DRM;
//  {$EndIf}
  {$EndIf}
{$Else}
  DirectX;
{$EndIf}

const
  DXR_MAXTEXTURE = 4;

type
  TDXR_Value = Double;

  TDXR_Color = DWORD;
  TDXR_SurfaceColor = DWORD;

  {  TDXR_Option  }

  PDXR_Option = ^TDXR_Option;
  TDXR_Option = (
    DXR_OPTION_VERSION,
    DXR_OPTION_MMXENABLE,
    DXR_OPTION_RENDERPRIMITIVES
  );                            

  {  TDXR_ShadeMode  }

  TDXR_ShadeMode = (
    DXR_SHADEMODE_FLAT,
    DXR_SHADEMODE_GOURAUD
  );

  {  TDXR_Blend  }

  TDXR_Blend = (
    // for blending
    DXR_BLEND_ZERO,                        // r=0
    DXR_BLEND_ONE1,                        // r=c1
    DXR_BLEND_ONE2,                        // r=c2
    DXR_BLEND_ONE1_ADD_ONE2,               // r=c1+c2
    DXR_BLEND_ONE1_SUB_ONE2,               // r=c1-c2
    DXR_BLEND_ONE2_SUB_ONE1,               // r=c2-c1
    DXR_BLEND_ONE1_MUL_ONE2,               // r=c1*c2
    DXR_BLEND_SRCALPHA1,                   // r=c1*a1
    DXR_BLEND_SRCALPHA1_ADD_ONE2,          // r=c1*a1+c2
    DXR_BLEND_ONE2_SUB_SRCALPHA1,          // r=c2-c1*a1
    DXR_BLEND_SRCALPHA1_ADD_INVSRCALPHA2,  // r=c1*a1+c2*(1-a2)
    DXR_BLEND_INVSRCALPHA1_ADD_SRCALPHA2,  // r=c1*(1-a1)+c2*a2
    // for lighting
    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_TextureFilter  }

  TDXR_TextureFilter = (
    DXR_TEXTUREFILTER_NEAREST,
    DXR_TEXTUREFILTER_LINEAR,
    DXR_TEXTUREFILTER_MIPMAP_NEAREST,
    DXR_TEXTUREFILTER_MIPMAP_LINEAR
  );

  {  TDXR_TextureAddress  }

  TDXR_TextureAddress = (
    DXR_TEXTUREADDRESS_TILE,           // tx=tx and WidthMask ty=ty and HeightMask
    DXR_TEXTUREADDRESS_DONOTCLIP       // tx=tx               ty=ty
  );

  {  TDXR_CmpFunc  }

  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_ColorType  }

  TDXR_ColorType = (
    DXR_COLORTYPE_INDEXED,     // Palette indexed color
    DXR_COLORTYPE_RGB          // RGB color
  );

  {  TDXR_ColorChannel  }

  TDXR_ColorChannel = record
    Mask: DWORD;                // Bit Mask
    BitCount: DWORD;            // Number of bit
    rshift: DWORD;
    lshift: DWORD;
  end;

  {  TDXR_Surface  }

  PDXR_Surface = ^TDXR_Surface;
  TDXR_Surface = record
    ColorType: TDXR_ColorType;   // Color type
    Width, Height: DWORD;        // Size of surface
    WidthBit, HeightBit: DWORD;  // Size of surface (Number of bit)
    Width2, Height2: DWORD;      // 1 shl WidthBit, 1 shl HeightBit
    WidthMask, HeightMask: DWORD;// Bit Mask of size of surface
    BitCount: DWORD;             // BitCount per Pixel(1, 2, 4, 8, 16, 24, 32 only)
    Bits: Pointer;               // Pointer to pixeldata(x:0 y:0)
    Pitch: Integer;              // Offset of next scanline
    PitchBit: Integer;           // Offset of next scanline (Number of bit)
    MipmapChain: PDXR_Surface;
    case Integer of
      0: (
        { Indexed color }
        idx_index: TDXR_ColorChannel;  // Index channel
        idx_alpha: TDXR_ColorChannel;  // Alpha channel
        idx_palette: array[0..255] of TPaletteEntry;
                                       // Palette
      );
      1: (
        { RGB color }
        rgb_red: TDXR_ColorChannel;    // Red channel
        rgb_green: TDXR_ColorChannel;  // Green channel
        rgb_blue: TDXR_ColorChannel;   // Blue channel
        rgb_alpha: TDXR_ColorChannel;  // Alpha channel
      );
  end;

  {  TDXR_Vertex  }

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

  PPDXR_Vertex = ^PDXR_Vertex;

  {  TDXR_PrimitiveType  }

  TDXR_PrimitiveType = (
    DXR_PRIMITIVETYPE_TRIANGLELIST,
    DXR_PRIMITIVETYPE_TRIANGLESTRIP
  );

  {  TDXR_TextureLayerBlend  }

  TDXR_TextureLayerBlend = (
    DXR_TEXTURELAYERBLEND_TEXTURE,
    DXR_TEXTURELAYERBLEND_LAST,
    DXR_TEXTURELAYERBLEND_NOBLEND
  );

  {  TDXR_TextureLayer  }

  PDXR_TextureLayer = ^TDXR_TextureLayer;
  TDXR_TextureLayer = record
    Surface: PDXR_Surface;
    LayerBlend: TDXR_TextureLayerBlend;
    Blend: TDXR_Blend;
    ColorKeyEnable: Boolean;
    ColorKey: TDXR_SurfaceColor;
    TextureAddress: TDXR_TextureAddress;
    BumpTexture: Integer;
  end;

  {  TDXR_Cull  }

  TDXR_Cull = (
    DXR_CULL_NONE,
    DXR_CULL_CW,
    DXR_CULL_CCW
  );

  {  TDXR_RenderStates  }

  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;
    EnableDrawLine: Integer;
  end;

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

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 dxrZBufferClear(const Surface: TDXR_Surface);

function dxrDDSurfaceLock(DDSurface: IDirectDrawSurface; var Surface: TDXR_Surface): Boolean;
function dxrDDSurfaceLock2(DDSurface: IDirectDrawSurface; var ddsd: TDDSurfaceDesc;
  var Surface: TDXR_Surface): Boolean;
procedure dxrDDSurfaceUnLock(DDSurface: IDirectDrawSurface; const Surface: TDXR_Surface);

procedure dxrDefRenderStates(var States: TDXR_RenderStates);

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

procedure dxrCopyRectBlend(const Dest, Src: TDXR_Surface;
  const DestRect, SrcRect: TRect; Blend: TDXR_Blend; Alpha: Integer;
  ColorKeyEnable: Boolean; ColorKey: DWORD);

procedure dxrFillRectColorBlend(const Dest: TDXR_Surface;
  const DestRect: TRect; Blend: TDXR_Blend; Col: COLORREF);

procedure dxrDrawWaveXBlend(const Dest, Src: TDXR_Surface;
  X, Y, Width, Height: Integer; const SrcRect: TRect; amp, Len, ph: Integer;
  Blend: TDXR_Blend; Alpha: Integer;
  ColorKeyEnable: Boolean; ColorKey: DWORD);

procedure dxrDrawRotateBlend(const Dest, Src: TDXR_Surface;
  X, Y, Width, Height: Integer; const SrcRect: TRect; CenterX, CenterY: Double;
  Angle: Integer; Blend: TDXR_Blend; Alpha: Integer;
  ColorKeyEnable: Boolean; ColorKey: DWORD);

implementation

const
  TextureAxisFloatBit = 16;
  TextureAxisFloat = 1 shl TextureAxisFloatBit;

  ColorFloatBit = 8;
  ColorFloat = 1 shl ColorFloatBit;
               
type

  PInteger = ^Integer;

//  {  TDXR_CmpFunc  }
//
//  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
//  );

  {  TDXRMachine  }

  TDXRMachine_TreeType = (
    DXR_TREETYPE_LOADBLACK,      // Load black color
    DXR_TREETYPE_LOADCOLOR,      // Load vertex color
    DXR_TREETYPE_LOADCONSTCOLOR, // Load constant color
    DXR_TREETYPE_LOADTEXTURE,    // Load texel
    DXR_TREETYPE_LOADBUMPTEXTURE,// Load texel with Bump mapping
                                 //   dx := nx + (BumpTexture[nx-1, ny]-BumpTexture[nx+1, ny]);
                                 //   dy := ny + (BumpTexture[nx, ny-1]-BumpTexture[nx, ny+1]);
    DXR_TREETYPE_LOADDESTPIXEL,  // Load dest pixel
    DXR_TREETYPE_BLEND           // Blend color
  );

  TDXRColorChannel = (chRed, chGreen, chBlue, chAlpha);
  TDXRColorChannels = set of TDXRColorChannel;

  PDXRMachine_Color = ^TDXRMachine_Color;
  TDXRMachine_Color = packed record
    R, G, B, A: WORD;
  end;

  PDXRMachine_Axis = ^TDXRMachine_Axis;
  TDXRMachine_Axis = packed record
    X, Y: Integer;
  end;

  PDXRMachine_Int64 = ^TDXRMachine_Int64;
  TDXRMachine_Int64 = Comp;

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

  PDXRMachine_Reg_Texture = ^TDXRMachine_Reg_Texture;
  TDXRMachine_Reg_Texture = record
    Enable: Boolean;
    Surface: PDXR_Surface;
    nAxis: TDXRMachine_Axis;
    iAxis: TDXRMachine_Axis;
    iAxisConstant: Boolean;
    Filter: TDXR_TextureFilter;
    ColorKeyEnable: Boolean;
    ColorKey: TDXR_SurfaceColor;
    EnableChannels: TDXRColorChannels;
    TextureAddress: TDXR_TextureAddress;
    DefaultColor: TDXRMachine_Color;
  end;

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

  TDXRMachine_Reg_Dither = record
    Enable: Boolean;
  end;

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

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

  PDXRMachine_Tree = ^TDXRMachine_Tree;
  TDXRMachine_Tree = record
    Typ: TDXRMachine_TreeType;
    Channels: TDXRColorChannels;
    case TDXRMachine_TreeType of
      DXR_TREETYPE_LOADBLACK: (
        );
      DXR_TREETYPE_LOADCOLOR: (
        Color: Integer
        );
      DXR_TREETYPE_LOADCONSTCOLOR: (
        ConstColor: TDXRMachine_Color;
        );
      DXR_TREETYPE_LOADTEXTURE: (
        Texture: Integer
        );
      DXR_TREETYPE_LOADBUMPTEXTURE: (
        _Texture: Integer;
        BumpTexture: Integer;
        );
      DXR_TREETYPE_LOADDESTPIXEL: (
        );
      DXR_TREETYPE_BLEND: (
        Blend: TDXR_Blend;
        BlendTree1: PDXRMachine_Tree;
        BlendTree2: PDXRMachine_Tree;
        );
  end;

  TDXRMachine = class
  private
    FBuf: Pointer;
    FCall: Pointer;
    FCompiled: Boolean;
    FTreeCount: Integer;
    FTreeList: array[0..127] of TDXRMachine_Tree;
    FMMXUsed: Boolean;
    F_ZBuf: Pointer;
    F_BiLinearAxis: TDXRMachine_Axis;
    F_BiLinearCol1: TDXRMachine_Color;
    F_BiLinearCol2: TDXRMachine_Color;
    F_BiLinearCol3: TDXRMachine_Color;
    F_BiLinearCol4: TDXRMachine_Color;
    F_BumpAxis: TDXRMachine_Axis;
    F_BumpAxis2: TDXRMachine_Axis;
    F_BumpTempCol: DWORD;
    FStack: array[0..255] of TDXRMachine_Color;
    procedure GenerateCode(var Code: Pointer; Tree: PDXRMachine_Tree);
  public
    Dest: PDXR_Surface;
    ColorList: array[0..7] of TDXRMachine_Reg_Color;
    ColorIndex: array[0..7] of Integer;
    ColorIndexCount: Integer;
    TextureList: array[0..7] of TDXRMachine_Reg_Texture;
    TextureIndex: array[0..7] of Integer;
    TextureIndexCount: Integer;
    Dither: TDXRMachine_Reg_Dither;
    ZBuffer: TDXRMachine_Reg_ZBuffer;
    Axis: TDXRMachine_Reg_Axis;
    RHW: TDXRMachine_Reg_RHW;
    constructor Create;
    destructor Destroy; override;
    function CreateTree: PDXRMachine_Tree;
    function CreateTree2(Typ: TDXRMachine_TreeType): PDXRMachine_Tree;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91影院在线免费观看| 91麻豆精品在线观看| 中文字幕佐山爱一区二区免费| 欧美片在线播放| 国产98色在线|日韩| 日本不卡视频一二三区| 中文字幕第一页久久| 日韩免费视频一区| 欧美图片一区二区三区| 成人av免费观看| 久久精品国产精品亚洲综合| 一区二区三区在线视频观看58 | 99热国产精品| 另类小说色综合网站| 一区二区免费视频| 国产精品电影院| 欧美极品aⅴ影院| 欧美成人乱码一区二区三区| 欧美视频完全免费看| 94色蜜桃网一区二区三区| 国产毛片一区二区| 狠狠色狠狠色综合| 亚洲成人动漫在线观看| 亚洲丝袜美腿综合| 国产精品短视频| 国产精品美女久久久久久久网站| 欧美电影精品一区二区| 欧美一级xxx| 欧美日产在线观看| 欧美日韩成人在线一区| 在线观看欧美日本| 欧美中文字幕亚洲一区二区va在线| 成人国产精品免费观看| 国产成人在线网站| 粉嫩aⅴ一区二区三区四区 | 一区二区不卡在线视频 午夜欧美不卡在| 国产亚洲短视频| 国产亚洲一本大道中文在线| 久久人人97超碰com| 久久久精品天堂| 久久青草国产手机看片福利盒子| 欧美精品一区二区三区很污很色的 | 国产成人啪午夜精品网站男同| 麻豆一区二区三| 黄一区二区三区| 国产成人丝袜美腿| www.日韩av| 色www精品视频在线观看| 欧美亚洲综合一区| 欧美美女一区二区在线观看| 91精品久久久久久久久99蜜臂| 日韩一区和二区| 欧美精品一区二区三区在线 | 国产精品色哟哟| 最新高清无码专区| 一二三四区精品视频| 亚洲第四色夜色| 九九九久久久精品| 国产激情91久久精品导航| www.欧美精品一二区| 日本高清不卡视频| 欧美乱妇23p| 久久伊99综合婷婷久久伊| 国产欧美日韩精品一区| 亚洲精品写真福利| 亚洲第一电影网| 狠狠狠色丁香婷婷综合激情| 成人伦理片在线| 欧美日韩视频在线第一区| 精品国产乱码久久久久久影片| 久久久三级国产网站| 亚洲一区二区三区美女| 蜜臀精品久久久久久蜜臀| 国产成人av一区二区三区在线| 成人国产亚洲欧美成人综合网 | 99久久精品免费看国产| 欧美午夜理伦三级在线观看| 日韩欧美在线网站| 国产精品色婷婷| 视频一区在线视频| 成人精品一区二区三区中文字幕| 欧美色窝79yyyycom| 欧美精品一区二区三区四区 | 久久99久久久久久久久久久| 成人福利在线看| 欧美人与z0zoxxxx视频| 国产欧美日韩综合| 亚洲第一搞黄网站| 懂色av一区二区三区蜜臀| 欧美三级视频在线| 国产日韩在线不卡| 天堂成人国产精品一区| 成人激情开心网| 91精品国产色综合久久不卡电影| 国产亚洲精久久久久久| 五月激情综合色| 99免费精品在线| 精品国产乱码久久久久久浪潮| 亚洲男人的天堂在线aⅴ视频| 激情五月播播久久久精品| 欧美亚洲自拍偷拍| 国产精品另类一区| 精品一二三四区| 欧美日本免费一区二区三区| 国产精品免费av| 精品制服美女丁香| 欧美老女人第四色| 亚洲蜜臀av乱码久久精品蜜桃| 国内久久精品视频| 欧美一三区三区四区免费在线看 | 国产视频视频一区| 蜜臀av性久久久久av蜜臀妖精| 在线免费观看成人短视频| 久久久久久麻豆| 美女高潮久久久| 欧美丰满嫩嫩电影| 亚洲一区中文在线| 91免费精品国自产拍在线不卡| 久久久久久久电影| 国内精品嫩模私拍在线| 欧美xxxxxxxx| 麻豆精品蜜桃视频网站| 日韩久久精品一区| 亚洲成在线观看| 欧美午夜不卡视频| 亚洲一区中文日韩| 欧美亚洲动漫另类| 一区二区三区在线看| 一本大道久久a久久综合 | 婷婷六月综合网| 欧美色偷偷大香| 亚洲一卡二卡三卡四卡五卡| 91麻豆国产福利精品| 亚洲精品一卡二卡| 欧美吻胸吃奶大尺度电影 | 亚洲三级小视频| jvid福利写真一区二区三区| 国产女主播视频一区二区| 国产精品一区二区无线| 久久久久88色偷偷免费| 国产一区二区三区四区五区美女 | 制服丝袜亚洲网站| 男男视频亚洲欧美| 精品国偷自产国产一区| 久久精品国产第一区二区三区| 精品美女在线观看| 国产精品一区二区在线观看不卡| 久久精品水蜜桃av综合天堂| 国产精品99久久久久久有的能看| 久久久亚洲欧洲日产国码αv| 国产精品888| 日韩一区中文字幕| 在线精品视频小说1| 日欧美一区二区| 久久综合九色综合欧美就去吻 | 欧美一区二区精品| 国产成人免费高清| 一区二区三区免费| 欧美日韩精品免费观看视频| 日韩av一区二区三区四区| 日韩欧美色综合网站| 国产盗摄精品一区二区三区在线 | 高清日韩电视剧大全免费| 亚洲国产精品激情在线观看| 91色视频在线| 蜜臀av国产精品久久久久| 国产日韩欧美精品综合| 色综合av在线| 精品一区二区在线播放| 国产精品久久综合| 欧美日本免费一区二区三区| 国产一区二区三区四| 亚洲欧美另类综合偷拍| 91麻豆精品国产无毒不卡在线观看| 激情综合网最新| 亚洲视频 欧洲视频| 91精品欧美一区二区三区综合在 | 国产高清不卡一区二区| 亚洲精品中文字幕乱码三区| 日韩欧美国产电影| 99久久久免费精品国产一区二区| 亚洲成av人片在www色猫咪| 久久久亚洲午夜电影| 91成人看片片| 国产福利91精品| 日本在线不卡视频一二三区| 中文字幕国产一区| 欧美一区二区播放| 94色蜜桃网一区二区三区| 精品综合免费视频观看| 亚洲精品成人天堂一二三| 精品国产网站在线观看| 欧美在线影院一区二区| 国产激情一区二区三区四区| 图片区小说区国产精品视频| 中文字幕乱码一区二区免费| 欧美一区中文字幕| 欧美在线观看视频一区二区三区| 国产精品一区二区三区乱码| 热久久一区二区|