在多边形网格中插入颜色的最佳方法是什么,其中所有多边形具有相同的正常和相当大的色差?使用GLSL(使用gouraud或phong着色)是正确的方法还是我应该在别处(在cpu方面)?或者我完全错了吗?
ps:我正在使用OpenGL 4.0 +
我想在这样的网格上插入颜色。
答案 0 :(得分:0)
根据你的照片,你需要为每个三角形(脸部)做一个平面阴影。 在你的顶点缓冲区中,你可以为每个三角形添加顶点颜色属性。实际上它将是每个顶点的颜色,所以如果你使用的是interleaved vertex buffer array,它可能如下所示:
[
vertex1.x , vertex1.y , vertex1.z ,vertex1color.r ,vertex1color.g ,vertex1color.b,
vertex2.x , vertex2.y , vertex2.z ,vertex2color.r ,vertex2color.g ,vertex2color.b,
vertex3.x , vertex3.y , vertex3.z ,vertex32color.r vertex3color.g ,vertex3color.b
..... the same for the rest of triangles ...
]
然后,在顶点着色器中设置输出颜色的变化,然后片段着色器使用它来“绘制”你的碎片。现在,重要的是你不为那个变化设置插值但是平坦。因此,颜色不会跨原语进行插值。 Here是如何做到这一点的一个例子。(如果你使用的是GLSL 330或更高版本,那么用in / out替换“vary”)