AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Welche GraphicLib zum Zeichnen von Polygonen?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche GraphicLib zum Zeichnen von Polygonen?

Ein Thema von Jacks · begonnen am 7. Mär 2016 · letzter Beitrag vom 14. Mär 2016
Antwort Antwort
Seite 2 von 3     12 3      
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#11

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 7. Mär 2016, 20:26
Hm, Du lädst 100.000 Objekte aus der Datenbank und der Show-Stopper ist das Zeichnen auf dem Canvas. Mit anderen Worten, das Laden eines Objekts ist schneller, als das Zeichnen, würde ich so nicht erwarten. Ist das Zeichnen der Objekte so komplex?

Nur mal so für mein Verständnis für die Problematik:
  • Erster Versuch
    Du hast in einem Thread die Datensätze geladen und sofort gezeichnet, da war dann das Laden die Bremse
  • Zweiter Versuch
    Du lädst die Datensätze in mehreren Threads in denen du auch zeichnest, deswegen muss der Canvas gesperrt werden. Jetzt ist das Zeichnen die Bremse.

Gedanken die nicht aus der Erfahrung geboren sind
  • Die Lade-Threads zeichnen nicht
    Sondern sie über geben die zu zeichnenden Objekte einem Zeichnen-Thread (von dem es nur einen gibt). Der Canvas muss nicht mehr gesperrt werden, aber die Übergabe an den Zeichen-Thread muss natürlich Threadsave gestaltet werde.
  • Du teilst deinen Canvas in Kacheln auf
    Jede Kachel hat dann einen eignen Canvas und einen eignen Lade-Thread. Funktioniert nur, wenn Du die Objekte aus der entsprechend sortiert aus der Datenbank abrufen kannst.
  • Jeder Lade-Thread hat einen Speicher-Canvas
    Es wird dann während des Ladens nur im Speicher gezeichnet und zum Schluss alle Canvas gemerged und auf dem Display ausgegeben.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#12

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 7. Mär 2016, 20:44
Nochmal zum Malen zurück. Nur damit Mißverständnisse ausgeräumt sind.
So sieht ungefähr das Geschwindigkeitsverhältnis aus:
Canvas < Graphics32 << (DirectX, OpenGL, Vulkan)

Aber auch die Lernkurve. Sprich, die Einarbeitung in DirectX, OpenGL ist viel, viel höher als bei der Canvas-Variante. Vulkan ist ganz neu und soll derzeit noch viel komplizierter sein, aber auch noch etwas schneller.
Ich persönlich halte Graphics32 -obwohl ich mich auch mit OpenGL beschäftige- noch als beste Variante für sowas, aber da gibt es auch sehr unterschiedliche Meinungen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#13

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 8. Mär 2016, 04:05
Wie sieht es aus mit SDL (Simple DirectMedia Layer, zlib License)...
Läßt sich kombinieren mit OpenGL und Direct3D und unterstützt mehrere Betriebssysteme.
https://www.libsdl.org/

Außerdem wären da noch:

Asphyre Pascal Extended LIB http://asphyre.net/ (MPL)
VampyreImaging LIB http://imaginglib.sourceforge.net/
AGGPas ??

Viel Spass beim Testen....

GR32 kann kein Linux oder ???
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#14

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 8. Mär 2016, 12:24
Zitat:
GR32 kann kein Linux oder ???
Wie?
GR32 kann Lazarus
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#15

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 8. Mär 2016, 21:21
Sicher, dafür haben die Jungs und Mädels von GR32 die Bedienungsanleitung für Lazarus auf ihrer Seite....
Auch wenn man das vielleicht nocht toppen könnte, aber es gibt zumindest eine...

Ob das dann jedoch nur auf Windows funzt oder auch auf Linux hab' ich noch nie getestet...

Im Moment hab' ich da keinen Bedarf, aber meine Favoriten sind SDL, Asphyre und Vampyre... Außerdem kombinierbar und Plattformunabhängig, was für die Zukunft generell 'ne gute Idee sein dürfte. Dazu noch OpenGL Header und man ist gut ausgerüstet...

Außer man baut Software ausschließlich für Windows, dann kann man auch gleich nur auf Direct3D/2D setzen...
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 9. Mär 2016, 10:21
Für so grundsätzliche Fragen zu Direct2D empfehle ich dieses kostenlose E-Book:
https://www.syncfusion.com/resources...books/direct2d

Man muss zwar ein bisschen überlegen, da die Beispiele mit XAML und C++ gemacht sind, aber die grundsätzliche Herangehensweise für VCL und Delphi ist gleich.
  Mit Zitat antworten Zitat
rwalper

Registriert seit: 6. Sep 2006
48 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 9. Mär 2016, 11:20
Nur kurz zur Ergänzung: GDI+ ist nicht hardware-beschleunigt und wird es vermutlich nicht werden, DirectX ist hardware-beschleunigt.

DirectX lässt sich leicht und schnell austesten, denn Delphi (ab welcher Version weiß ich aktuell nicht) enthält einen Wrapper für Direct2D. Man braucht nur die Unit Vcl.Direct2D einbinden und die Klasse TDirect2DCanvas nutzen.
  Mit Zitat antworten Zitat
Jacks

Registriert seit: 7. Mär 2016
14 Beiträge
 
#18

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 14. Mär 2016, 11:07
Nochmal Danke für die viele Antworten.

Mit HeZas Tipps konnte ich die Zeit schon reduzieren, jedoch bin ich noch nicht ganz zufrieden.
Werde mir mal OpenGL und DirectX genauer anschauen - hoffe ich kann so noch paar Sekunden rausholen .

Grüße
Michael
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#19

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 14. Mär 2016, 11:42
Problem mit OpenGL ist, dass man das Polygon erst mal in Dreiecke zerlegen muss. Das ist im allgemeinen gar nicht so einfach, vor allem wenn das Polygon sich auch selbst schneiden kann (bzw. Löcher haben kann) und der Algorithmus effizient sein soll. Hatte mir dazu vor ein paar Jahren auch mal Gedanken gemacht, ist aber letztlich im Sande verlaufen.

Ob DirectX irgendwelche Funktionen dafür mitbringt, weiß ich nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

AW: Welche GraphicLib zum Zeichnen von Polygonen?

  Alt 14. Mär 2016, 11:46
Problem mit OpenGL ist, dass man das Polygon erst mal in Dreiecke zerlegen muss. Das ist im allgemeinen gar nicht so einfach, vor allem wenn das Polygon sich auch selbst schneiden kann und der Algorithmus effizient sein soll.
Also ich hab noch nicht viel mit OpenGL gemacht aber bin mir ziemlich sicher, dass man mit GL_LINE_STRIP/GL_LINE_LOOP (nur Linie) oder GL_POLYGON (ausgefüllt) ohne Probleme ein Polygon zeichnen kann ohne selbst irgendetwas in Dreiecke zerlegen zu müssen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:16 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