如何在 OpengL ES 2.0 中使线条颜色平坦而不是渐变?

How to make the line color flat instead of gradient in OpengGL ES 2.0?

我在 android 中使用 OpengGL ES 2.0。我得到了这些顶点,我用来通过用线连接它们来绘制形状。现在我需要单独更改每一行的颜色。我尝试通过顶点着色器将每个顶点的颜色矩阵传递给片段着色器,但是颜色被插值(这实际上是有道理的,因为我给两个顶点不同的颜色)。我在谷歌上搜索了一下,发现 glSmoothShader 不能在 OpengGL ES 中禁用。

有没有办法在不对颜色进行插值的情况下为这些线条着色?

或者有没有办法使用多个三角形在两个顶点之间画一条线,这样我就可以为每个三角形上色。

一个解决方案是复制顶点。也就是说,如果您当前有一个顶点 V 连接到三条线(作为示例),则创建三个位置相同但颜色不同的顶点 V1、V2 和 V3,其中每个顶点都具有对应线的颜色。所以如果第一行是红色,第二行是蓝色,第三行是绿色,那么V1就是红色,V2就是蓝色,V3就是绿色。

基本上,唯一的方法是使用三角形来绘制,而不是三角形条或扇形。并且对于每组三个顶点来构成单个三角形使用相同的颜色。这将消除阴影效果,因为相同颜色之间的插值是相同的颜色。更复杂的解释:http://ruh.li/GraphicsShading.html