RGB-daten auslesen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

RGB-daten auslesen

Beitrag 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
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: RGB-daten auslesen

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: RGB-daten auslesen

Beitrag von STARGÅTE »

wie wäre es mit Red(), Green(), Blue() ??

Achte aber genau darauf welches Format du hast RGB <> BGR !
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: RGB-daten auslesen

Beitrag 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?
super_castle
Beiträge: 557
Registriert: 29.11.2005 15:05

Re: RGB-daten auslesen

Beitrag 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
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: RGB-daten auslesen

Beitrag 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)
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: RGB-daten auslesen

Beitrag von Josh »

CSHW89 hat geschrieben:oh verdammt, '8'+')' ist ja ...)
geht aber trotzdem:
8)
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: RGB-daten auslesen

Beitrag von CSHW89 »

:iamwithstupid: man kann ja die smiles ausschalten
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
sohmen
Beiträge: 4
Registriert: 14.08.2009 20:55
Computerausstattung: Dell Inspiron 2x1,2GHz
2048 MB DDR2 Ram
ATI Radon 250MB Cache
Alter 3Jahre
Kontaktdaten:

Re: RGB-daten auslesen

Beitrag 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]
Zuletzt geändert von sohmen am 21.03.2010 09:46, insgesamt 2-mal geändert.
Auch eine Linie ist nur eine gerade Kurve.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: RGB-daten auslesen

Beitrag von Josh »

hi sohmen,

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