Software Color Blending
-
Mein Programm soll zwei Farben mischen, beide haben einen eigenen Alphakanal. Der Aufbau einer Farbe ist ganz einfach:
struct Farbe { unsigned char b, g, r, x; };
Nun gibt es dazu einige Tutorials, aber ehrlich gesagt verstehe ich nun noch weniger, wie ich das angehen soll, nachdem ich die gelesen habe. Vor Allem scheint mir, dass dort niemals berücksichtigt wird, dass es zwei Alphakanäle gibt. Kann mir das jemand mal ganz einfach und langsam erklären? Ich stehe leider voll auf dem Schlauch
.
-
was willst du eigentlich erreichen? wie soll das aussehen?
-
-
OK. Vielleicht ist es nun schon ein Weilchen her, aber ich sitze immer noch vor meinem Problem. Ich versuche Partially transparent A over B zu implementieren. Ich habe Funktionen, mit denen ich z. B. Dreiecke direkt in allokierten Speicher "rasterisieren" und anzeigen lassen kann und nun will ich aber auch noch, dass der Inhalt des Speichers beim "rasterisieren" berücksichtigt wird. Wenn ich aber nun zwei Dreiecke übereinander lege, bleibt der Schnittbereich transparent bzw. erhält irgendwie keine Farbe; wenn ich eine Weisse Fläche ausfüllen lasse, wird anscheinend nichts ausgefüllt!
Eigentlich hatte ich vor, eine Funktion für die Echtzeitberechnung der Werte (im Fall der Dreiecke funktioniert das auch einwandfrei) zu schreiben, aber bei dieser Sachlage hier komme ich gar nicht vom Fleck. Hat das noch nie jemand erfolgreich realisiert? Ich wäre echt dankbar, wenn mir jemand einen funktionierenden Beispiel-Code zeigen könnte, eine Funktion, die aus zwei Farben eine andere generiert.(omfg schon wieder halb zwei?!)
-
Ich wollte nur kurz sagen, dass ich es kurz vor drei Uhr doch noch geschaft habe. Das Problem war, dass ich vergessen habe, bei den Multiplikationen die Integerdatentypen zu berücksichtigen; man muss stets noch durch das Maximum des Farbkanals teilen, damit man keine Überläufe erhält.