Mes programmes OpenSource

Pour une offre professionnelle, consultez mon site http://www.execute.re.


Kylix - Sources Borland Kylix (Linux)

Kylix 1 DirectX MD2 MD2T KCyber OpenGL DCal3D

MD2T MD2 Viewer avec Textures

Cette nouvelle version supporte les textures; elle n'utilise ni OpenGL ni DirectX, elle est entièrement codée en Pascal à partir de TBitmap.ScanLine.

Du coup c'est complètement compatible Delphi 5 et Kylix BETA 4.

Pour le fun, j'ai ajouté le support de Delphi 2 avec une gestion par API Windows...SetDiBitsToDevice()

Je n'ai malheureusement pas réussit à faire fonctionner la version API XWindow...XPutImage() mais j'ai laissé le code dans le source de "Just3D.pas"
{ Interface de Just3D.PAS }

{ Initialisation de l'environnement 3D }
procedure Init3D(width,height:integer);

{ Chargement et application des Textures }
Function  LoadBMP256(FileName:string):integer;
Function SetTexture(index:integer):boolean;

{ Effacer le bitmap offline }
Procedure ClearPixels;

{ Tracé d'un polygon texturé 
 x,y coordonnées du point à l'écran (en 2D)
   z profondeur du point (en 3D)
 u,v position du point sur la texture
   s niveau d'ombrage (shade) du point
 BeginPoly pour le point initial
 ScanPoly  pour les autres points
 EndPoly   pour le rendu final }
procedure BeginPoly(x,y:integer; z:float; u,v:integer; s:float);
procedure ScanPoly(x2,y2:integer; iz2:float; iu2,iv2:integer; is2:float);
procedure EndPoly;

{ Dessin du Bitmap offline sur un Canvas }
procedure SetPixels(Canvas:TCanvas);
{ Implementation de ClearPixels et SetPixels }
{$IFDEF VER90}{$UNDEF SCANLINE}{$ENDIF} // no Scanline under Delphi 2
{$IFDEF LINUX}{$DEFINE SCANLINE}{$ENDIF} // XPutImage doesn't work yet :((
procedure ClearPixels;
 begin
 {$ifdef scanline}
  with Bitmap.Canvas do begin
   Brush.Color:=clBlack;
   FillRect(Rect(0,0,maxx,maxy));
  end;
 {$ifdef linux}Bitmap.FreePixmap;{$endif} // probably a little bug with BETA4
 {$else}
  FillChar(Pixels^,maxx*maxy*sizeof(integer),0);
 {$endif}
 end;

procedure SetPixels(Canvas:TCanvas);
 begin
{$IFDEF SCANLINE}
  Canvas.Draw(0,0,Bitmap);
{$ELSE}
 {$ifdef win32}
  SetDiBitsToDevice(Canvas.handle,0,0,maxx-1,maxy-1,0,0,0,maxy-1,Pixels,BitmapInfo^,0);
 {$else}
  XPutImage(Display,Window,Context,Bitmap,0,0,0,0,maxx,maxy);
 {$endif}
{$ENDIF}
 end;

Téléchargez les sources complets !