Autor Beitrag
Addy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43



BeitragVerfasst: Mo 29.07.02 16:46 
Hallo!

Wie macht sich eine vormultiplizierte ("premultiplied") Alpha-Komponente bemerkbar? D.h., wie verhält sich ein Bitmap mit diesem Pixelformat beim Zeichnen und Kopieren (sowohl als Ziel als auch als Quelle)? Im PSDK steht dazu nichts :(
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Mi 31.07.02 11:58 
bitte was soll das sein, nie gehört, hat wohl was mit Transparenz zu tun, aber was, ich würde sagen die Farbwerte von Back und img werden multipliziert, aber sonst :?: :?: :?:

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
Addy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43



BeitragVerfasst: Fr 02.08.02 11:57 
Aus dem PSDK, May 2002 Edition zum Thema "Image Pixel Format Constants" Konstante "PixelFormat32bppPARGB":
Zitat:
Specifies that the format is 32 bits per pixel; 8 bits each are used for the alpha, red, green, and blue components. The red, green, and blue components are premultiplied according to the alpha component.


Das Alpha-Blending funktioniert genauso wie bei einem nicht-Alpha-vormultiplizierten Format, aber irgend einen Nachteil muss es doch haben, schließlich ist es fast doppelt so schnell.
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Fr 02.08.02 19:26 
es gibt schlieslich auch images, obwohl man alles schneller mit DelphiX amachen kann-> es miss nicht unbedingt nachteile Haben, vielleicht sind diese aber schwieriger in der Anwendung

So wie ich das verstehe haben diese Dinger den Zweck, dass man seinen alpha wert nicht selber ausrechnen muss, und auch über ihn den Farbton ändern kann, aber einen wirklichen Sinn kann ich darin auch nicht entdecken. :cry:

Ach ja der Geschwindigkeits Vorteil: Es liegt vielleich daran, dass 24bit nicht gerade die beste Speicher Architektur ist, und er mit 32bit (=2^6!!!) schneller arbeiten kann.

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
Addy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43



BeitragVerfasst: Fr 09.08.02 11:16 
@MathiasH: Hast du überhaupt schonmal mit GDI+ gearbeitet? Es scheint nämlich, dass du gar nicht weißt, was ich meine.
Delphi-Images haben übrigens nichts mit GDI+ zu tun.
MathiasH
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 699

WinXP, Win98SE, Debian, Win95
D5 Stand, D6 Prof
BeitragVerfasst: Fr 09.08.02 11:27 
erwischt :wink:
ich hab mal ein bisschen damit rumgespielt, aber mehr auch nicht, klar weis ich was das ist

MathiasH

_________________
"Viel von sich reden, kann auch ein Mittel sein, sich zu verbergen."
Friedrich Nietzsche
Addy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43



BeitragVerfasst: Sa 10.08.02 11:57 
Du solltest Politiker werden :wink:
Naja, hat sich vorerst sowieso erledigt, da ich voraussichtlich jetzt Textures mit TL-Vertices benutze, um die Sprites auf den Bildschirm zu bringen.
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: So 11.08.02 09:56 
Also, Alphablending geht so:
Wir haben eine Quellfarbe (S) und eine Zielfarbe (D). Bei herkömmlicher Alphaberechnung läuft das so:
(.r, .g, .b, .a sind die Farbkomponenten Rot, Grün, Blau, Alpha)
ausblenden Quelltext
1:
2:
3:
D.r = S.r * S.a + D.r * (1 - S.a);
D.g = S.g * S.a + D.g * (1 - S.a);
D.b = S.b * S.a + D.b * (1 - S.a);

Bei vormultipliziertem Alpha sind S.r, S.g, S.b bereits mit S.a multipliziert worden, so dass die Rechnung so aussieht:
ausblenden Quelltext
1:
2:
3:
D.r = S.r + D.r * (1 - S.a);
D.g = S.g + D.g * (1 - S.a);
D.b = S.b + D.b * (1 - S.a);

Da nun nur noch eine Multiplikation auftritt ist es fast doppelt so schnell. Logisch, oder?
Der Nachteil ist nur, dass man die Grafik schlecht ohne Alphablending anzeigen kann.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
Addy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 43



BeitragVerfasst: So 11.08.02 10:43 
Danke, du hast mir sehr geholfen :)