32bit integer von einem 16bit pointer lesen
-
Hi,
bin neu hier (bzw. war mit diesem Account nie richtig aktiv, obwohl er schon älter ist).
Mein Problem lässt sich nicht unbedingt so einfach beschreiben (deswegen der merkwürdige Titel): Ich habe einen Pointer auf 16bpp Bild und möchte es mit Hilfe bilinearer Interpolation auf den Bildschirm malen. Hierzu muss ich auch benachbarte Pixel auslesen, also z.B. Pixel 1 und das Pixel rechts daneben. Dies sind allerdings 2 Speicherzugriffe, schöner wäre es, das in einem einzigen 32bit Zugriff zu regeln. Den Pointer von Anfang an gleich zu casten ist NICHT möglich, da ich ihn trotzdem nach dem Lesen um 2 Byte weiter inkrementieren muss. Würde ich ihn casten, würde er gleich 4 Byte weiterspringen.Momentan habe ich das so probiert:
uint32 2pixel = *((uint32*)bild[bild_pos])
So bekomme ich allerdings eine Warnung vom Compiler: "warning: cast to pointer from integer of different size". Zusätzlich ist 2pixel IMMER 0.
Ich hoffe es ist möglich, dieses Problem zu lösen.
-
uint32 2pixel = *((uint32*)[b]&[/b]bild[bild_pos])
-
Verdammt, natürlich! Danke, funktioniert wunderbar!
-
an deiner stelle wuerde ich nicht versuchen, in der entwickungsphase zu optimieren.
diese krankheit nennt sich "premature optimization".