Opengl 如何使用中点算法插值绘制的线的颜色

Opengl 如何使用中点算法插值绘制的线的颜色,opengl,graphics,Opengl,Graphics,我目前正在尝试在软件级别实现一个图形管道。现在我已经实现了中点算法来画一条线,但是我应该如何在两个端点之间插值像素的颜色呢。我的意思是,我知道线性插值,但我的问题是,通过中点算法生成的像素的(x,y)坐标没有精确地位于由两个端点定义的实际直线上。我想知道OpenGL是如何处理的。我不知道OpenGL是如何处理颜色插值的,但是你可以通过将像素(中点)的坐标投影到直线上来解决你的问题,然后使用直线端点颜色的线性插值计算投影点的颜色 这可能不是最快的方法,但结果应该是正确的 有关如何将点投影到线段上的

我目前正在尝试在软件级别实现一个图形管道。现在我已经实现了中点算法来画一条线,但是我应该如何在两个端点之间插值像素的颜色呢。我的意思是,我知道线性插值,但我的问题是,通过中点算法生成的像素的(x,y)坐标没有精确地位于由两个端点定义的实际直线上。我想知道OpenGL是如何处理的。

我不知道OpenGL是如何处理颜色插值的,但是你可以通过将像素(中点)的坐标投影到直线上来解决你的问题,然后使用直线端点颜色的线性插值计算投影点的颜色

这可能不是最快的方法,但结果应该是正确的

有关如何将点投影到线段上的信息,请参见:

既然中点正试图非常接近中间,那么颜色的平均值不起作用吗?如果没有,那么计算计算出的中点和两端之间的距离,并在此基础上进行加权平均如何?谢谢回复。我不知道你们所说的平均颜色是什么意思。计算距离会导致太多开销。如果一端是颜色
(a、b、c)
,另一端是
(d、e、f)
,则精确的中点颜色将是
((a+d)/2,(b+e)/2,(c+f)/2)
。您计算的中点与实际中点不完全相同,但我怀疑最终结果看起来仍然很好。@Shahbaz我想您误解了。中点代表像素的中心,而不是直线的中点。哈哈,对不起。我只是猜到了算法的名字。我不明白“像素”怎么会有一个中心,因为它应该只是一个点。