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

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

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.