Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Farbabfrage beschleunigen.

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
funkeld
gesperrt


Anmeldungsdatum: 10.10.2009
Beiträge: 179

BeitragVerfasst am: 12.03.2010, 18:34    Titel: Farbabfrage beschleunigen. Antworten mit Zitat

Wie kann ich die Farbabfrage noch beschleunigen?

Hiermit lege ich die 2 Bilder (100X100 Pixel) vom Irrlichtfenster in eine Image:
Code:

Sub mScreenshot ()
   glReadPixels(xhi,600-yhi-xw,xw,yw, GL_BGRA, GL_UNSIGNED_BYTE, DataPointer)
   FreeImage_FlipVertical(bitmap)
   mmxcopy  hdnviereck +32, DataPointer,xw*yw*4   
   glReadPixels(xhi1,600-yhi1-xw,xw,yw, GL_BGRA, GL_UNSIGNED_BYTE, DataPointer)
   FreeImage_FlipVertical(bitmap)
   mmxcopy  hdnviereck1 +32, DataPointer,xw*yw*4   
End Sub


Es gehen damit nur Bytepointer, sonst werden die Farben nicht richtig erkannt :
Dim Shared As UByte Ptr bitmap,DataPointer

Darum habe ich mal dieses zur Abfrage benutzt, was eigentlich schon schnell ist:
Code:

Sub rectcollisionspruefung()   
   For yz=0 To yw-1
      For xz=0 To xw-1
         red=PEEK(UBYTE,hdnviereck+32+(xz*4)+(yz*pitch)+2)
         green=PEEK(UBYTE,hdnviereck+32+(xz*4)+(yz*pitch)+1)
         blue=PEEK(UBYTE,hdnviereck+32+(xz*4)+(yz*pitch)+0)
         If red=255 Or green=255 or blue=255 Then         
            zz=zz+1
            Locate 20,2   
            Print zz
            Exit Sub
         EndIf      
      Next
   Next
   
   For yz=0 To yw-1
      For xz=0 To xw-1
         red=PEEK(UBYTE,hdnviereck1+32+(xz*4)+(yz*pitch)+2)
         green=PEEK(UBYTE,hdnviereck1+32+(xz*4)+(yz*pitch)+1)
         blue=PEEK(UBYTE,hdnviereck1+32+(xz*4)+(yz*pitch)+0)
         If red=255 Or green=255 or blue=255 Then         
            zz=zz+1
            Locate 20,2   
            Print zz
            Exit Sub
         EndIf      
      Next
   Next        
End Sub


Damit habe ich es auch probiert:
Code:

TYPE pixelmap
 blue AS UBYTE
 green AS UBYTE
 red AS UBYTE
 allpha AS UBYTE
END TYPE


Wie könnte ich die Abfrage weiterhin beschleunigen?

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz