Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
Delphi 12 Athens
|
AW: Pointer auf Daten einer TBitmap erhalten
8. Okt 2011, 01:38
Das Array meiner letzen Zeile macht quasi nicht viel anderes, wie deine Rechnung x+(MaxX*y)
MyPixels[x + (MaxX * y)] = MyPixels + (x + (MaxX * y)) * 4 = MyPixels + (x + (MaxX * y))
MyArray[x, y] = MyArray[x][y] = (MyArray + x * 4)^ + y * 4 = (MyArray + x)^ + y
wobei die *4 nicht als eigenständige Operation (Assemblerbefehl) vorhanden sind, sondern in dem Addition-Befehl mit reinoptimiert sind, also beide jeweils 3 Assembler
Allerdings einmal MUL+ADD+ADD gegen ADD+MOV+ADD ... kommt also nur noch drauf an, was die CPU wie schnell abarbeitet.
(z * 4 = z shl 2)
Und es ist bei dem Array egal, in welcher Reihenfolge die Zeilen liegen.
Gut, dafür muß man hier am Anfang einmal alle ScanLines holen, wärend man bei dem Anderen nur die Letzte/Erste holen muß.
die Berechnungen basieren auf 32 Bit-Bildern
$2B or not $2B
|