Hi ppl this is my new project :

http://divdx.no.sapo.pt








Graphics API : DirectX

Operating Systems: Windows

Programming Language : Delphi,C/C++;



Features:

Physics : Basic Physics, Collision Detection, Rigid Body, Use NewTon And ODE;

Lighting : Per-vertex, Per-pixel, Lightmapping;

Shadows : Projected planar, Shadow Volume;

Scene Management :Quake BSP,Delgine and World from X;

Animation: Keyframe Animation, Skeletal Animation;

Mesh Loadingimple X,Animated X,MilkShape,md2 and md3;

Special Effects : Environment Mapping, Lens Flares from sun and from Ligths ,Clouds, 6 types of Billboarding, Full Control on Particle System, Sky, Water, Fog, Mirror and 3D animated sprites Like Doom sprites;

Sound & Video: 3D Sound and VideoTextures;

Terrain: Rendering from Bitmap ;


Demo API



Code:
type
TSkyBoxTex=(SkyFront=0,SkyBack=1,SkyTop=2,SkyBottom=3,SkyLeft=4,SkyRight=5);


DivCameraType=(LANDOBJECT, AIRCRAFT,FPS,NOMOVE);


function Div_Render_Init(hWnd: hWnd;_fullScreen: boolean;
                   width, _height, bits: longint;
                   HAL, ZBuffer,Vsync,Stencil: Boolean): boolean; stdcall;external divdxdll;
procedure Div_Render_Free;stdcall;external divdxdll;
function Div_Render_GetFPS:integer;stdcall;external divdxdll;
function Div_Render_GetTicks:single;stdcall;external divdxdll;
function Div_Render_GetCounterTime:Single;stdcall;external divdxdll;
function Div_Render_Timekey:Single;stdcall;external divdxdll;


procedure Div_Render_BeginScene;stdcall;external divdxdll;
procedure Div_Render_EndScene;stdcall;external divdxdll;
procedure Div_Render_EndSceneOnRec(x,y,w,h:integer);stdcall;external divdxdll;
procedure Div_Render_Clear(r,g,b:integer);stdcall;external divdxdll;

procedure Div_Render_BeginBlend;stdcall;external divdxdll;
procedure Div_Render_EndBlend;stdcall;external divdxdll;

procedure Div_Render_DrawArrow(x,y,z:single);stdcall;external divdxdll;

procedure Div_Render_SetFov(value:single); stdcall;external divdxdll;
procedure Div_Render_SetAspect(value:single); stdcall;external divdxdll;
procedure Div_Render_SetNearFar(vNear,VFar:single); stdcall;external divdxdll;
Procedure Div_Render_SetPerspective(flovy, aspect, zn, zf: Single);stdcall;external divdxdll;
Procedure Div_Render_PerspectiveUpdate;stdcall;external divdxdll;

function Div_Render_GetDevice:IDirect3DDevice9;stdcall;external divdxdll;

procedure Div_Render_SetWorld(matWorld: TD3DXMatrix);stdcall;external divdxdll;
procedure Div_Render_SetView(matView: TD3DXMatrix);stdcall;external divdxdll;


procedure Div_State_BlendINVSRCCOLOR;stdcall;external divdxdll;
procedure Div_State_BlendALPHAONE;stdcall;external divdxdll;
procedure Div_State_BlendONEONE;stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************COUNTERTIMER*********************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure  Div_TimeFactor_SetFPS(fps:integer);stdcall; external divdxdll;
procedure  Div_TimeFactor_Update;stdcall;external divdxdll;
function Div_TimeFactor_GetFrame:single; stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************DIRECTX STATES*********************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure Div_States_SetLigth(enable:boolean);stdcall;external divdxdll;
procedure Div_States_SetState(State: TD3DRenderStateType; Value: DWord);stdcall;external divdxdll;

//*******************************************************************
//*******************************************************************
//*******************************************************************
//*************************WINDOW************************************
//*******************************************************************
//*******************************************************************



function Div_Window_Create(TITLE:pchar;x,y,Width, Height: Integer; Fullscreen : Boolean) :HWND ;stdcall;external divdxdll;
procedure Div_Window_Close;stdcall;external divdxdll;
function Div_Window_GetEvents:integer;stdcall;external divdxdll;
function Div_Window_Loop:integer;stdcall;external divdxdll;
function Div_Window_Process:integer;stdcall;external divdxdll;
procedure Div_Window_OnResize(evento:TDiv_WindowResize);stdcall;external divdxdll;
procedure Div_Window_OnRender(evento:TDiv_WindowRender);stdcall;external divdxdll;
Function Div_Window_GetHandle: HWND;stdcall;external divdxdll;
Function Div_Window_SetCaption( lpString: PChar): BOOL; stdcall;external divdxdll;


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


function Div_Text_Create(index:integer;name:pchar;w,h:integer;Bold,Italic:boolean):boolean;stdcall;external divdxdll;
procedure Div_Text_Free(index:integer);stdcall;external divdxdll;
procedure Div_Text_Write(index:integer;Texto:pchar;x,y:integer;r,g,b,a:integer);stdcall;external divdxdll;


//*************************CAMERA************************************

  procedure Div_Camera_init (sCameraType:DivCameraType);stdcall;external divdxdll;
	procedure Div_Camera_strafe(units:single);stdcall;external divdxdll; // left/right
	procedure Div_Camera_fly   (units:single);stdcall;external divdxdll;    // up/down
	procedure Div_Camera_walk  (units:single);stdcall;external divdxdll;   // forward/backward
	Procedure  Div_Camera_pitch(angle:single);stdcall;external divdxdll; // rotate on right vector
	Procedure  Div_Camera_yaw  (angle:single);stdcall;external divdxdll;   // rotate on up vector
	Procedure  Div_Camera_roll (angle:single);stdcall;external divdxdll;  // rotate on look vector
	Procedure  Div_Camera_setPosition(x,y,z:single);stdcall;external divdxdll;
  procedure    Div_Camera_setLook(x,y,z:single);stdcall;external divdxdll;
  procedure Div_Camera_Set(UpdateFrustum:boolean);stdcall;external divdxdll;
  function  Div_Camera_GetLook:TD3DXVector3;stdcall;external divdxdll;
  function  Div_Camera_GetPosition:TD3DXVector3;stdcall;external divdxdll;
  function  Div_Camera_GetView:TD3DXMATRIX;stdcall;external divdxdll;

  //*******************************************************************
//*************************PTIMITIVES*********************************


procedure Div_Primitives_SetTexture(index:integer;Filename:pchar);stdcall;external divdxdll;
procedure Div_Primitives_CreateFloor(Index:integer;w,h,y,tScal:single;Color:dword);stdcall;external divdxdll;
procedure Div_Primitives_CreateCube(Index:integer;Color:dword);stdcall;external divdxdll;
procedure Div_Primitives_Free(Index:integer);stdcall;external divdxdll;
procedure Div_Primitives_Render(index:integer);stdcall;external divdxdll;



//*******************************MIsc*************************************

function Div_Misc_Color(r,g,b,a:integer):dword;stdcall;external divdxdll;



//******************************************************************************
//******************************************************************************
//*******************************MATRIX*****************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************
procedure Div_LoadIdentity;Stdcall;external divdxdll;
procedure Div_PushMatrix;Stdcall;external divdxdll;
procedure Div_PopMatrix;Stdcall;external divdxdll;
procedure Div_Rotate(angle,x,y,z:single);stdcall;external divdxdll;
procedure Div_RotateLocal(angle,x,y,z:single);stdcall;external divdxdll;
procedure Div_Scale(x,y,z:single);stdcall;external divdxdll;
procedure Div_ScaleLocal(x,y,z:single);stdcall;external divdxdll;
procedure Div_TranslateLocal(x,y,z:single);stdcall;external divdxdll;
procedure Div_Translate(x,y,z:single);stdcall;external divdxdll;
procedure Div_RotateYPR(yaw,pitch,roll:single);stdcall;external divdxdll;
procedure Div_RotateYPRLocal(yaw,pitch,roll:single);stdcall;external divdxdll;
procedure Div_ApplyMatrix;stdcall;external divdxdll;

procedure Div_Matrix_SetBilboarLookAt(BilPosition,LookTo:TD3DVector);stdcall;external divdxdll;


function Div_Matrix_SetBillBoardStyle:Tvector3d;stdcall;external divdxdll;
procedure Div_Matrix_Move(XPos,YPos,ZPos:single);stdcall;external divdxdll;
procedure Div_Matrix_Rotate(XRot,YRot,ZRot:single);stdcall;external divdxdll;
procedure Div_Matrix_Scale (XScale,YScale,ZScale:single);stdcall;external divdxdll;
procedure Div_Matrix_Set;stdcall;external divdxdll;
procedure Div_Matrix_Identity;stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************EVORIMENT**************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure Div_SkyBoxe_Init(size:single);stdcall;external divdxdll;
procedure Div_SkyBoxe_LoadTexture(filename:pchar;TextType:TSkyBoxTex);stdcall;external divdxdll;
procedure Div_SkyBoxe_Render;stdcall;external divdxdll;

procedure Div_LigthLens_Render(Point3d:Tvector3d);  stdcall;external divdxdll;
procedure Div_LigthLens_LoadPath(Path:pchar;colorkey:dword);stdcall;external divdxdll;


procedure Div_LensFlare_Init;stdcall;external divdxdll;
procedure Div_LensFlare_SetSun(pos:TD3DXVector3);stdcall;external divdxdll;
procedure Div_LensFlare_LoadSunTexture(filename:pchar);stdcall;external divdxdll;
procedure Div_LensFlare_LoadFlareTextures(path:pchar);stdcall;external divdxdll;
procedure Div_LensFlare_RenderFlares;stdcall;external divdxdll;
procedure Div_LensFlare_RenderSun;stdcall;external divdxdll;

//*******************************DIRECT 3D Draw*************************************


procedure Div_3DDraw_Quad(pX, pY, pZ, pWidth, pHeight:single;BillBoard:boolean;color:dword); stdcall;external divdxdll;
procedure Div_3DDraw_QuadSimple(x,y,z,size:single;color:dword); stdcall;external divdxdll;
procedure Div_3DDraw_QuadAngle(pX, pY, pZ,rX,rY,rZ, pWidth, pHeight:single;color:dword); stdcall;external divdxdll;
Procedure Div_3DDraw_Particle(x, y, z,size: single;AlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;
Procedure Div_3DDraw_ParticleFrame(ImgIndex,Height,Width,TileWidth,TileHeight:integer;x, y, z, size: single;AlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;
Procedure Div_3DDraw_ParticleScalFrame(ImgIndex,FHeight,FWidth,fTileWidth,fTileHeight:integer;x, y, z, w,h:single;AlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;
Procedure Div_3DDraw_ParticleSR(x, y, z,rx,ry,rz, w,h:single;IAlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;
Procedure Div_3DDraw_ParticleFrameSR(ImgIndex,FHeight,FWidth,fTileWidth,fTileHeight:integer;x, y, z,rx,ry,rz, w,h:single;AlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;

Procedure Div_3DDraw_ParticleScal(x, y, z, w,h:single;IAlphaType:DivAlphaType;color:dword);stdcall;external divdxdll;
procedure Div_3DDraw_Bill(pX, pY, pZ, pWidth, pHeight:single;color:dword); stdcall;external divdxdll;
procedure Div_3DDraw_Grass(pX, pY, pZ,rY, pWidth, pHeight:single;color:dword); stdcall;external divdxdll;
procedure Div_3DDraw_Arrow;stdcall;external divdxdll;
procedure Div_3DDraw_AABB(min,max:TD3DVector; _color: cardinal);stdcall;external divdxdll;
procedure Div_3DDraw_Water;stdcall;external divdxdll;
procedure Div_3DDraw_Cube(min,max:TD3DVector; _color: cardinal);stdcall;external divdxdll;
procedure Div_3DDraw_Line(x1,y1,z1,x2,y2,z2:single;color:dword=$FFFFFFFF);stdcall;external divdxdll;
procedure Div_3DDraw_Vertex(x,y,z:single;color:dword=$FFFFFFFF);stdcall;external divdxdll;
Procedure Div_3DDraw_Grid(num_x, num_y, size_x, size_y : single; Arrows : Boolean);stdcall;external divdxdll;


//*******************************TEXTUREMANAGER*********************************

function Div_Textures_LoadNormal(index:integer;filename:pchar):boolean;stdcall;external divdxdll;
function Div_Textures_LoadCKey(index:integer;filename:pchar;color:DWord=0):boolean;stdcall;external divdxdll;
procedure Div_Textures_Set(Index:integer;layer:integer=0);stdcall;external divdxdll;
procedure Div_Textures_SetNull(layer:integer);stdcall;external divdxdll;
//******************************************************************************
//******************************************************************************
//*******************************MATH*******************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

function Div_Vector3d(x,y,z:single):TD3DVector;stdcall;external divdxdll;
function Div_Math_RandomS( lo, hi : Single ) : Single;stdcall;external divdxdll;
function Div_Math_RandomI( lo, hi : integer ) : integer;stdcall;external divdxdll;



//******************************************************************************
//******************************************************************************
//*******************************WORLDX*****************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure Div_WorldX_Load(index:integer;filename:pchar);stdcall;external divdxdll;
function Div_WorldX_GetHeight(index:integer;x,y:single):single;stdcall;external divdxdll;
function Div_WorldX_GetVertice(index:integer;VerticeIndex:integer):TWoldXVertex;stdcall;external divdxdll;
function Div_WorldX_GetNumVertices(index:integer):integer;stdcall;external divdxdll;
procedure Div_WorldX_Render(index:integer);stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************FRUSTUM*********************************
//******************************************************************************
//******************************************************************************
//******************************************************************************
function Div_Frustum_PointInside(p : TD3DVector):boolean;stdcall;external divdxdll;
function Div_Frustum_SphereInside( _c :TD3DVector; _r : single):single;stdcall;external divdxdll;
function Div_Frustum_AABoxInside( _min, _max :TD3DVector):boolean;stdcall;external divdxdll;
function Div_Frustum_TriangleInside(_v1, _v2, _v3 :Tvector3d):boolean;stdcall;external divdxdll;
function Div_Frustum_AABoxInsideAX( _min, _max :TVector3d):TFIntersection;stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************2D IMAGE****************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure Div_Image_Update;stdcall;external divdxdll;
procedure Div_Image_End; stdcall;external divdxdll;
function Div_Image_Draw(x,y:single;textureIndex:integer):boolean; stdcall;external divdxdll;
function Div_Image_DrawFX(PosX,PosY,ScallX,ScallY,CenterX,CenterY,Angle:single;textureIndex:integer;color:dword):boolean; stdcall;external divdxdll;
function Div_Image_DrawColor(x,y:single;textureIndex:integer;Color:Dword):boolean; stdcall;external divdxdll;
function Div_Image_DrawRect(x,y:single;rect:Trect;textureIndex:integer;Color:Dword):boolean; stdcall;external divdxdll;

//******************************************************************************
//******************************************************************************
//*******************************EntitieModels**********************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

function Div_Entitie_Create_Boxe(index:integer;Width,Height,  Depth: Single):boolean;stdcall;external divdxdll;
Function Div_Entitie_Create_Sphere(index:integer;radius:single;slices,stacks:integer):boolean;stdcall;external divdxdll;
function Div_Entitie_Create_Teapot(index:integer):boolean;stdcall;external divdxdll;
function Div_Entitie_Create_Cylinder(index:integer;ZNRadius,ZpRadius,Wisth:single;slices,stacks:integer):boolean;stdcall;external divdxdll;
function Div_Entitie_CreateTorus(index:integer;IRadius,ORadius:single;sides,rings:integer):boolean;stdcall;external divdxdll;
procedure Div_Entitie_SetFillMode (index:integer;FillMode:fillMode);stdcall;external divdxdll;
procedure Div_Entitie_Move  (index:integer;Posx,Posy,Posz:single);stdcall;external divdxdll;
procedure Div_Entitie_Rotate(index:integer;Rx,Ry,Rz:single);stdcall;external divdxdll;
procedure Div_Entitie_Scale (index:integer;Sx,Sy,Sz:single);stdcall;external divdxdll;
procedure Div_Entitie_SetTexture(index,TexIndex:integer);stdcall;external divdxdll;
procedure Div_Entitie_Render(index:integer);stdcall;external divdxdll;
procedure Div_Entitie_RenderAll;stdcall;external divdxdll;
//******************************************************************************
//******************************************************************************
//*******************************GUI********************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

procedure Div_GUI_Init(x,y,w,h:integer;ShowWindow:boolean;caption:PWideChar;BackColor:dword);stdcall;external divdxdll;
procedure Div_GUI_Free;stdcall;external divdxdll;
procedure Div_GUI_Render(time:single)stdcall;external divdxdll;
procedure Div_GUI_AddButton(event: TButtonPress;ID:integer;x,y,w,h:integer;strText: PWideChar);stdcall;external divdxdll;


//*******************************TERRAIN********************************************


procedure Div_Terrain_Create(pos: TD3DXVector3);stdcall;external divdxdll;
procedure Div_Terrain_Config(Flat:boolean;TextureU,TextureV:single;Width,depth:single;HeightFactor:single);stdcall;external divdxdll;
function Div_Terrain_Highat(x,y:single):single;stdcall;external divdxdll;
procedure Div_Terrain_Render(ShowLines:boolean=false);stdcall;external divdxdll;
procedure Div_Terrain_LoadFromFile(const Heightmap,Texturefile:string);stdcall;external divdxdll;


procedure Div_Water_Init(filename:pchar);stdcall;external divdxdll;
procedure Div_Water_Render;stdcall;external divdxdll;
procedure Div_Water_Position(x,y,z:single);stdcall;external divdxdll;
procedure Div_Water_Scale(sx,sy,sz:single);stdcall;external divdxdll;
procedure Div_Water_Wave(step:single);stdcall;external divdxdll;

//*******************************BillBoard********************************************

procedure Div_BillBoard_Init(width,height:single);stdcall;external divdxdll;
procedure Div_BillBoard_Load(filename:pchar;colorkey:dword);stdcall;external divdxdll;
procedure Div_BillBoad_Render(pos:TD3DXVector3);stdcall;external divdxdll;
function Div_BillManager_Loadtexture(Texindex:integer;filename:pchar;colorkey:dword):boolean;stdcall;external divdxdll;
procedure Div_BillManager_Add(TextureIndex:integer;w,h,x,y,z:single);stdcall;external divdxdll;
procedure Div_BillManager_Render;stdcall;external divdxdll;

function  Div_GrassManager_Loadtexture(Texindex:integer;filename:pchar;colorkey:dword):boolean;stdcall;external divdxdll;
procedure Div_GrassManager_Add(TextureIndex:integer;w,h,angle,x,y,z:single);stdcall;external divdxdll;
procedure Div_GrassManager_Render;stdcall;external divdxdll;



//*******************************MODELX********************************************


procedure Div_ModelX_LoadFromFile(Index:integer;filename,TextureDir:pchar);stdcall;external divdxdll;
procedure Div_ModelX_Render(Index:integer);stdcall;external divdxdll;
procedure Div_ModelX_LoadTextureToObject(Index,OIndex:integer;filename:pchar);stdcall;external divdxdll;
procedure Div_Modelx_GetBBBox(index:integer;var bbox:Tbbbox);stdcall;external divdxdll;
procedure Div_Modelx_GetOBBox(index:integer;var bbox:Tbbbox);stdcall;external divdxdll;

//*******************************ANIMATEDMODELX********************************************

Function  Div_AnimateX_Load(index:integer;ModelName,TexturesPath:pchar):boolean;stdcall;external divdxdll;
procedure Div_AnimateX_Draw(index:integer);stdcall;external divdxdll;
procedure Div_AnimateX_SetAnimation(index:integer;Animation:integer);stdcall;external divdxdll;
procedure Div_AnimateX_AdvanceAnimation(index:integer;Time:single);stdcall;external divdxdll;
Function  Div_AnimateX_GetTotalAnimations(index:integer):integer;stdcall;external divdxdll;
procedure Div_AnimateX_SetMinMax(index:integer;min, max : TD3DXVector3);stdcall;external divdxdll;

//*******************************MODELMD2********************************************

procedure Div_ModelMD2_Load(index:integer;filename:pchar;Interpolation:boolean);stdcall;external divdxdll;
procedure Div_ModelMD2_LoadTexture(index:integer;filename:pchar);stdcall;external divdxdll;
procedure Div_ModelMD2_Draw(index:integer);stdcall;external divdxdll;
procedure Div_ModelMD2_SetFrame(index:integer;Frame:single);stdcall;external divdxdll;

engine is on 60% :roll:



ps:my inglish sucks :?