Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: schnellerer Zugriff auf Tbitmap

  Alt 7. Dez 2004, 11:36
Zitat von cumi:
Also hier mal den Code, welchen ich brauch um die Divergenze von einem Punkt zu berechenn:
Delphi-Quellcode:
  TComplex=record
    r,i:Extended;
  end;
(...)
function TFrmMain.CalcDivMandel(x,y:Extended):Integer;
var
  z1,z2:TComplex;
  h1,h2:Extended;
  i :Integer;
begin
  z1.r:=0;
  z1.i:=0;
  i :=0;
  repeat
    h1 :=z1.r*z1.r;
    h2 :=z1.i*z1.i;
    z2.r:=h1-h2 +x;
    z2.i:=2*z1.r*z1.i+y;
    z1:=z2;
    inc(i);
  until (i>=steps) or ((h1+h2)>4);
  result:=i;
end;
Na das sieht doch recht gut aus! Wenn du auf die Genauigkeit verzichten kannst: Double ist deutlich schneller als Extended. Aber grad für einen Zoom kann die Genauigkeit interessant werden (ich selbst hab bei immens starkem Zoom auch schon mal das "Ende von Double" gesehen ).

Zitat von cumi:
Nun also ich hab das ganze mit der GR32 Unit einmal ausprobiert. Und ich muss sagen... kein vergleich viel schneller. Nur leider versteh ich das mit dem Alpha Teil des TColor32 Typs noch nicht ganz. Für was ist der gut? Kann man den auch weglassen? Denn momentan hab ich noch das Problem, das meine Bitmaps vielviel grösser werden als sie vorhin waren. Dies ist relativ verherend da ich ja nicht belibig Ram habe....
Den Alphateil kanst du ganz weg lassen, ja. Der sollte dann imho auf 255 gesetzt werden. Der wird erst interessant wenn du mehrere Bitmaps halbtransparent überlagern möchtest. Allerdings kann man ihn nicht ganz weg lassen, d.h. ein Pixel wird immer volle 32 Bit beanspruchen. Deshalb ja auch Graphics32 .
Die gesamte Sequenz im RAM zu halten ist imho ohnehin nicht so glücklich. Über Chunks von so 10 bis 20 Bitmaps im Speicher kann man reden, die dann in einem Schwupps geschrieben werden, aber ich hab jedes Bitmap direkt nach Fertigstellung weggeschrieben und fertig.

Zitat von cumi:
Nun nochmals eine kurze Frage. Du sagtest du überlässt das "Filmmachen" an Virtualdub etc. Wie funktioniert das denn bei dir genau? Also Virtualdub kenn ich relativ gut. Ich benutzte es häufig zum umcodieren von Filmen. Jetzt speicherst du einfach alle Frames als Bitmap auf die HDD?
Japp, genau so
Einfach mit aufsteigender Nummereierung benennen (z.B. frac0001.bmp; frac0002.bmp; ...; fracXXXX.bmp), und VirtualDub (und auch TMPGEnc) erkennen mit Öffnen des ersten Bildes der Sequenz dass es auch eine Sequenz ist, und behandelt es wie ein Video.
Ist zunächst mal die einfachere Variante während man sich noch mit den "wichtigen" Dingen rumplagen muss 8).

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat