我有一些使用 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,实际会写入什么颜色?我能找到的所有文档都只是说“使用 alpha 来控制画笔的透明度”或同样模糊的东西;我很好奇实际的混合方程是什么。