AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DelphiX: DXDraw.Surface ist schneckenlahm
Thema durchsuchen
Ansicht
Themen-Optionen

DelphiX: DXDraw.Surface ist schneckenlahm

Ein Thema von roderich · begonnen am 17. Aug 2004 · letzter Beitrag vom 17. Aug 2004
 
roderich
(Gast)

n/a Beiträge
 
#1

DelphiX: DXDraw.Surface ist schneckenlahm

  Alt 17. Aug 2004, 11:29
Hab mich etwas schlau gemacht über DelphiX und auch im Forum gesucht, aber nichts gefunden zu meinem Problem.
Vielleicht klärt mich jemand auf, der sich mit DirectX / DelphiX auskennt. Ich will mit mindestens 60-100 Hz eine selbstgezeichnete Grafik (genauer ein Oszi) per DelphiX zeichnen.
Ich komme aber auf höchstens 25 Hz, kann ja wohl nicht sein, wenn ich direkt im Video-RAM zeichne, oder ?!?
Bei der DXDraw Komponente hab ich alle Optionen durchprobiert, z.B. doWaitVBlank, ohne richtigen Erfolg.
Das DXDraw läuft im Fenster, nicht im Vollbild (auch probiert, auch nix).


Erster Versuch mit DXDib und einem zweiten Surface (FSurface):
Delphi-Quellcode:
  FSurface := TDirectDrawSurface.Create(DXDraw1.DDraw);

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then
    exit;
  with DXDIB1.DIB.Canvas do
    begin
      // Male irgendwas
    end;
  FSurface.LoadFromGraphic(DXDIB1.DIB); // Auch nicht besser, wenn direkt auf DXDraw1.Surface
  DXDraw1.Surface.Draw(0, 0, FSurface.ClientRect, FSurface, true);
  DXDraw1.Flip;
end;

Zweiter Versuch mit Surface.Canvas, auch lahm:
Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  if not DXDraw1.CanDraw then
    exit;
  with DXDraw1.Surface.Canvas do
    begin
      Brush.Color := clAqua;
      FillRect(Rect(0, 0, DXDraw1.Width, DXDraw1.Height)); // Das allein ist schon lahm
      // Male irgendwas
      Release; // <- muß sein, sonst a) gnadenloser Absturz b) Farben falsch
    end;
  DXDraw1.Flip;
end;
Der DXTimer läuft ohne Last mit fast 1000 Hz, an dem liegt's also nicht.

Gibt's hier den DelphiX-Guru, der mir weiterhelfen kann ?

Liegt es an meiner Grafikkarte mit zu wenig Speicher ? Habe nur ne Matrox G450 mit 16 MB, fahre aber zwei Monitore mit 1280x1024 in TrueColor -> 1280 x 1024 x 2 * 4 Byte = ca. 10 MB verbraten, so daß es nicht mehr für DirectX-Flipping reicht !?
Aber es läuft auch auf anderen Rechnern mit mehr Video-RAM und nur einem Monitor nicht schneller.
Ich vermute, daß die Grafik doch immer noch irgendwie im Hauptspeicher aufgebaut wird und dann an die Grafikkarte geschickt wird, was zu langsam ist.
Wie bekomme ich hin, daß direkt im Video-RAM gezeichnet wird ?

Roderich
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz