Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#520

Re: Andorra 2D [Ver. 0.35, 04.03.08]

  Alt 13. Mär 2008, 14:08
Hallo,

ich schaue mir das mit der Fontfarbe noch einmal an.

Wenn es noch weitere Probleme mit Andorra 2D gibt, dann weißt du ja, an wen du dich wenden musst . Mache das nächste mal aber besser einen eigenen Thread in der Multimediasparte des Forums auf (du kannst ja einfach "[Andorra 2D]" vor den Threadtitel schreiben), sonst wird dieser Thread zu unübersichtlich (er ist zwar schon unübersichtlich, aber naja...).

Ich arbeite gerade an Multisurfaceunterstüzung. Wer aufmerksam die Roadmap gelesen hat, wird jedoch gemerkt haben, das dieses Feature erst für eine spätere Version geplant war. Der Hintergrund der Implementierung ist jedoch folgender: Ich möchte die pixelgenaue Kollision über den Stencilbuffer Hardwarebeschleunigen, da meine aktuelle Implementation des Pixelchecks noch sehr Fehlerbehaftet und langsam ist (auch wenn ich "Bitmaps" dafür verwende).
Als Abstrahierung für den Stencilbuffer ist mir ein Surfacesystem am intelligentesten vorgekommen. Im Anhang befindet sich ein Screenshot meiner aktuellen Surface Testanwendung (momentan noch ohne Stencilbuffer).

Der Code dafür sieht folgendermaßen aus - einfacher geht es eigentlich nicht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
[...]
      AdSurface := TAdTextureSurface.Create(AdDraw);
      AdSurface.SetSize(256, 256);
[...]
end;

procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
  if AdDraw.CanDraw then
  begin
    AdPerCounter.Calculate;

    AdDraw.ClearSurface(clGreen);
    AdDraw.BeginScene;

    with AdSurface.Canvas do
    begin
      Pen.Style := apNone;
      Brush.Color := Ad_ARGB(255, 128, 0, 64);
      Brush.GradientColor := Ad_ARGB(255, 255, 0, 255);
      Rectangle(0,0,256,256);
      Release;

      AdImage.Draw(AdSurface, 192,192,0);

      Font := AdDraw.Fonts.GenerateFont('Comic Sans MS',10,[],clBlack,255,2,2);

      with TAdSimpleTypeSetter(Font.TypeSetter) do
      begin
        DrawMode := [dtWordWrap, dtMiddle, dtCenter];
      end;

      Font.TextOut(AdRect(0,0,256,256),
        'Dies [...] realisierbar.');
    end;

    with AdDraw.Canvas do
    begin
      Pen.Style := apNone;
      Brush.Texture := AdImage.Texture.Texture;
      Brush.TextureMode := tmTile;
      Rectangle(0,0,ClientWidth,ClientHeight);
      Release;

      TextOut(0,0, 'FPS: '+IntToStr(AdPerCounter.FPS));
    end;

    AdSurface.Image.Draw(AdDraw, mx, my, 0);

    AdDraw.EndScene;
    AdDraw.Flip;
  end;
  Done := false;
end;
Ich hoffe das Feature kann jemand gebrauchen.

Features die bis jetzt für die nächste Version (0.4.0) geplant sind:
- Surfacesystem [fast fertig]
- Neues Renderstatesystem [angefangen]
- Hardwarebeschleunigte 2D-Kollisionskontrolle [0%]
- Neuimplementierung des Partikelsystems (verwendung von Pointsprites und Multithreading) [0%]
- Neuimplementierung des Lichtsystems [0%]

In Version 0.4.5 wird es dann Möglichkeiten zum laden von 3D-Modellen geben.

In Version 0.5.0 kommen dann CG-Shader an die Reihe.

Über Kommentare und andere Featurevorschläge freue ich mich immer (auch wenn es bis jetzt erst wenige gegeben hat),
Andreas
Miniaturansicht angehängter Grafiken
surfaces1_409.png  
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat