AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi schnelle Zeichen Routinen. Zur Zeit Canvas.Draw
Thema durchsuchen
Ansicht
Themen-Optionen

schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

Ein Thema von Jackie1983 · begonnen am 14. Okt 2007 · letzter Beitrag vom 16. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 14. Okt 2007, 14:22
hi,

zur Zeit Zeichne ich meine Bitmaps sind ca. 100-200 auf ein Canvas mit canvas.Draw(x,y,bitamp)
Nur wenn ich 100 Bitmaps zeichnen muss, ist die cpu bei 100%.

Bin also auf der suche nach einer Methode die etwas schneller ist. Die Bitmaps können verschoben werden und sind in einer liste vorhanden die ich mit einer for schleife durchgehe. Hatte damals schon mal mit opengl gearbeitet. Müste mich aber wieder komplett einarbeiten......

Was meint ihr?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 14. Okt 2007, 14:23
Von der Performance ist OpenGL oder DirectX auf jeden Fall besser.
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 14. Okt 2007, 14:25
Du kannst mal schauen, ob MSDN-Library durchsuchenBitBlt schneller ist. Für die DCs musst du Canvas.Handle und Bitmap.Canvas.Handle einsetzen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#4

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 14. Okt 2007, 15:06
Zitat von Apollonius:
Du kannst mal schauen, ob MSDN-Library durchsuchenBitBlt schneller ist. Für die DCs musst du Canvas.Handle und Bitmap.Canvas.Handle einsetzen.
leider nicht die methode ist noch langsamer wie jetzt.........
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 14. Okt 2007, 15:07
Zitat von mkinzler:
Von der Performance ist OpenGL oder DirectX auf jeden Fall besser.
dann werde ich mich wohl oder übel wieder mit opengl beschäftigen.....
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 15. Okt 2007, 14:25
Zitat von Jackie1983:
Zitat von Apollonius:
Du kannst mal schauen, ob MSDN-Library durchsuchenBitBlt schneller ist. Für die DCs musst du Canvas.Handle und Bitmap.Canvas.Handle einsetzen.
leider nicht die methode ist noch langsamer wie jetzt.........
Das wundert mich jetzt... Ich habe BitBlt eingesetzt, um Canvas.Draw loszuwerden, denn Bitblt war Faktor 20 schneller. Selbst die Umstellung auf MaskBlt (wegen der Transparenz) war noch immer 12x schneller.
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#7

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 15. Okt 2007, 21:44
dann habe ich was falsch gemacht....
  Mit Zitat antworten Zitat
Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 15. Okt 2007, 21:55
Also wenn Du auf GDI umstellst müsstest du um einiges schneller werden. Der beste Weg IMHO. Zuerst einen CreateCompatibleDC einen Memory-DC holen , dann mit BitBlt alles in den Memory-DC blitten und den zum Abschluß einmalig auf den Canvas, das sollte mehr als den Faktor 20 bringen!
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#9

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 15. Okt 2007, 23:57
habe es jetzt geändert. Soweit so gut, bei 100 Objekten ist die cpu bei 70-75%
Das ist mir leider noch zu viel. Da werde ich wohl oder übel auf opengl umsteigen.....
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: schnelle Zeichen Routinen. Zur Zeit Canvas.Draw

  Alt 16. Okt 2007, 00:31
Ich habe eine Anwendung entwickelt welche mit BitBlt und z.T. auch Draw über tausend Objekte auf dem Form Canvas malt und habe gar keine Probleme und vor allem keine CPU Last. Ich nutze dabei aber MSDN-Library durchsuchenInvalidateRect(), Delphi-Referenz durchsuchenTCanvas.ClipRect, MSDN-Library durchsuchenInterSectRect() und wie gesagt MSDN-Library durchsuchenBitBlt(). Bei mir werden Objekte wirklich nur gemalt, wenn sie gemalt werden müssen (schneiden oder innerhalb des ClipRect) und dann auch nur den Teil, den sie malen müssen (IntersectRect() liefert das Übeschneidungsrechteck). Ganz ohne OpenGL oder andere Dinge..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:45 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