AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Scanline erklären

Ein Thema von steppo · begonnen am 11. Mär 2005 · letzter Beitrag vom 12. Mär 2005
Antwort Antwort
Seite 2 von 2     12   
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

Re: Scanline erklären

  Alt 12. Mär 2005, 00:26
Habs gefunden.

Oh Man. Das nennt mann Performance.
Ok jetzt sehe ich den Unterschied mehr als deutlich.

Danke für deine Hilfe.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

Re: Scanline erklären

  Alt 12. Mär 2005, 00:37
Doch noch eine Frage.

Was passiert hier:
Delphi-Quellcode:
          P^.rgbRed := 0;
          P^.rgbGreen := 0;
          P^.rgbBlue := $ff; <-- haben wir ja schon, siehe IF Bedingung
Habe die Einfärbung unter dem oben genannten Code vorgenommen.
          Canvas.Pixels[x, y] := clBlue;
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Scanline erklären

  Alt 12. Mär 2005, 00:52
Moin!

Zitat von steppo:
Was passiert hier:
Delphi-Quellcode:
          P^.rgbRed := 0;
          P^.rgbGreen := 0;
          P^.rgbBlue := $ff; <-- haben wir ja schon, siehe IF Bedingung
Im 32 Bit Farben Modus besteht ein Pixel aus 4 Bytes: 1 Byte Rotanteil, 1 Byte Grünanteil, 1 Byte Blauanteil und 1 Füllbyte. Die TRGBQuad Struktur setzt sich aus den 4 Elementen zusammen. Darin hast du 4 Elemente definiert: rgbRed, rgbGreen, rgbBlue und rgbReserved. Das sind die 4 Elemente und deren Funktion sollte klar sein.
ScanLine liefert dir immer ein Zeiger auf das 1. Byte der jeweiligen Zeile zurück und ich habe mir die Variable P als PRGBQuad definiert, also ein Zeiger auf diese oben angesprochene TRGBQuad Struktur. Damit habe ich also beim zuweisen von P := ScanLine[y]; sofort einen Zeiger auf das erste Pixel und ich erhalte damit sofort z.B. den Rotanteil des Pixel mit P.rgbRed (das ^ vor dem . ist ab Delphi 5 optional).
So, nun zu deiner Frage: Dieser 3-zeiler weisst die Farbe Blau dem Pixel zu. Die Farbe blau besteht aus 0 Rotanteil, 0 Grünanteil und vollen 255 Blauanteil. Diese weise ich zu ($ff = hexadezimalzahl FF = 255 dezimal).

Zitat von steppo:
Habe die Einfärbung unter dem oben genannten Code vorgenommen.
          Canvas.Pixels[x, y] := clBlue;
? Wie ist das zu verstehen? Hast du in der ScanLine Routine nochmals diese Zeile eingefügt? Warum? Dann ist doch der gesamte Geschwindigkeitsvorteil von ScanLine wieder dahin??!?!

MfG
Muetze1
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

Re: Scanline erklären

  Alt 12. Mär 2005, 00:59
Habe meine Zeile (mit gleichem Einwand wie du eben bezogen auf Geschwindigkeitsverlust) unter deinen dreizeiler eingefügt.
Habe keinen Verlust Festgestellt.

Grund:

Bei deinem Code wird kein Pixel eingefärbt.
Habe also keinen direkten Vergleich.

Die Seite bleibt bei deinem Code unverändert.
Entschuldige
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Scanline erklären

  Alt 12. Mär 2005, 01:03
Moin!

Zitat von steppo:
Grund:

Bei deinem Code wird kein Pixel eingefärbt.
Habe also keinen direkten Vergleich.
Dann sag/schreib das und nicht:

Zitat von steppo:
Habs gefunden.

Oh Man. Das nennt mann Performance.
Ok jetzt sehe ich den Unterschied mehr als deutlich.
Ich klicke mal schnell eine Beispiel App zusammen samt Zeitmessung und dann sehen wir weiter... mom...

MfG
Muetze1
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

Re: Scanline erklären

  Alt 12. Mär 2005, 01:07
Entschuldigung, war ein Schnellschuß meinerseits.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

Re: Scanline erklären

  Alt 12. Mär 2005, 01:21
Du hast recht, die Performance leidet erheblich darunter.
OK.

Dennoch wird keine Pixeländerung vorgenommen.
Wenn ich dich richtig verstanden habe, werden in diesem Beispiel die Farbanteile von Rot und Grün auf null gesetzt, sodaß nur der Blaue Anteil übrig bleibt.
Warum wird dieser nicht angezeigt?
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: Scanline erklären

  Alt 12. Mär 2005, 01:31
Moin!

Das ist ein Fehler in deinem Code - mein Code habe ich übernommen in die Beispiel App und der klappt einwandfrei. Schau es dir an...

Also der Unterschied ist auch sehr gut zu erkennen, siehe Screenshot...

MfG
Muetze1
Miniaturansicht angehängter Grafiken
pixels_scanline_507.jpg  
Angehängte Dateien
Dateityp: zip scanline_pixels_timing_144.zip (168,2 KB, 43x aufgerufen)
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

Re: Scanline erklären

  Alt 12. Mär 2005, 01:49
Das sieht gut aus.
Habe jetzt den Qullcode eins zu eins übernommen (copy/past).
Lediglich den Pfad zu meiner datei angepasst.
Keine Pixelfarbänderung.

OK.

Werde morgen weitermachen.

Danke für deine Hilfe

Gute Nacht
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 17:53 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