AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Alphablending mit MMX / SSE Befehle
Thema durchsuchen
Ansicht
Themen-Optionen

Alphablending mit MMX / SSE Befehle

Ein Thema von schty · begonnen am 13. Dez 2003 · letzter Beitrag vom 2. Jun 2005
 
schty

Registriert seit: 13. Dez 2003
5 Beiträge
 
Delphi 6 Personal
 
#1

Alphablending mit MMX / SSE Befehle

  Alt 13. Dez 2003, 12:01
Hier gibt's meine 'weiterentwickelte' alpha-blending procedure (sehe unten). Das Original "CombineMem" findet man im Freeware Komponenten-Source "Graphics32" von Alex Denissov.

// Result = Alpha * (Foreground - Background) + Background

Die Ergebnisse fuer R, G und B Werte werden parallel berechnet mit inline MMX / SSE Assembler-Befehle.

Weiss jemandem weitere Optimierungen oder sogar noch schnellere Algorithmen fuer Alphablending?

MfG,
Arjan


Delphi-Quellcode:
procedure AlphaBlend(PenColor:TColor32; DIB:PColor32; Alpha:DWORD);
asm
    MOVD MM1, EAX
// MM1 = 00 00 00 00 ** Fr Fg Fb
    MOVD MM2,[EDX]
// MM2 = 00 00 00 00 ** Br Bg Bb
    PUNPCKLBW MM1, MM0
// MM1 = 00 ** 00 Fr 00 Fg 00 Fb
    MOVD MM3, ECX
// MM3 = 00 00 00 00 00 00 00 AA
    PUNPCKLBW MM2, MM0
// MM2 = 00 ** 00 Br 00 Bg 00 Bb
    PSHUFW MM3, MM3, 0
// MM3 = 00 AA 00 AA 00 AA 00 AA
    PSUBW MM1, MM2
    PSLLW MM2, 8
    PMULLW MM1, MM3
    PADDW MM1, MM2
    PSRLW MM1, 8
    PACKUSWB MM1, MM0
    MOVD [EDX],MM1
end;
[edit=Admin]Code in Tags [delphi ]..[ /delphi] gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz