Results 1 to 5 of 5

Thread: DivGL 3D Engine

  1. #1

    DivGL 3D Engine

    Hi ppl this is my biggest project ,im working about 4 months :roll:




    features :

    3d Mesh Builder with collision,

    grass ,billboard,decals,lensflare,skydome,skyboxe,skypla ne,waterplane,

    Tile Terrain and LandScape,

    models:
    milkshape,md3,md2,3ds,smd,

    world:
    quake bsp and DelgineMaps with collision


    demo
    http://www.keepmyfile.com/download/586e6a1277301





    [pascal]
    unit divGL;

    interface
    uses
    windows,classes,sysutils,opengl;


    const
    Div_PI: Single = 3.141592654;

    M_PI = 3.1415926535897932384626433832795; // matches value in gcc v2 math.h
    M_TWO_PI = 6.283185307179586476925286766559;
    M_180_PI = 57.295779513082320876798154814105;
    M_PI_180 = 0.017453292519943295769236907684886;

    const
    cPIdiv180 : Single = 0.017453292;
    c180divPI : Single = 57.29577951;
    c2PI : Single = 6.283185307;
    cPIdiv2 : Single = 1.5707963268;
    cInv2PI : Single = 1 / 6.283185307;
    cInv360 : Single = 1 / 360;
    c180 : Single = 180;
    c360 : Single = 360;





    //************************************************** ********************
    const
    VK_W=87;
    VK_S=83;
    VK_A=65;
    VK_D=68;
    VK_Q=81;
    VK_E=69;


    type
    CAMERA_STYLE=(FREE_6DOF = 0, FPS_STYLE = 1);
    TBlendingMode = (bmOpaque, bmTransparency, bmAdditive, bmAlphaTest50, bmAlphaTest100, bmModulate);
    TFaceCulling = (fcBufferDefault, fcCull, fcNoCull);
    TTextureFilter = (txLinear,txBilinear,txTrilinear );
    TTextureWrap = (twRepeat,twClamp );




    DivText=record
    texture:integer;
    Width,Height : integer;
    rWidth,rHeight : integer;
    end;

    //************************************************** ********************

    PathRec=record
    aFirstTime : Integer;
    Posx:single;
    PosY:single;
    PosZ:single;
    aYaw : Single;
    aPitch : Single;
    aRoll : Single;
    end;

    //************************************************** ********************

    type
    THeightMapFormat=(HRaw8Bit,HRaw16Bit,HRaw32Bit,HBM P);
    TTileFlip = (FZero, F80, F180, F270);

    TColor4f =array[0..3]of single;
    TColor4=record
    red,green,blue,alpha:single;
    end;
    TColor3=record
    red,green,blue:single;
    end;



    TD3DVector=record
    x,y,z:single;
    end ;

    DivRay=Record
    RBegin,
    RDir,
    REnd:TD3DVector;

    End;

    TD3DMatrix = packed record
    case Integer of
    0 : (_11, _12, _13, _14: single;
    _21, _22, _23, _24: single;
    _31, _32, _33, _34: single;
    _41, _42, _43, _44: single);
    // 1 : (M : TMatrixf4);
    end;
    TAVector3f = array[0..2] of single;

    TOBoundingBox = Array [0..7] of TAVector3f;

    TAABB=record
    min,max:TAVector3f;
    end;

    TColideSystem=record
    position,View:TD3DVector;
    end;



    TBSphere=record
    Center:TAVector3f;
    Radius:single;
    end;


    ////************************************************** **************************
    Type
    TMaterial = Record
    Ambient : TColor4f;
    Diffuse : TColor4f;
    Specular : TColor4f;
    Emission : TColor4f;
    Shininess: Single;
    end;


    const

    MatBrass=0 ;
    MatBronze=1 ;
    MatPolished_Bronze=2 ;
    MatChrome=3 ;
    MatCopper=4 ;
    MatPolished_Copper=5 ;
    MatGold=6 ;
    MatPolished_Gold=7 ;
    MatPewter=8 ;
    MatSilver=9 ;
    MatPolished_Silver=10 ;
    MatEmerald=11 ;
    MatJade= 12;
    MatObsidian=13 ;
    MatPearl=14 ;
    MatRuby=15 ;
    MatTurquoise=16 ;
    MatBlack_Plastic=17 ;
    MatBlack_Rubber=18 ;
    MatRed=19;
    MatGreen=20;
    MatBlue=21;
    MatYellow=22;
    MatAqua=23;
    MatFuchsia=24;
    MatWhite=25;


    clrTransparent : TColor4f = (0, 0, 0, 0);
    clrBlack : TColor4f = (0, 0, 0, 1);
    clrWhite : TColor4f = (1, 1, 1, 1);
    clrDimGray : TColor4f = (0.329412, 0.329412, 0.329412, 1);
    clrGray : TColor4f = (0.752941, 0.752941, 0.752941, 1);
    clrLightGray : TColor4f = (0.658824, 0.658824, 0.658824, 1);
    clrAquamarine : TColor4f = (0.439216, 0.858824, 0.576471, 1);
    clrBlueViolet : TColor4f = (0.62352, 0.372549, 0.623529, 1);
    clrBrown : TColor4f = (0.647059, 0.164706, 0.164706, 1);
    clrCadetBlue : TColor4f = (0.372549, 0.623529, 0.623529, 1);
    clrGold : TColor4f = (0.8, 0.498039, 0.196078, 1);
    clrMaroon : TColor4f = (0.556863, 0.137255, 0.419608, 1);
    clrNavy : TColor4f = (0.137255, 0.137255, 0.556863, 1);
    clrPink : TColor4f = (0.737255, 0.560784, 0.560784, 1);
    clrSilver : TColor4f = (0.90, 0.91, 0.98, 1);
    clrGreen : TColor4f = (0, 0.5, 0, 1);
    clrOlive : TColor4f = (0.5, 0.5, 1, 1);
    clrPurple : TColor4f = (1, 0, 1, 1);
    clrTeal : TColor4f = (0, 0.5, 0.5, 1);
    clrRed : TColor4f = (1, 0, 0, 1);
    clrLime : TColor4f = (0, 1, 0, 1);
    clrYellow : TColor4f = (1, 1, 0, 1);
    clrBlue : TColor4f = (0, 0, 1, 1);
    clrFuchsia : TColor4f = (1, 0, 1, 1);
    clrAqua : TColor4f = (0, 1, 1, 1);


    //md3 model animations
    const BOTH_DEATH1 = 0;
    BOTH_DEAD1 = 1;
    BOTH_DEATH2 = 2;
    BOTH_DEAD2 = 3;
    BOTH_DEATH3 = 4;
    BOTH_DEAD3 = 5;

    TORSO_GESTURE = 6;
    TORSO_ATTACK = 7;
    TORSO_ATTACK2 = 8;
    TORSO_DROP = 9;
    TORSO_RAISE = 10;
    TORSO_STAND = 11;
    TORSO_STAND2 = 12;

    LEGS_WALKCR = 13;
    LEGS_WALK = 14;
    LEGS_RUN = 15;
    LEGS_BACK = 16;
    LEGS_SWIM = 17;
    LEGS_JUMP = 18;
    LEGS_LAND = 19;
    LEGS_JUMPB = 20;
    LEGS_LANDB = 21;
    LEGS_IDLE = 22;
    LEGS_IDLECR = 23;
    LEGS_TURN = 24;



    type
    TDiv_WindowResize=procedure (Width, Height : Integer);
    TDiv_WindowRender=procedure (timeDelta:single);
    TDiv_WindowMsg= function (uMsg: LongWord; wParam: WPARAM; lParam: LPARAM): Boolean;








    //*******************Window************************* *****************
    function Div_WindowCreate(TITLEchar;x,y,Width, Height,PixelDepth : Integer; Fullscreen : Boolean):HWND; stdcall;external 'DivGL.dll';
    procedure Div_WindowClose;stdcall;external 'DivGL.dll';
    function Div_WindowGetEvents:integer;stdcall;external 'DivGL.dll';
    Function Div_WindowSetCaption( lpString: PChar): BOOL; stdcall;external 'DivGL.dll';
    procedure Div_WindowOnResize(evento:TDiv_WindowResize);stdca ll;external 'DivGL.dll';
    procedure Div_WindowOnRender(evento:TDiv_WindowRender);stdca ll;external 'DivGL.dll';
    procedure Div_WindowOnMsg(evento:TDiv_WindowMsg);stdcall;ext ernal 'DivGL.dll';

    function Div_WindowLoop:integer;stdcall;external 'DivGL.dll';
    Function Div_WindowGetHDC:HDC;stdcall;external 'DivGL.dll';
    function Div_WindowProcess:integer;stdcall;external 'DivGL.dll';
    Function Div_WindowGetHandle: HWND;stdcall;external 'DivGL.dll';
    function Div_WindowMouseX:integer;stdcall;external 'DivGL.dll';
    function Div_WindowMouseY:integer;stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //*******************RENDER************************* *****************
    //************************************************** *****************
    //procedure DivRender_Init;stdcall;external 'DivGL.dll';
    procedure DivRender_Free;stdcall;external 'DivGL.dll';
    function DivRender_Init(VSync:Boolean;Bpp:integer;handle:HW ND):boolean;stdcall;external 'DivGL.dll';
    procedure DivRender_Flip;stdcall;external 'DivGL.dll';
    procedure DivRender_Setdc(dc:hdc);stdcall;external 'DivGL.dll';
    procedure DivRender_Clear(r,g,b:single);stdcall;external 'DivGL.dll';


    procedure DivRender_SetPerspective(fovy, aspect, zNear, zFar:single);stdcall;external 'DivGL.dll';
    procedure DivRender_SetViewPort(x,y,w,h:integer);stdcall;ext ernal 'DivGL.dll';
    procedure DivRender_SetFov(fov:single);stdcall;external 'DivGL.dll';
    //************************************************** *****************
    //*****************STATES*************************** ******************
    procedure DivRender_SetFlatShade;stdcall;external 'DivGL.dll';
    procedure DivRender_SetSmoothShade;stdcall;external 'DivGL.dll';
    procedure DivRender_SetFillMode;stdcall;external 'DivGL.dll';
    procedure DivRender_SetLights(state : boolean);stdcall;external 'DivGL.dll';
    procedure DivRender_EnableTexture(state : boolean);stdcall;external 'DivGL.dll';
    procedure DivRender_SetCull(state : boolean);stdcall;external 'DivGL.dll';
    procedure DivRender_SetWireMode;stdcall;external 'DivGL.dll';
    procedure DivRender_DisableSphereMapping; stdcall;external 'DivGL.dll';
    procedure DivRender_EnableSphereMapping; stdcall;external 'DivGL.dll';
    Procedure DivRender_SwitchView(Ortho: boolean);stdcall;external 'DivGL.dll';
    procedure DivRender_SetBlend(FBlendingMode:TBlendingMode);st dcall;external 'DivGL.dll';
    Procedure DivRender_Enable2D(Ortho: boolean);stdcall;external 'DivGL.dll';

    function DivRender_PrintScreen(Folder : pchar ) : integer; stdcall;external 'DivGL.dll';

    function DivRender_GetFPS:integer;stdcall;external 'DivGL.dll';
    function DivRender_GetTicks:single;stdcall;external 'DivGL.dll';


    function DivRender_GetRay(var RayBegin,RayEnd: TD3DVector): TD3DVector;stdcall;external 'DivGL.dll';
    function DivRender_Vect_2D_To_3D(x,y:integeristingle=0.965): DivRay;stdcall;external 'DivGL.dll';
    function DivRender_PosGetRay(x,y:integer;var RayBegin,RayEnd:TD3DVector):TD3DVector;stdcall;ext ernal 'DivGL.dll';

    procedure DivRender_SetFog(state : boolean);stdcall;external 'DivGL.dll';
    procedure DivRender_SetupFog(Color : TColor4f;Fog_Density:single; Fog_Start, Fog_End : single); stdcall;external 'DivGL.dll';

    Procedure DivRender_EnableDebug(Value: boolean);stdcall;external 'DivGL.dll';

    procedure DivRender_Print(x,y:integer;Textchar;Color:TColor4f);stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************



    //************************************************** *****************
    //*****************TEXT***************************** *****************
    //************************************************** *****************

    function Div_Font_Init(namechar;size:integer;Bold:boolean):integer;stdcall;ex ternal 'DivGL.dll';
    procedure Div_Font_Print(Index:integer; pX,pY : Integer; pText : pchar;Color:TColor4f);stdcall; external 'DivGL.dll';

    function Div_FontText_Init(texture:string):integer;stdcall; external 'DivGL.dll';
    procedure Div_FontText_Print(Index:integer;x, y: single; text: pchar);stdcall;external 'DivGL.dll';
    procedure Div_FontText_CenterPrint(x, y, z: integer; UPCasse:boolean; text: pchar);stdcall;external 'DivGL.dll';



    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    ////////////////////////////////////////////////////////////////////////////////

    procedure DivCamera_Init(width,Height:integer;style:CAMERA_S TYLE);stdcall;external 'DivGL.dll';
    procedure DivCamera_SetPosition(x,y,z:single);stdcall;extern al 'DivGL.dll';
    function DivCamera_GetPosition:TD3DVector;stdcall;external 'DivGL.dll';
    function DivCamera_GetDirection:TD3DVector;stdcall;external 'DivGL.dll';
    procedure DivCamera_SetDirection(x,y,z:single);stdcall;exter nal 'DivGL.dll';
    procedure DivCamera_LookAt(x,y,z:single);stdcall;external 'DivGL.dll';
    procedure DivCamera_SetY(Value:single);stdcall;external 'DivGL.dll';
    procedure DivCamera_SetX(Value:single);stdcall;external 'DivGL.dll';
    procedure DivCamera_SetZ(Value:single);stdcall;external 'DivGL.dll';
    procedure DivCamera_Update;stdcall;external 'DivGL.dll';
    procedure DivCamera_MouseLook(MouseSpeedingle = 0.001;InvertMouse:boolean=false;CenterMousePos: Boolean = true);stdcall;external 'DivGL.dll';

    procedure DivCamera_TurnRight(AngleAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_TurnLeft( AngleAmountingle); stdcall;external 'DivGL.dll';
    procedure DivCamera_TurnDown(AngleAmountingle); stdcall;external 'DivGL.dll';
    procedure DivCamera_TurnUp(AngleAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_MoveBackward(StepAmountingle); stdcall;external 'DivGL.dll';
    procedure DivCamera_MoveForward(StepAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_StrafeDown(StepAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_StrafeUp(StepAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_StrafeLeft(StepAmountingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_StrafeRight(StepAmountingle);stdcall; external 'DivGL.dll';
    procedure DivCamera_RollLeft( AngleAmount : Single);stdcall;external 'DivGL.dll';
    procedure DivCamera_RollRight( AngleAmount : Single);stdcall;external 'DivGL.dll';
    procedure DivCamera_Roll( AngleAmount : Single);stdcall;external 'DivGL.dll';
    procedure DivCamera_RotateX(DegreeAngleingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_RotateY(DegreeAngleingle);stdcall;external 'DivGL.dll';
    procedure DivCamera_RotateZ(DegreeAngleingle);stdcall;external 'DivGL.dll';


    function DivCamera_GetX:single;
    function DivCamera_GetY:single;
    function DivCamera_GetZ:single;
    function DivCamera_GetRX:single;
    function DivCamera_GetRY:single;
    function DivCamera_GetRZ:single;


    //************************************************** *****************
    //*****************WAYPOINTS************************ *************
    //************************************************** *****************


    Function DivWayPoint_Init:integer;stdcall;external 'DivGL.dll';
    procedure DivWayPoint_Free(pathIndex:integer);stdcall;extern al 'DivGL.dll';
    procedure DivWayPoint_AddPath(pathIndex:integer;Time,PosX,Po sY,PosZ,DirX,DirY,DirZ:single);stdcall;external 'DivGL.dll';
    procedure DivWayPoint_Render(pathIndex:integer;Visible:boole an);stdcall;external 'DivGL.dll';
    procedure DivWayPoint_GetPath(pathIndex:integer;ElapsedTime : Integer;var aFirstTime : Integer;var Posx:single;var PosY:single;var PosZ:single;var aYaw : Single; var aPitch : Single; var aRoll : Single);stdcall;external 'DivGL.dll';
    procedure DivWayPoint_SetPathToCamera(pathIndex:integer;Elap sedTime : Integer;CamIndex:integer;FreeLook:boolean);stdcall ;external 'DivGL.dll';

    //************************************************** *****************
    //*****************DIRECT3D DRAW*************************************
    //************************************************** *****************
    Procedure Div3DDraw_Grid(num_x, num_y, size_x, size_y : single; r,g,b:single; Arrows : Boolean);stdcall;external 'DivGL.dll';
    procedure Div3DDraw_Plane(width,Height,XTiles,YTiles:integer ;XOffset,YOffset,XScope,YScopeingle;TileTextured,NoZWrite:boolean);stdcall;exter nal 'DivGL.dll';
    procedure Div3DDraw_Sphere(x, y, z:single;radius:double;slices, stacks:integer;wire:boolean=false);stdcall;externa l 'DivGL.dll';
    procedure Div3DDraw_Cone(x, y, z, Baseradius, Height: single;slices, stacks: integer);stdcall;external 'DivGL.dll';
    procedure Div3DDraw_Disk (x,y,z, innerradius,outerradius: single;slices, loops: integer);stdcall;external 'DivGL.dll';
    procedure Div3DDraw_Cube(x,y,z,width,height,deapth: single);stdcall;external 'DivGL.dll';
    procedure Div3DDraw_Pyramid(x, y, z, Width, Deapth, Height: single);stdcall;external 'DivGL.dll';
    procedure DivD3Draw_SplashScreen(TextureFile : PChar); stdcall;external 'DivGL.dll';
    procedure DivD3Draw_SplashScreenRect(Px,Py:single;R:trect;Te xtureFile : PChar); stdcall;external 'DivGL.dll';
    Procedure Div3DDraw_Billboard(x, y, z, width, height: glFloat;VFlip:boolean);stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //**********************DIVPACK********************* *****************
    //************************************************** *****************


    function Div_UnZip_Load(filename,Password:string):integer;s tdcall;external 'DivGL.dll';
    procedure Div_UnZip_AddFile(PackIndex:integerir,Files:string);stdcall;external 'DivGL.dll';
    procedure Div_UnZip_Close(packindex:integer);stdcall;externa l 'DivGL.dll';
    procedure Div_UnZip_ExtractFiles(packindex:integer;ToDir:str ing);stdcall;external 'DivGL.dll';
    procedure Div_UnZip_ExtractFile(packindex:integer;FileName,T oDir:string);stdcall;external 'DivGL.dll';


    //************************************************** *****************
    //**********************3DEnvironment*************** *****************
    //************************************************** *****************

    procedure DivDecals_Add(TextureivText;Size:single;PT,normal: TD3DVector);stdcall;external 'DivGL.dll';
    procedure DivDecal_DrawAll;stdcall;external 'DivGL.dll';
    procedure DivDecal_Update(time:single);stdcall;external 'DivGL.dll';


    procedure DivBill_Add(x,y,z,w,h:single;TextureIndex:integer) ;stdcall;external 'DivGL.dll';
    procedure DivBill_AddTexture(FileNamechar;ColorKey:integer);stdcall;external 'DivGL.dll';
    procedure DivBill_Render(BlendingMode:TBlendingMode);stdcall ;external 'DivGL.dll';

    procedure DivGrass_Add(x,y,z,w,h,angle:single;TextureIndex:i nteger);stdcall;external 'DivGL.dll';
    procedure DivGrass_AddTexture(FileNamechar;ColorKey:integer);stdcall;external 'DivGL.dll';
    procedure DivGrass_Render(BlendingMode:TBlendingMode);stdcal l;external 'DivGL.dll';


    function DIVSkybox_Load(texturetring):integer;stdcall;external 'DivGL.dll';
    procedure DIVSkybox_Draw(skyindex:integer;x,y,z, width,height,length:single);stdcall;external 'DivGL.dll';

    function DIVSkyPlane_Load(texturetring):integer;stdcall;external 'DivGL.dll';
    procedure DIVSkyPlane_Draw(PlaneIndex:integer;px,py,pz, pwidth,plength:single);stdcall;external 'DivGL.dll';
    procedure DIVSkyPlane_MoveTexture(PlaneIndex:integer;OffsetX ,OffsetY:single);stdcall;external 'DivGL.dll';
    procedure DIVSkyPlane_ScaleTexture(PlaneIndex:integer;SX,SY: single);stdcall;external 'DivGL.dll';

    procedure DIVSkyHorizon_Init(CloudTexture:string);stdcall;ex ternal 'DivGL.dll';
    procedure DIVSkyHorizon_Draw(x,y,z:singlerawHorizon:boolean);stdcall;external 'DivGL.dll';


    function DivSkyDome_Init(SunElevation:single=60;Turbidity:s ingle=15):integer;stdcall;external 'DivGL.dll';
    procedure DivSkyDome_Draw(SkyDomeIndex:integer;x,y,z:single; IsDay:boolean);stdcall;external 'DivGL.dll';
    procedure DivSkyDome_AddStars(SkyDomeIndex:integer;TotalOfSt ars : Integer);stdcall;external 'DivGL.dll';
    procedure DivSkyDome_AddMoontexture(SkyDomeIndex:integer;Fil ename:string);stdcall;external 'DivGL.dll';
    procedure DivSkyDome_SetSunElevation(SkyDomeIndex:integer;Va lue:single);stdcall;external 'DivGL.dll';
    procedure DivSkyDome_SetTurbidity(SkyDomeIndex:integer;Value :single);stdcall;external 'DivGL.dll';


    Function DivLensFlare_Init(Position:TD3DVector):integer;std call;external 'DivGL.dll';
    procedure DivLensFlare_AddTextures(LensIndex:integer; aF1, aF2, aF3,aF4, aF5, aF6, aF7, aF8, aF9: String);external 'DivGL.dll';
    procedure DivLensFlare_Render(LensIndex:integer;drawHolow,Dr awSun:boolean);stdcall;external 'DivGL.dll';
    procedure DivLensFlare_Free(LensIndex:integer);stdcall;exter nal 'DivGL.dll';
    procedure DivLensFlare_SetPosition(LensIndex:integer;Positio n:TD3DVector);stdcall;external 'DivGL.dll';

    Procedure DivLigthLens_Render(LLensIndex:integer;x,y,z:singl e);stdcall;external 'DivGL.dll';
    function DivLigthLens_Init(Resolution:integer):integer;stdc all;external 'DivGL.dll';

    //************************************************** *****************
    //*****************TEXTURES************************* *****************
    //************************************************** *****************
    procedure DivTexture_SetFilter(Filter:TTextureFilter);stdcal l;external 'DivGL.dll';
    procedure DivTexture_SetWrap(Wrap : TTextureWrap);stdcall;external 'DivGL.dll';
    procedure DivTexture_MipMapping(Enabled: Boolean);stdcall;external 'DivGL.dll';

    procedure DivTexture_Bind(TextureivText);stdcall;external 'DivGL.dll';
    function DivTexture_LoadFromFile(FileName: String; TransparentColor : integer)ivText;stdcall;external 'DivGL.dll';
    function DivTexture_LoadFromPack(PackIndex:integer;FileName : String; TransparentColor : integer)ivText;external 'DivGL.dll';
    procedure DivTexture_Free(TextureivText);stdcall;external 'DivGL.dll';
    //************************************************** *****************
    //*************************MATERIAL***************** *****************
    //************************************************** *****************
    procedure DivMaterial_SetMaterial(Material:TMaterial);stdcal l;external 'DivGL.dll';
    procedure DivMaterial_SetMaterialFace(Face:Cardinal;Material :TMaterial);stdcall;external 'DivGL.dll';
    procedure DivMaterial_SetMaterialEx( Ambient : TColor4fiffuse : TColor4f;Specular : TColor4f;Emission : TColor4f;Shininess: Single);stdcall;external 'DivGL.dll';
    procedure DivMaterial_SetMaterialFaceEx(Face:Cardinal; Ambient : TColor4fiffuse : TColor4f;Specular : TColor4f;Emission : TColor4f;Shininess: Single);stdcall;external 'DivGL.dll';
    function DivMaterial_GetTipical(mat:byte;NewShiness:single=-1):TMaterial;stdcall;external 'DivGL.dll';
    function DivColor_Set(r,g,b,a:single):TColor4f;stdcall;exte rnal 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    Function DivMesh_AddTexture(Filenamechar;colorkey:integer):integer;stdcall;external 'DivGL.dll';
    procedure DivMesh_AddBox(x,y,z:single;w,h,d:single; TextureIDLeft, TextureIDRight,TextureIDTop , TextureIDBottom,TextureIDFront,TextureIDBack:GluIn t ; Tu ingle = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddFloor(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddRoof(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddWallFront(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddWallBack(x,y,z,W,H:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddWallLeft(x,y,z,H,D:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddWallRight(x,y,z,H,D:single;TextureID :GluInt=0;Tu : Single = 1;TVingle = 1);stdcall;external 'DivGL.dll';
    procedure DivMesh_AddCilynder(x,y,z,Radius,Height:single; Segment:integer= 10;TextureIDBody:Gluint=0);stdcall;external 'DivGL.dll';
    procedure DivMesh_Render;stdcall;external 'DivGL.dll';
    function DivMesh_SphereCollisionSliding(Var View:TD3DVector;Var Position:TD3DVector;Radius:single):boolean;stdcall ;external 'DivGL.dll';
    function DivMesh_SphereCollision(Position: TD3DVector;Radius:single):boolean;stdcall;external 'DivGL.dll';
    function DivMesh_CheckRayCollision(var Point:TD3DVector;var Normal:TD3DVector;RayBegin,Rayend:TD3DVector):bool ean;stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    function DivModels_AddMD2(filenamechar;Skinchar;GetBBox:boolean):integer;stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD2Animation(Index:integer;Animation: integer);stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD2AnimationRange(Index:integer;AStar t,AEnd:integer);stdcall;external 'DivGL.dll';

    function DivModels_Add3DS(filename,TexturesPathchar):integer;stdcall;external 'DivGL.dll';

    function DivModels_AddMD3Player(filename,Skinchar):integer;stdcall;external 'DivGL.dll';
    procedure DivModels_AddMD3PlayerGun(Index:integerir,Model,Skinchar);stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD3PlayerAnimation(Index:integer;Anim ation:integer);stdcall;external 'DivGL.dll';
    Function DivModels_GetMD3PlayerLowerAnimation(Index:integer ):integer;stdcall;external 'DivGL.dll';
    Function DivModels_GetMD3PlayerUpperAnimation(Index:integer ):integer;stdcall;external 'DivGL.dll';

    function DivModels_AddMD3(filenamechar):integer;stdcall; external 'DivGL.dll';
    procedure DivModels_SetMD3Skin(Index:integer;Path,skinchar);stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD3Frame(Index:integer;Frame:integer) ;stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD3Link(Index:integer;TagNamechar;ModelIndex:integer);stdcall;external 'DivGL.dll';
    procedure DivModels_SetMD3Texture(Index:integer;MeshName,Fil eNamechar);stdcall;external 'DivGL.dll';

    function DivModels_AddMS3D(filename,TexturePathchar):integer;stdcall;external 'DivGL.dll';
    procedure DivModels_MS3DSetState(Index:integer;FPS:single;se q_start,seq_end,next:integer);stdcall;external 'DivGL.dll';
    procedure DivModels_MS3DUpdateAnimation(Index:integer);stdca ll;external 'DivGL.dll';
    procedure DivModels_MS3DTransform(Index,OBJIndex,Joint:integ er);stdcall;external 'DivGL.dll';

    function DivModels_AddSMD(filename,TexturePathchar):integer;stdcall;external 'DivGL.dll';
    procedure DivModels_SMDAddAnimation(Index:integer;filenamechar);stdcall;external 'DivGL.dll';
    procedure DivModels_SMDUpdate(Index:integer);stdcall;externa l 'DivGL.dll';
    procedure DivModels_SMDSetAnimation(Index,AnimationIndex:int eger);stdcall;external 'DivGL.dll';
    procedure DivModels_SMDRotateJoint(Index,AnimationIndex,Join tIndex:integer;x,y,z:single);stdcall;external 'DivGL.dll';


    function DivEntities_GetVertex(Index:integer;FaceIndex,TriI ndex:integer):TD3DVector;stdcall;external 'DivGL.dll';

    procedure DivModels_Free(Index:integer);stdcall;external 'DivGL.dll';


    procedure DivEntities_SetTexture(Index:Integer;TextureivText);stdcall;external 'DivGL.dll';
    procedure DivEntities_Render(Index:Integer;Time:single);stdc all;external 'DivGL.dll';
    procedure DivEntities_Position(Index:integer;x,y,z:single);s tdcall;external 'DivGL.dll';
    procedure DivEntities_Yaw(Index:integer;angle:single);stdcal l;external 'DivGL.dll';
    procedure DivEntities_Pitch(Index:integer;angle:single);stdc all;external 'DivGL.dll';
    procedure DivEntities_Roll(Index:integer;angle:single);stdca ll;external 'DivGL.dll';
    procedure DivEntities_Scale(Index:integer;x,y,z:single);stdc all;external 'DivGL.dll'

    procedure DivEntities_LookAT(Index:integer;x,y,z:single);std call;external 'DivGL.dll'

    procedure DivEntities_AddChild(Index,Child:integer);stdcall; external 'DivGL.dll';

    procedure DivEntities_RenderNoTrasform(Index:Integer;Time:si ngle);stdcall;external 'DivGL.dll';

    procedure DivEntities_SetStatic(Index:integer;Value:boolean) ;stdcall;external 'DivGL.dll';


    procedure DivEntities_BBoxByIndex(index:integer;obj:integer) ;stdcall;external 'DivGL.dll';
    procedure DivEntities_SetBBox(index:integer;MinX,MinY,Minz,M axX,MaxY,MaxZ:single);stdcall;external 'DivGL.dll';


    function DivEntities_BoxColide(En1,En2:integer):boolean;std call;external 'DivGL.dll';
    function DivEntities_RayBoxColide(Index:integer;RayStar,Ray End: TD3DVector):boolean;stdcall;external 'DivGL.dll';
    function DivEntities_RaySphereColide(Index:integer;RayStar, RayEnd:TD3DVector):boolean;stdcall;external 'DivGL.dll';
    function DivEntities_RayTriangleColide(Index:integer;RaySta r,RayEnd: TD3DVector):BOOL;stdcall;external 'DivGL.dll';


    //************************************************** *****************
    //************************************************** *****************
    //*********** Terrain **************************************
    //************************************************** *****************
    //************************************************** *****************


    //tile engine
    procedure DivHeightMap_Init(TileW,TileH:integer);stdcall;ext ernal 'DivGL.dll';
    procedure DivHeightMap_ImportHeightMap(FileNamechar;FileType:THeightMapFormat);stdcall;external 'DivGL.dll';
    procedure DivHeightMap_LoadTextures(MainTexture,DetailTextur echar);stdcall;external 'DivGL.dll';



    procedure DivHeightMap_Update;stdcall;external 'DivGL.dll';
    procedure DivHeightMap_Draw;stdcall;external 'DivGL.dll';

    Function DivHeightMap_GetAbsHeight(x,y:single):single;stdca ll;external 'DivGL.dll';
    Function DivHeightMap_GetNormal(x,y:integer):TVector3D;stdc all;external 'DivGL.dll';
    Function DivHeightMap_GetHeight(x,y:single):single;stdcall; external 'DivGL.dll';
    Function DivHeightMap_CenterX:single;stdcall;external 'DivGL.dll';
    Function DivHeightMap_CenterY:single;stdcall;external 'DivGL.dll';

    procedure DivHeightMap_Scale(x,y,z:single);stdcall;external 'DivGL.dll';
    procedure DivHeightMap_Position(x,y,z:single);stdcall;extern al 'DivGL.dll';

    //+++++++++++


    procedure DivTerrain_Init(TileW,TileH:integer);stdcall;exter nal 'DivGL.dll';

    procedure DivTerrain_SetFlat;stdcall;external 'DivGL.dll';
    procedure DivTerrain_ImportHeightMap(FileName:string;FileTyp e:THeightMapFormat);stdcall;external 'DivGL.dll';
    procedure DivTerrain_AddShadowMap(FileName:string);stdcall;e xternal 'DivGL.dll';

    procedure DivTerrain_Scale(x,y,z:single);stdcall;external 'DivGL.dll';
    procedure DivTerrain_Position(x,y,z:single);stdcall;external 'DivGL.dll';

    procedure DivTerrain_AddTileTextures(filename:string);stdcal l;external 'DivGL.dll';
    procedure DivTerrain_Update;stdcall;external 'DivGL.dll';

    procedure DivTerrain_SetTileTexture(x,y:integer;textureIndex :integer);stdcall;external 'DivGL.dll';
    procedure DivTerrain_SetTileHeight(x,y:integer;Heightingle);stdcall;external 'DivGL.dll';

    Function DivTerrain_GetAbsHeight(x,y:single):single;stdcall ;external 'DivGL.dll';
    Function DivTerrain_GetNormal(x,y:integer):TD3DVector;stdca ll;external 'DivGL.dll';

    Function DivTerrain_GetHeight(x,y:single):single;stdcall;ex ternal 'DivGL.dll';
    Function DivTerrain_RayColide(RayStar,RayEnd:TD3DVector):Bo olean;stdcall;external 'DivGL.dll';

    Function DivTerrain_CenterX:single;stdcall;external 'DivGL.dll';
    Function DivTerrain_CenterY:single;stdcall;external 'DivGL.dll';

    procedure DivTerrain_SetTileFlip(x,y:integer;flip:TTileFlip) ;stdcall;external 'DivGL.dll';

    procedure DivTerrain_Render(RealTime:boolean);Stdcall;extern al 'DivGL.dll';

    procedure DivTerrain_Save(filename:string);Stdcall;external 'DivGL.dll';
    procedure DivTerrain_Load(filename:string);Stdcall;external 'DivGL.dll';



    //************************************************** *****************
    //************************************************** *****************


    //************************************************** *****************
    //************************************************** *****************
    //******************Half-Life map loader*****************************
    //************************************************** *****************
    procedure DivHLMap_Init(Filename,TextureDirchar);stdcall;external 'DivGL.dll';
    procedure DivHLMap_Free;stdcall;external 'DivGL.dll';

    function DivHLMap_NumSectors:integer;stdcall;external 'DivGL.dll';
    function DivHLMap_GetPlayerStart:TD3DVector;stdcall;externa l 'DivGL.dll';

    procedure DivHLMap_DrawAll;stdcall;external 'DivGL.dll';
    procedure DivHLMap_DrawSector(Index:integer);stdcall;externa l 'DivGL.dll';

    //************************************************** *****************
    //******************Delgine map loader*****************************
    //************************************************** *****************

    Procedure DivDLMap_Render(Index:integer); stdcall;external 'DivGL.dll';
    function DivDLMap_Load(Filename,Textureschar;UseLightmaps:boolean):integer;stdcall;externa l 'DivGL.dll';
    Function DivDLMap_Colide(Index:integer;Inside:boolean;Posit ion:TD3DVector):TColideSystem;stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************
    function DivWorl3DS_Add(Filename,Texturepathchar):integer;stdcall;external 'DivGL.dll';
    procedure DivWorl3DS_Free(Index:integer);stdcall;external 'DivGL.dll';
    procedure DivWorl3DS_DrawAll(Index:integer);stdcall;external 'DivGL.dll';
    procedure DivWorl3DS_DrawSelect(Index,OBJindex:integer);stdc all;external 'DivGL.dll';
    procedure DivWorl3DS_DrawSelectBox(Index,OBJIndex:integer);s tdcall;external 'DivGL.dll';
    procedure DivWorl3DS_SelectObject(Index,objIndex:integer;val ue:boolean);stdcall;external 'DivGL.dll';
    procedure DivWorl3DS_DrawAllBBox(Index:integer);stdcall;exte rnal 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************


    function DivWaterPlane_Init(Texture:string):integer; stdcall;external 'DivGL.dll';
    procedure DivWaterPlane_Draw(WP_Index_integer:integer);stdca ll;external 'DivGL.dll';
    procedure DivWaterPlane_SetDefaults(WP_Index_integer:integer );stdcall;external 'DivGL.dll';
    procedure DivWaterPlane_Move(WP_Index_integer:integer;mcount :single);stdcall;external 'DivGL.dll';
    procedure DivWaterPlane_SetPosition(WP_Index_integer:integer ;x,y,z:single);stdcall;external 'DivGL.dll';
    procedure DivWaterPlane_SetSize(WP_Index_integer:integer;Wid th,Height:integer;scaleWidth,scaleHeight:single);s tdcall;external 'DivGL.dll';
    procedure DivWaterPlane_SetRepeats(WP_Index_integer:integer; Repeats:integer;StartAngle:single);stdcall;externa l 'DivGL.dll';
    procedure DivWaterPlane_SetWave(WP_Index_integer:integer;Wav eLength,WaveSpeed,WaveAmplitude:single);stdcall;ex ternal 'DivGL.dll';
    procedure DivWaterPlane_SetAlpha(WP_Index_integer:integer;va lue:single);stdcall;external 'DivGL.dll';
    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    procedure DivFrustum_Update;stdcall;external 'DivGL.dll';
    function DivFrustum_PointIn(const pX, pY, pZ : Single) : Boolean;stdcall;external 'DivGL.dll';
    function DivFrustum_BoxIn(const pX, pY, pZ,size : Single) : Boolean;stdcall;external 'DivGL.dll';
    function DivFrustum_SphereIn(const pX, pY, pZ, pRadius : Single) : Boolean;stdcall;external 'DivGL.dll';
    function DivFrustum_AABBIn(const aOBoundingBox: TOBoundingBox): Boolean;stdcall;external 'DivGL.dll';

    //************************************************** *****************
    //************************************************** *****************
    //************************************************** *****************
    //**********************2D"************************* ********************
    //************************************************** *****************
    procedure DivImage_Draw(Texture: DivText;x,y:integer;scaleX,ScaleY:single;angle:sin gle;Color:TColor4f;FBlendingMode:TBlendingMode);st dcall;external 'DivGL.dll';
    procedure DivImage_DrawRect(Texture: DivText;Rect:Trect;x,y,scaleX,ScaleY:single;angle: single;Color:TColor4f;FBlendingMode:TBlendingMode) ;stdcall;external 'DivGL.dll';
    procedure DivImage_DrawScroll(Texture: DivText;R:Trect;UFactor,VFactor,ScrolXfactor,Scrol YFactor:single;x,y:single;Color:TColor4f;FBlending Mode:TBlendingMode);stdcall;external 'DivGL.dll';
    procedure DivImage_SubRect(Texture: DivText;x,y,SCallX,SCallY:single;SRect:TRECT;Color :TColor4f;FBlendingMode:TBlendingMode);stdcall;ext ernal 'DivGL.dll';
    procedure DivImage_SubRectTransform(Texture: DivText;x,y:single;FlipV,FlipH:boolean;scaleX,Scal eY:single;CenterX, CenterY,angle:single;SRect:TRECT;Color:TColor4f;FB lendingMode:TBlendingMode);stdcall;external 'DivGL.dll';
    //************************************************** *****************
    //************************************************** *****************
    function DivFader_FadeEnded:boolean;stdcall;external 'DivGL.dll';
    procedure DivFader_SotpFade;stdcall;external 'DivGL.dll';
    procedure DivFader_SetLoop(Value:boolean);stdcall;external 'DivGL.dll';
    procedure DivFader_SetInOut(Value:boolean);stdcall;external 'DivGL.dll';
    procedure DivFader_FadeOut(r,g,b:byte;Speed:single);stdcall; external 'DivGL.dll';
    procedure DivFader_FadeIn(r,g,b:byte;Speed:single);stdcall;e xternal 'DivGL.dll';
    procedure DivFader_Draw;stdcall;external 'DivGL.dll';
    procedure DivFader_DrawinRect(rect:trect);stdcall;external 'DivGL.dll';


    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********


    procedure DivInput_Update;stdcall;external 'DivGL.dll';

    function DivInput_MouseAbsX:Integer;stdcall;external 'DivGL.dll';
    function DivInput_MouseAbsY:Integer;stdcall;external 'DivGL.dll';
    function DivInput_MouseAbsZ:Integer;stdcall;external 'DivGL.dll';

    function DivInput_MouseX:Integer;stdcall;external 'DivGL.dll';
    function DivInput_MouseY:Integer;stdcall;external 'DivGL.dll';
    function DivInput_MouseZ:Integer;stdcall;external 'DivGL.dll';

    function DivInput_MouseDown(Button: Integer):Boolean;stdcall;external 'DivGL.dll';
    function DivInput_MouseUp(Button: Integer):Boolean;stdcall;external 'DivGL.dll';

    function DivInput_KeyDown(key:integer):boolean;stdcall;exte rnal 'DivGL.dll';
    function DivInput_KeyUp(key:integer):boolean;stdcall;extern al 'DivGL.dll';
    function DivInput_KeyName(key:integer)char;stdcall;external 'DivGL.dll';
    function DivInput_KeyPressed:boolean;stdcall;external 'DivGL.dll';


    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********

    function DivSound_Load(Filenamechar;Is3d:boolean):integer;stdcall;external 'DivGL.dll';
    function DivSound_Play(SoundIndex:integer;Loop:boolean):Boo lean;stdcall;external 'DivGL.dll';
    function DivSound_Stop(SoundIndex:integer):Boolean;stdcall; external 'DivGL.dll';
    function DivSound_SetPosition(SoundIndex:integer;x,y,z:sing le):Boolean;stdcall;external 'DivGL.dll';
    function DivSound_SetListnerPosition(SoundIndex:integer;x,y ,z:single):Boolean;stdcall;external 'DivGL.dll';

    //************************************************** ***********
    //************************************************** ***********

    procedure DivMusic_Free(MusicIndex:integer);stdcall;external 'DivGL.dll';
    function DivMusic_Load(Filenamechar):integer;stdcall;external 'DivGL.dll';
    function DivMusic_SetPan(MusicIndex:integer;Value:Integer): boolean;stdcall;external 'DivGL.dll';
    function DivMusic_SetVolume(MusicIndex:integer;Value:Intege r):boolean;stdcall;external 'DivGL.dll';
    function DivMusic_SetPosition(MusicIndex:integer;Valueouble):boolean;stdcall;external 'DivGL.dll';
    function DivMusic_GetPosition(MusicIndex:integer)ouble;stdcall;external 'DivGL.dll';
    function DivMusic_GetDuration(MusicIndex:integer)ouble;stdcall;external 'DivGL.dll';
    function DivMusic_Play(MusicIndex:integer):boolean;stdcall; external 'DivGL.dll';
    function DivMusic_Stop(MusicIndex:integer):boolean;stdcall; external 'DivGL.dll';
    function DivMusic_Pause(MusicIndex:integer):boolean;stdcall ;external 'DivGL.dll';
    function DivMusic_IsPlaying(MusicIndex:integer):boolean;std call;external 'DivGL.dll';
    procedure DivMusic_LoopIt(MusicIndex:integer);stdcall;extern al 'DivGL.dll';
    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********
    //************************************************** ***********

    function DivMath_RandomS( lo, hi : Single ) : Single;stdcall;external 'DivGL.dll';
    function DivMath_RandomI( lo, hi : integer ) : integer;stdcall;external 'DivGL.dll';

    [/pascal][/pascal]

    ps: is just the first release espect lots of bugs

    asta
    Never underestimate the power of Delphi.
    <br />There's those who play games,...and then there's who make games...

  2. #2

    DivGL 3D Engine

    Looks good.

    Haven't I seen that gun before?
    If it's the gun I think of then isn't the texture wrong? eventually loaded upsidedown?
    Peregrinus, expectavi pedes meos in cymbalis
    Nullus norvegicorum sole urinat

  3. #3

    DivGL 3D Engine

    Quote Originally Posted by JSoftware
    Looks good.

    Haven't I seen that gun before?
    If it's the gun I think of then isn't the texture wrong? eventually loaded upsidedown?
    hummm?
    Never underestimate the power of Delphi.
    <br />There's those who play games,...and then there's who make games...

  4. #4
    Co-Founder / PGD Elder WILL's Avatar
    Join Date
    Apr 2003
    Location
    Canada
    Posts
    6,107
    Blog Entries
    25

    DivGL 3D Engine

    Wow djoker,

    You're definately goin ot the moon on this one.


    [size=9px]Can I ask you for a few small house-keeping things though? Your code will widen the browsers of people with smaller desktop resolutions. Can you find the code lines that are long and add some spaces so that it's not so wide? Thanks.[/size]


    Good luck with the engine, it's looking good so far.
    Jason McMillen
    Pascal Game Development
    Co-Founder





  5. #5

    DivGL 3D Engine

    Quote Originally Posted by WILL
    Wow djoker,

    You're definately goin ot the moon on this one.


    [size=9px]Can I ask you for a few small house-keeping things though? Your code will widen the browsers of people with smaller desktop resolutions. Can you find the code lines that are long and add some spaces so that it's not so wide? Thanks.[/size]


    Good luck with the engine, it's looking good so far.
    mi bad :s


    the zip have the souce


    on this engine i will put all stuff like $$$ engines
    Never underestimate the power of Delphi.
    <br />There's those who play games,...and then there's who make games...

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •