Seite 1 von 2

RGB-daten auslesen

Verfasst: 20.03.2010 15:14
von super_castle
Hallo, guten Tag.
Ich lese unten aus dem Buffer0 Daten aus und in dem Buffer1 rein.
Ich wollte mal sehen wie es funktinoniert.
Das Sprite1 enthält dann die Daten korrekt, das Bild erscheint.

Nun möchte ich auch mal bestimmt Farbdaten kontrollieren zb rotwert(255) aus dem Buffer, bevor ich diese in den Buffer1 Packe.

Wie geht das?

Danke.

Gruss

Code: Alles auswählen


StartDrawing(SpriteOutput(0))
    Buffer0      = DrawingBuffer()             
    Pitch0       = DrawingBufferPitch()        
    PixelFormat0 = DrawingBufferPixelFormat()  
  StopDrawing()
  StartDrawing(SpriteOutput(1))
    Buffer1      = DrawingBuffer()             
    Pitch1      = DrawingBufferPitch()        
    PixelFormat1 = DrawingBufferPixelFormat()  
  StopDrawing()
   
  If PixelFormat0= #PB_PixelFormat_32Bits_BGR
    pitch0=pitch0*64
    For zaehlbuffer=buffer0 To buffer0+pitch0 Step 4
      wert=PeekL(zaehlbuffer)
      PokeL(Buffer1,wert)
      Buffer1=Buffer1+4
      DisplaySprite(1,100,10)
    Next
  EndIf

Re: RGB-daten auslesen

Verfasst: 20.03.2010 17:33
von super_castle
Irgendwie klappt die Filterung nicht.
Wenn ich : wert & $0000ff00 > 255 , dann bekomme ich den Rotwert als abfrage.
Hier nicht : wert & $0000ff00 = 255.
Wie kann man den Wert genau rausfiltern?

Gruss

Code: Alles auswählen

For zaehlbuffer=buffer0 To buffer0+pitch0 Step 4
    wert=PeekL(zaehlbuffer)
    If wert & $0000ff00 > 255
      PokeL(Buffer2,wert)
    EndIf    
    Buffer2=Buffer2+4  
  Next

Re: RGB-daten auslesen

Verfasst: 20.03.2010 17:44
von STARGÅTE
wie wäre es mit Red(), Green(), Blue() ??

Achte aber genau darauf welches Format du hast RGB <> BGR !

Re: RGB-daten auslesen

Verfasst: 20.03.2010 17:48
von Josh
oder wennst es schon auf deine art rausrechnen willst:

Code: Alles auswählen

Wert = $1526EA
Debug wert
Debug "Rot  = " + Str(Wert & $000000FF)
Debug "Grün = " + Str(Wert & $0000FF00 / 256)
Debug "Blau = " + Str(Wert & $00FF0000 / 256 / 256)
btw: wenn ich wie in der letzten zeile 256 / 256 schreibe, rechnet das der compiler dann schon aus?

Re: RGB-daten auslesen

Verfasst: 20.03.2010 17:52
von super_castle
Jup, das funktioniert, wenn ich "blue" einsetze.

Gibt es noch eine Vergleichsroutine mit Shift oder so? zum Zeit-testen.

Ich möchte nämlich nach einzelnen Pixel suchen während einer Bewegung.

Gruss

Re: RGB-daten auslesen

Verfasst: 20.03.2010 18:52
von CSHW89
meinst du das hier:
Wert = $1526EA
Debug wert
Debug "Rot = " + Str(Wert & $000000FF)
Debug "Grün = " + Str(Wert & $0000FF00 >> 8 )
Debug "Blau = " + Str(Wert & $00FF0000 >> 16)
lg kevin

edit: oh verdammt, '8'+')' ist ja 8)

Re: RGB-daten auslesen

Verfasst: 20.03.2010 19:06
von Josh
CSHW89 hat geschrieben:oh verdammt, '8'+')' ist ja ...)
geht aber trotzdem:
8)

Re: RGB-daten auslesen

Verfasst: 20.03.2010 19:18
von CSHW89
:iamwithstupid: man kann ja die smiles ausschalten

Re: RGB-daten auslesen

Verfasst: 20.03.2010 21:03
von sohmen
Habe ein ähnliches Problem vielleicht kann man mir helfen.

Ich bin gerade dabei einen fast universalen 2d Mapcreator mit bmp ersteller zu schreiben nur hat sich das Speichern und Laden der Infos aus den verschiedenen listen als Problematisch erwiesen.

folgender codeansatz ist in meinem Schädel und versucht mir die Zeit für den Rest des Progs zu stehlen es soll außer Zwei Ordnern eines für Hintergrund und eines für details sowie die BMP für die eigentliche Map in einem Hauptordner nichts erstellen.

Info 1.Betretbar/2.Nicht Betretbar/3.Betretbar mit Sonderfunktion/4.Nicht Betretbar mit Sonderfunktion gespeichert werden
Aufbaubar auf 65280.BMP´s für details/Hintergrund insgesammt:130560 bmp´s
Den Programmcodeansatz schicke Ich mit. Wenn jemand etwas als Procedur schreibt oder hat wäre ich für die Hilfe sehr dankbar.

Code: Alles auswählen

[code];empfolen als procedur um in jedes spiel integrierbar zu sein
;coder für speicherung nicht fertig nicht ausgereift

For bbmph=1 To kartenhohe
  For bbmpb=1 To kartenbreite
    CreateSprite(Str(kartennummer),kartenbreite*2,kartenhohe*2)
    StartDrawing(SpriteOutput(Str(kartennummer)))
      Plot(bbmpb, bbmph, RGB(0,0,0) )
      Plot(bbmpb+kartenbreite,bbmph+kartenhohe, RGB(0,0,0) )
    StopDrawing()
  Next bbmpb
Next bbmph
SaveSprite(

;coder für laden nicht fertig nicht ausgereift vorgaben sind zwischen start und top drawing
For bbmph=1 To kartenhohe
  For bbmpb=1 To kartenbreite
    StartDrawing(SpriteOutput())
      Kartenwertmultiplikator =Red(Point(bbmpb,bbmph))
      Kartenwertnumeral =Blue(Point(bbmpb,bbmph))
      Feldereignis =Green(Point(bbmpb,bbmph))
      Detailmultiplikator =Red(Point(kartenbreite+bbmpb,kartenhohe+bbmph))
      Detailnumeral =Blue(Point(kartenbreite+bbmpb,kartenhohe+bbmph))
      ;FreieVerfügung =Green(Point(kartenbreite+bbmpb,kartenhohe+bbmph))
    StopDrawing()
  Next bbmpb
Next bbmph
[/code]

Re: RGB-daten auslesen

Verfasst: 20.03.2010 21:07
von Josh
hi sohmen,

bitte die code-tags verwenden und codeeinrückungen machen. kannst ja noch nachträglich ändern.