System.Drawing.SolidBrush を使用して半透明の三角形を描画する GDI コードがあります。適切な 3D レンダリング API (OpenGL/Direct3D11) を使用してコードを再実装しようとしていますが、元の GDI コードと同じ出力を得るためにこれらの三角形に使用するブレンド方程式がわかりません。
加算ブレンディング (func=GL_FUNC_ADD, eq=GL_ONE,GL_ONE) や補間 (func=GL_FUNC_ADD, eq=GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) のような比較的単純なものだと思いますが、どちらもまったく正しくないようです。これはほぼ間違いなく新しいコードのバグによるものですが、続行する前に正しいターゲットに向かって作業していることを確認したいと思います。適切なブレンド方程式を知っている人はいますか?
編集: コンテキストを取り除いた関連する C# コードを次に示します。
using System.Drawing;
SolidBrush b = new SolidBrush(Color.FromArgb(alpha,red,green,blue));
Point[] points = ...;
Graphics g;
g.FillPolygon(b,points);
私の質問は、ブラシの RGBA と宛先ピクセルの RGBA に関して、実際にどの色が書き込まれるかということです。私が見つけることができるすべてのドキュメントは、「アルファを使用してブラシの透明度を制御する」または同様に漠然としたものと言っています。実際のブレンド方程式がどうなっているのか興味があります。