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".


Anmelden zum Antworten