Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

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

AW: Mit mehreren Threads auf AdCanvas zeichnen.

  Alt 20. Feb 2011, 17:04
Hi,

"PlotPixel" hierfür zu verwenden ist nicht gerade effektiv. Zudem solltest du nur aus dem Hauptthread heraus auf das Grafikinterface zugreifen, insbesondere TAdCanvas ist nicht threadsafe! Ich würde einen anderen Ansatz vorschlagen:

Du unterteilst den Bildschirm in gleichmäßige, möglichst quadratische Bereiche. Für jeden Bereich erstellst du ein TAdBitmap. Hierauf greift je 1 Thread mittels TAdBitmap.Pixels (schnell!) zu. In der Zeichenroutine lädst du die TAdBitmaps (synchronisiert!) in TAdImages und zeichnest diese. Dabei würde ich die Zeichenroutine nur selten ausführen - also mittels TAdPerformanceCounter.FPS auf maximal 10 oder 20 mal pro Sekunde beschränken.

Der Vorteil ist: Die TAdBitmaps sind komplett im Hauptspeicher, im Hauptthread findet synchronisiert der Zugriff auf die Hardware statt. Außerdem ist "PlotPixels" sowieso sehr langsam (vergleichbar mit TBitmap.Canvas.Pixels).

Hoffe das hilft dir,
Andreas
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