Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#27

AW: Geht das noch schneller? - Bitmap-Verrechnung

  Alt 22. Nov 2014, 19:07
Hast du es mal ohne die Prüfung auf i < 0 probiert? Der Fall sollte ja eigentlich nicht vorkommen

Ansonsten habe ich noch Vorschläge:
1. Termumformung, sollte aber eigentlich nicht schneller sein. Ist aber imho etwas verständlicher
RGBA_Unten^[w].rgbBlue := Cardinal((255 - RGBA_Oben^[w].rgbReserved) * RGBA_Unten^[w].rgbBlue + RGBA_Oben^[w].rgbReserved * RGBA_Oben^[w].rgbBlue) shr 8; etc. für die anderen Farben.

2. Nimm mal nicht immer die gleiche Variable i, sondern drei verschiedene Variablen. Dann können die drei Zeilen parallel ablaufen.
3. Fall die if-Abfrage doch nötig sein sollte, schreibe sowas:
RGBA_Unten^[w].rgbBlue := i and (not i shr 24) Effekt: Wenn der Wert negativ wird, dann wird das obere Byte des ints aus einsen bestehen. Durch das bitweise and wird der Wert zu 0. Du vermeidest aber das if, das auf Maschinenebene möglicherweise teuer ist.

4. Sagt wir "premultiplied alpha" etwas? Klingt erstmal komisch, ist aber eigentlich die sinnvollere Variante. Würde deinen Rechenaufwand auch hier reduzieren, aber deine Bilddaten müssten dafür natürlich angepasst werden.
  Mit Zitat antworten Zitat