Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Vorschau-Programm - welche Technik? (https://www.delphipraxis.net/56753-vorschau-programm-welche-technik.html)

MasterDG 10. Nov 2005 15:24


Vorschau-Programm - welche Technik?
 
Hallo!

Also ich hatte vor etwas längerer Zeit mal ein Bluescreen Programm geschrieben es aber nicht so wirklich fertig gemacht weil ich wenig Freizeit hatte. Nun möchte ich weiter machen...

Ich bin damals soweit gewesen das ich ein Bild in Echtzeit anzeige und dabei das Blau mit einem Hintergrundbild ersetzte. Das ganze habe ich mit Graphics32 realisiert. Die Auflösung war 320x240 und damit ziemlich klein.

Nun wollte ich bevor ich anfange weiter zumachen mal fragen ob ich mit meiner Methode weitermachen soll oder ich etwas anderes benutzen soll was schneller ist. Gibt es was, was schnell ist und einfach zu lernen? Ich habe mir so 640x480 oder größer vorgestellt.

Gibt es da was?

Ich bin mir bei Graphics32 halt nicht sicher ob des wirklich das richtige ist weil es, denke ich, in erster Linie für Graphikanzeige gecoded wurde. :gruebel:

Grüße
MasterDG

Rastaman 10. Nov 2005 15:40

Re: Vorschau-Programm - welche Technik?
 
DirectX? OpenGL? DelphiX?

MasterDG 10. Nov 2005 16:15

Re: Vorschau-Programm - welche Technik?
 
Hallo!

Was davon ist denn einfacher zu lernen? Sind die schneller als Graphics32?

Ich hab zwar alles schon mal gehört aber bisher noch nicht in einem Programm benutzt und kenne daher nicht die Schnelligkeit und die Möglichkeiten. :oops:

Gruß
MasterDG

Die Muhkuh 10. Nov 2005 16:16

Re: Vorschau-Programm - welche Technik?
 
Ich denke, wenn du mit OffScreenBitmaps (Kabarakh oder wie der Kerl heißt, kann dir sicher mehr dazu erzählen), sollte das mit der Graphics32 schnell genug sein. ;)

MasterDG 12. Nov 2005 08:53

Re: Vorschau-Programm - welche Technik?
 
Hallo!

Danke für eure Antworten!

Also bei 640x480 sind das 307200 Aktionen in 1/30 sec. Das is ne ganze Menge. Ich werde mal sehn ob ich das mit Graphics32 und Offscreen-Bitmaps hinbekomme.

Mal abgesehen von der Geschwindigkeit, was denkt ihr sollte ich das mit Graphics32 machen, oder ist das unfein? :oops:

Ich schreibe das Programm für mich und einen Freund, weil wir mit Bluescreen-Technik drehen wollen und da eine Vorschau echt praktisch wäre.


Gruß
MasterDG

Khabarakh 12. Nov 2005 09:37

Re: Vorschau-Programm - welche Technik?
 
Zitat:

Zitat von Spider
(Kabarakh oder wie der Kerl heißt, kann dir sicher mehr dazu erzählen)

Ein "h" hast du vergessen :wink: .

Zur Geschwindigkeit lässt sich sagen, dass meistens das Anzeigen durch Windows das Langsamste am Ganzen ist. Wenn du keine 100 Layer oder aufwendige Berechnungen benutzt, hängt die Framerate also im Wesentlichen von Windows ab. Am Besten einfach mal ausprobieren :wink: .
Dazu kannst du dir auch die "Sprites_Ex"-Demo im GR32-Verzeichnis anschauen, mit der das Team ein paar Performancemessungen betrieben hat:


Zitat:

Zitat von MasterDG
Mal abgesehen von der Geschwindigkeit, was denkt ihr sollte ich das mit Graphics32 machen, oder ist das unfein? :oops:

Ich wüsste keine Aufgabe, für die die GR32-Lib besser geeignet ist, als zwei Bitmaps zu verbinden.

MasterDG 12. Nov 2005 16:51

Re: Vorschau-Programm - welche Technik?
 
Hallo Khabarakh.

Danke für deine Antwort.

Also ich glaube ich weiß jetzt was mein Fehler war, den ich die ganze Zeit gemacht habe. Ich zeige das Bitmap in das ich schreibe (bzw. male) die ganze Zeit an. So wie ich dich verstanden habe sollte ich besser ein Bitmap im Hintergrund erstellen und da rein zeichnen und dann dieses Bitmap in ein Bitmap kopieren das angezeigt wird.

Wie ich dem Diagramm entnehmen kann ist es also kein Problem hohe Fps auch bei z.B. Vollbild zu bekommen... Das würde dann vollkommen ausreichen.

Meine einzigen Berechungen sind das zerlegen von einem TColor32 in RGB-Werte und das anschließende kontrollieren dieser Werte, also relativ einfache Berechungenen.

Eine kleine Nebenfrage habe ich noch: Ich habe zwei Möglichkeiten die Farbe in RGB-Werte zu zerlegen: 1. Eine Funktion der GR32-Library benutzten oder 2. mit shr . Bei der Funktion von GR32 werden die Farben in 3 Variablen geschrieben bei shr die Bytes verschoben. Was ist besser?

Gruß
MasterDG

Khabarakh 12. Nov 2005 17:44

Re: Vorschau-Programm - welche Technik?
 
Ich denke, du meinst diese Funktion:
Zitat:

Color32ToRGB

Delphi-Quellcode:
procedure Color32ToRGB(Color32: TColor32; var R, G, B: Byte);

procedure Color32ToRGBA(Color32: TColor32; var R, G, B, A: Byte);
Both procedures split the Color32 parameter up into their respective components.

These procedures are provided for convenience only. Use direct conversion in performance-critical parts of your code:

Alpha := Color32 shr 24;

Red := (Color32 and $00FF0000) shr 16;

Green := (Color32 and $0000FF00) shr 8;

Blue := Color32 and $000000FF;


Bit-Shifting ist also schneller, da du dir einen Funktionsaufruf sparst (wobei du dank D2005 auch die Inline-Methoden Red/Green/BlueComponent benutzen kannst, die sollten dann gleich schnell sein).
Eine weitere Möglichkeit ist der Zugriff über Delphi-Referenz durchsuchenTColor32Entry:
Delphi-Quellcode:
var
  C: TColor32;
  Red: Byte;
begin
  Red := TColor32Entry(C).R;
end;
Was nun am Schnellsten ist, kann ich dir nicht sagen, da müsstest du unsere Assembler-Experten fragen ^^ .

Zitat:

Also ich glaube ich weiß jetzt was mein Fehler war, den ich die ganze Zeit gemacht habe. Ich zeige das Bitmap in das ich schreibe (bzw. male) die ganze Zeit an. So wie ich dich verstanden habe sollte ich besser ein Bitmap im Hintergrund erstellen und da rein zeichnen und dann dieses Bitmap in ein Bitmap kopieren das angezeigt wird.
Wenn du TImage32 benutzt, musst du dich darum nicht mehr kümmern, das benutzt schon ein OffScreenBitmap.

MasterDG 30. Nov 2005 17:05

Re: Vorschau-Programm - welche Technik?
 
Hallo.

Also ich habe jetzt schon mal ein Vorab-Programm zum Testen der Schnelligkeit geschrieben. Ich benutze jetzt Layer im TBitmap32. Ein Layer ist der Vordergrund, eins der Hintergrund.

Das klappt alles recht gut. Ich habe mit QueryPerformanceCount mal die Zeit gemessen und bei einer Kamera mit 320x240 ist es bei ca 8000 - 9000. Allerdings habe ich ein leichtes Problem mit Ruckeln, denn regelmäßig springt die Zeit für die Berechung auf über 15000! Ich glaube dass dadurch die Ruckler verursacht werden.

Ich habe momentan keine richtige Idee woher das kommen könnte. Kann es sein dass es durch einen gleichzeitigen Zugriff auf das Bitmap32 kommen könnte?

Gruß
MasterDG


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz