Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

POINT-Ersatz (mit Pitch)

Uploader:RedakteurVolta
Datum/Zeit:22.08.2011 18:03:50

Screen 18, 32
Dim As Double lastTime, ersteZeit, zweiteZeit, dritteZeit
Dim As ULongInt counter1, counter2, counter3
Dim As Integer x, y, z = 490
Dim As Any Ptr bild = ImageCreate(z, z,&hFF000000)
Dim As Integer breit = Cast(Integer Ptr,bild)[2]
Dim As Integer hoch = Cast(Integer Ptr,bild)[3]
Dim As Integer Pitch = Cast(Integer Ptr,bild)[4]\4

lastTime = Timer
For y = 0 To hoch-1
    For x = 0 To breit-1
        If Point(x, y, bild) = &hFF000000 Then
            counter1 += 1
        EndIf
    Next
Next
ersteZeit = Timer - lastTime


lastTime = Timer
Dim As Integer Ptr j = Cast(Integer ptr, bild+32) 'Startadresse
For x = 1 To hoch
    For y = 0 To breit-1
        If j[y] = &hFF000000 Then
            counter2 += 1
        EndIf
    Next
    j+=Pitch
Next
zweiteZeit = Timer - lastTime


lastTime = Timer
counter3=0
y = Cast(Integer,bild)+32 'Startadresse
For x = 1 To hoch  'Anzahl Zeilen
    Asm
        mov ebx, dword Ptr [breit] 'Anzahl Zeilenpixel
        mov edx, dword Ptr [y] 'Startadresse
        Xor ecx, ecx           'Zähler=0
        LLoop1:
        mov eax, [edx]         'Farbpixel holen
        And eax, &hffffff      'nur RGB
        jnz LLoop2             'nicht 0, dann nicht zählen
        inc ecx                '+=1 Pixel schwarz
        LLoop2:
        Add edx, 4             '+=4 Adresse
        dec ebx                '-=1 Pixel
        jnz LLoop1
        Add dword Ptr [counter3], ecx
    End Asm
    y +=pitch 'neue Adresse
Next

dritteZeit = Timer - lastTime

Print "point() :", ersteZeit
Print "Pointer :", zweiteZeit;" ";Fix(ersteZeit/ zweiteZeit);" x schneller!"
Print "Inlineas:", dritteZeit;" ";Fix(ersteZeit/ DritteZeit);" x schneller!"
Print
Print "Erstes  Ergebnis:", counter1
Print "Zweites Ergebnis:", counter2
Print "Drittes Ergebnis:", counter3

ImageDestroy (bild)
Sleep