如何进行高卢着色? [关闭]
Posted
技术标签:
【中文标题】如何进行高卢着色? [关闭]【英文标题】:How to do gouraud shading? [closed] 【发布时间】:2014-02-25 01:04:42 【问题描述】:有人可以向我解释 Gouraud 着色吗?我可以继续谷歌“gouraud shading”,但这对我来说没有多大意义。我有 3 个具有 (x, y) 位置和 int[r,g,b] 颜色的顶点。我想线性插值(不确定这意味着什么)顶点的颜色以在三角形中着色。这样做的逻辑是什么?
【问题讨论】:
如果您想真正体验学习 Gouraud 着色,您可以阅读PC-GPE 的“3D 着色”部分! 这是一个宽泛的问题。 Stack Overflow 的格式不适合详细解释大型概念。您应该查找 linear interpolation 并尝试在 2 种颜色之间实现它。如果您在执行此操作时遇到问题,请针对您遇到的问题提出具体问题(在新问题中),并发布一些您认为应该有效但无效的代码。 【参考方案1】:您将执行 双-线性插值。
按照像素行从上到下扫描三角形。每一行都会沿着两条不同的边与三角形相交两次。
您将首先沿这些边执行两次线性插值,计算顶点处 RGB 分量的混合,并根据到这些顶点的距离加权(颜色为a
的权重a
和颜色b
的Da/(Da+Db)
)。
然后您将扫描交叉点之间的像素,在您刚刚计算的两种颜色之间执行另一个线性插值。
这样,您将使用平滑渐变填充三角形,使其与相邻三角形(如果有)连续。
【讨论】:
以上是关于如何进行高卢着色? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
c ++ opengl我如何制作着色器文件并在主cpp中使用它[关闭]