我需要为由多个四边形组成的表面的一些点着色。问题是颜色在该点周围不对称分布,请参阅图像,其中只有左正方形的右下角是红色,而红色似乎被拉向右正方形的右上角)。
代码:
glBegin (GL_QUAD_STRIP);
glVertex3f (1., 0., 0)
glVertex3f (1., 1., 0)
glColor3f(1, 0, 0)
glVertex3f (0., 0., 0)
glColor3f(0, 0, 1)
glVertex3f (0., 1., 0)
glVertex3f (-1., 0., 0)
glVertex3f (-1., 1., 0)
glEnd ();
如果您制作两个单独的四边形并定义一个顺时针和另一个逆时针,则颜色将围绕该点对称,但与相邻点周围的颜色分布不同(如果它们被着色)。
那么如何为具有对称颜色分布的任意点着色?
编辑:
我想形象化例如基于每个顶点温度的表面温度,如下图所示(黄色=0,橙色=0.5,红色=1):
最佳答案
默认情况下,OpenGL 在每个三角形上使用重心线性插值。这正是你所看到的。最简单的解决方案是编写一组实现基于距离的渐变的顶点和片段着色器。
详细信息取决于您的特定需求。
关于opengl - opengl中四边形的不对称着色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17725400/