Frage zu Datentyp "Uint32" und "Uint8"
-
Hallo,
ich beschäftige mich erstmals mit SDL und bin jetzt dabei schon auf paar Sachen gestoßen, die über mein C++Grundlagenwissen hinausgehen.
Ich wollte jetzt gerne eine leere SDL_Surface erstellen, in das ich dann weitere Bilder reinkopieren will. Dazu gäbe es diese Funktion:
SDL_Surface *SDL_CreateRGBSurface (Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);Aber der Datentyp Uint32 verwirrt mich... Angeblich sind die vier Parameter ja nur ein 4Byte-Int, bei denen je ein Byte für einen Parameter steht. Wenn ich aber ein Int *hexadezimal* übergebe, bekomme ich einen Compile-Error (Warum überhaupt hexadezimal? Wurde mir nur mal so in den Kopf gesetzt...). Wenn ich vier Parameter nehme und immer 0xff reinschreibe, klappt es zwar, das Bild zum Schluss ist aber total hell. Bei 0x00 für den Alphakanal viel zu dunkel.
Wie muss die Parameterliste aussehen, damit ich ein farbechtes Bild erhalte?
Und damit man die RGBA-Werte nicht hexadezimal eingeben muss, soll man SDL_MapRGBA verwenden können, wurde mir gesagt.
Uint32 SDL_MapRGBA (SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b, Uint8 a);Aber da verstehe ich jetzt wieder die Parameterliste icht ganz... Uint8, was bedeutet das? 4 Parameter zu je 8 Bit, also ein Char? Aber eigentlich ist ja noch ein Int. Und es gibt ja nur einen Rückgabewert, wie soll die Funktion also für vier Parameter stehen können?
Danke im voraus!
-
Uint32 bedeutet: ein Ganzzahlwert ohne vorzeichen mit 32 bit Breite, also 4 Byte.
also: Uint32 == unsigned int
Uint8 ist analog
-
Maxi schrieb:
also: Uint32 == unsigned int
nö, bestimmt isses als 'unsigned long' definiert...
-
Bestimmt, aber nicht sicher! int und long sind z.B. im MSVC beider 32 bit. Wäre also nicht falsch. Am besten man schaut nach!
-
Artchi schrieb:
Bestimmt, aber nicht sicher! int und long sind z.B. im MSVC beider 32 bit. Wäre also nicht falsch. Am besten man schaut nach!
nö, es sollte einen eigentlich gar nicht interessieren. Man weiß ja eh, das ein Uint32 ein Vorzeichenloser-Integer-Typ ist. Ob das nun ein typedef auf unsigned long, unsigned short, unsigned integer-type-with-31-bit-and-have-a-nice-day ist, könnte nicht belangloser sein.
-
rüdiger schrieb:
nö, es sollte einen eigentlich gar nicht interessieren.
doch. spätestens wenn man sich selber ein 'uint32' basteln muss...
-
net schrieb:
rüdiger schrieb:
nö, es sollte einen eigentlich gar nicht interessieren.
doch. spätestens wenn man sich selber ein 'uint32' basteln muss...
Was ein ganze anderer Fall und eine ganze andere Frage wäre...