Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Suchergebnisse

Suchergebnisse 1-19 von insgesamt 19.

Werbeanzeige

04.06.2012, 14:12

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Ja, als Integer. Ich müsste dann erst aus den dezimalen Integern einen Hex-Char bauen und das dann mit sprintf in umgekehrte Reihenfolge auslesen und auf meiner Variablen speichern. Die Vorgehensweise finde ich irgendwie Dackelkacke. Dafür gibt es ja SDL_MapRGBA, wäre nur fett wenn ich das korrekt ans laufen bekommen würde und ich nicht dafür das Rad neu erfinden muss. In der Beschreibung von SDL_MapRGBA habe ich folgendes entdeckt: Quellcode 1 If the specified pixel format has no alpha componen...

01.06.2012, 15:10

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Das nutzt mir nix... Ich will das Ergebnis von getcolor() vergleichen und eigentlich gar nicht ausgeben. Ich hatte schon dran gedacht, mit sprintf() mir nen String zu bauen und damit zu arbeiten. Aber das ist voll in die Hose gegangen. Da die anderen Farben in diesem "Uint32" vorliegen.

01.06.2012, 14:57

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

So, wie gewünscht, habe ich ein kleines Demoprogramm geschrieben, das mein Problem veranschaulicht. Ausgabe: Referenzfarbe: ff0000ff Ausgelesene einzelne 8-Bit Kanäle: r: 255 g: 0 b: 0 alpha: 255 Ausgelesene Farbe: ff0000 Wie man sieht, geht mir irgendwie der Alpha-Kanal verloren. Relevant dürfte da die Fkt. getcolor sein. Zeile 65 bis 83... C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5...

01.06.2012, 10:37

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Da habe ich aber noch eine Frage! Sollte mir: C-/C++-Quelltext 1 2 Uint32 ausgabe = SDL_MapRGBA(s->format, rc, gc, bc, ac); cout << "Ausgabe: " << hex << ausgabe << endl; Nicht Ausgabe der Form ff0000ff für volles rot bekommen? Die Ausgabe die ich bekomme lautet aber: ff0000 für rot... Wobei mir C-/C++-Quelltext 1 SDL_GetRGBA(p, format, &rc, &gc, &bc, &ac); Mir für Alpha( == ac) noch nen dezimalen Wert von 255 liefert. Das Surface habe ich dann auch mit nem 32Bit Farbraum angelegt, aber bei der ...

31.05.2012, 22:36

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

C-/C++-Quelltext 1 screen = SDL_SetVideoMode(800, 600, [b]16[/b], SDL_HWSURFACE); Besser: C-/C++-Quelltext 1 screen = SDL_SetVideoMode(800, 600, [b]24[/b], SDL_HWSURFACE); Da habe ich Trottel gar nicht drüber nachgedacht! Ich will nen 24Bit Farbwert, aber mein Surface hat nur 16... Das kann ja nicht klappen...

31.05.2012, 17:57

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Die Variablen habe ich am Anfang der Fkt definiert, in welcher ich dieses Gelumpe unter anderem nutzen möchte: C-/C++-Quelltext 1 Uint8 rc, gc, bc, ac; Ich schreibe nicht direkt in die Variablen, weil das schlicht nicht geht: Quellcode 1 Invalid arguments ' Candidates are: void SDL_GetRGBA(unsigned int, const SDL_PixelFormat *, unsigned char *, unsigned char *, unsigned char *, unsigned char *) ' Oder was meinst du jetzt?

31.05.2012, 17:38

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Wenn ich ein rotes Pixel (gesetzt mit 0xff00ff) auslese, bekomme ich für rc = 255 gc = 0 bc = 0 ac= 255 Also das hat dann mal geklappt, würde ich sagen.

31.05.2012, 17:36

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Die Farbe und das Pixel passen. Da ich zum einen schon das ganze Surface mit Rot eingefärbt habe und die Ausgabe der Farbwerte aus r, g, b und a passen. Erst wenn ich die Werte in SDL_MapRGBA reingesteckt habe, kommt Schrott raus. C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Uint32 farbe = 0xff0000ff //rot in hex-Darstellung //Pixel holen, die ganze Fläche ist vorher auf 0xff0000ff gesetzt worden. SDL_LockSurface (s); SDL_PixelFormat *format = s->format; Uint32 p = getp...

31.05.2012, 17:20

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Das GetRGBA funktioniert. Auch die Werte die in r, g, b und a stehen sich Plausibel. Nur wenn ich dann Versuche mit SDL_MapRGBA aus den vier einzelnen 8Bit Werten für r, g, b und a einen 32-Bit hex-Wert zu generieren, schlägt das Fehl: Ausgabe: C-/C++-Quelltext 1 2 3 r: ff g: 0 b: 0 alpha: ff //Ausgabe der einzelnen Werte für jeden Kanal Ausgabe: f800 //Ergebnis von SDL_MapRGBA Farbe: ff0000ff //Referentwert für Rot C-/C++-Quelltext 1 2 3 4 5 6 Uint32 farbe = 0xff0000ff; Uint32 ausgabe = SDL_Map...

31.05.2012, 16:30

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Hat leider nicht viel genützt... Aber vielleicht mache ich da auch noch was Falsch. Mit Pointern stehe ich immer noch ein wenig auf Kriegsfuß... Die Fkt. die nutze, sagt mir folgendes: C-/C++-Quelltext 1 SDL_GetRGBA(Uint32 pixel, const SDL_PixelFormat * const fmt, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); Für r, g, b und a erwartet GetRGBA einen Pointer. Wenn ich hier jetzt die Adresse meiner Variablen mittels &r, &g, &b und &a an die Fkt. übergebe, dann kann ich mir doch ein Konstrukt wie dieses...

31.05.2012, 14:27

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Oh... Macht Sinn... Werde ich gleich mal ausprobieren.

31.05.2012, 13:56

Forenbeitrag von: »arnohr«

SDL - Farben umrechnen RGBA zu Uint32

Hallo Forum! Ich suche mir das gerade schon die Finger blutig... Gestern habe ich es mit Hilfe aus dem Forum endlich hinbekommen, den Farbwert eines Pixels aus einem SDL-Surface auszulesen: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Uint32 farbe = 0xff0000ff //rot in hex-Darstellung SDL_LockSurface (s); SDL_PixelFormat *format = s->format; Uint32 p = getpixel(s, x, y); SDL_GetRGBA(p, format, &r, &g, &b, &a); SDL_UnlockSurface (s); Uint32 ausgabe = SDL_MapRGBA(format, rc, gc, bc, ac); /...

30.05.2012, 17:14

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Ähm... Jetzt noch eine andere Frage, gibt es eine fertige Fkt. um aus dem RGB (255 255 255) die hexadezimale Darstellung der Farbe in einem String zu bauen? Jaja www.gidf.de, aber Goolge war in der Hinsicht nicht mein Freund, oder ich habe einen unpräzise Angaben bei der Suche gemacht. http://sdl.beuc.net/sdl.wiki/SDL_MapRGB hat irgendwie nicht zum gewünschten Ergebnis geführt.

30.05.2012, 16:59

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Fehler gefunden: C-/C++-Quelltext 1 2 3 4 5 6 7 SDL_LockSurface (s); SDL_PixelFormat *format = s->format; Uint32 p = getpixel(s, 400, 300); //Uint32 muss es heißen... SDL_GetRGB(p, format, &rc, &gc, &bc); SDL_UnlockSurface (s); cout << "r: " << (int)rc << " g: " << (int)gc << " b: " << (int)bc << endl; Jetzt kommt endlich das richtige raus! Danke dir!

30.05.2012, 16:43

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Ok, das richtige Pixel scheine ich jetzt zu treffen. Bei weißen Pixeln gibt mir C-/C++-Quelltext 1 2 3 4 5 6 7 SDL_LockSurface (s); SDL_PixelFormat *format = s->format; Uint8 p = getpixel(s, 400, 300); SDL_GetRGB(p, format, &rc, &gc, &bc); SDL_UnlockSurface (s); cout << "r: " << (int)rc << " g: " << (int)gc << " b: " << (int)bc << endl; folgendes aus: r: 0 g: 28 b: 255 Bei roten Pixeln (255 0 0) bekomme ich r: 0 g: 0 b: 0 Irgendwas scheint da noch nicht zu passen.

30.05.2012, 16:34

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Aha! Wenn ich das richtig verstehe, enthält p dann die Adresse des Pixels, so das ich das so verwenden kann: C-/C++-Quelltext 1 SDL_GetRGB(32100, format, &r, &g, &b); ???

30.05.2012, 16:02

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Ok, ich weiß jetzt zwar nicht ob width == linewidth ist, aber mein Surface hat die Dimensionen 800x600, da bin ich mir sicher: screen = SDL_SetVideoMode(800, 600, 16, SDL_HWSURFACE);

30.05.2012, 15:51

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Klappt nicht! Nur um das zu klären, das ich da nicht noch irgendwo nen Fehler mache: Bei einem Surface von 800*600 Pixel, hat das Pixel in der Mitte folgende Nummer: 299 Zeilen * 800 Spalten + 400 Pixel = 239600 Fängt der bei 0 oder 1 an zu Zählen? Jedenfalls ist an dieser Stelle auf weiter Flur nur 255 255 255 zusehen. cout << "r: " << (int)rc << " g: " << (int)gc << " b: " << (int)bc << endl; Das Ergebnis ist aber (gecastet): r: 165 g: 255 b: 132

30.05.2012, 15:28

Forenbeitrag von: »arnohr«

SDL Farbwert eines Pixels auslesen

Der Beitrag ist zwar schon etwas älter, aber trifft fast mein Problem. Bin gerade dabei für meinen Prof. einen Paintclone in C und SDL zu schreiben und ich breche hier gleich ins Essen. Unter anderem möchte er gerne die klassische Füllfunktion realisiert haben. Grundlage meiner Idee zur Lösung des Problems ist, das ich den Farbwert des Pixels n mit den Koordinaten x/y auslese. Und das will mir einfach nicht gelingen! C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 SDL_LockSurface (MeinSurface); SDL_PixelForm...

Werbeanzeige