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

问题描述:

我正在使用Android的OpengGL ES 2.0。我将这些顶点与线条连接在一起绘制形状。现在我需要单独更改每条线的颜色。我试着通过顶点着色器为每个顶点传递一个颜色矩阵来对片段着色器进行处理,但颜色被插值(这实际上是有意义的,因为我给了两个顶点不同的颜色)。我做了一些Google搜索,发现glSmoothShader不能在OpengGL ES中禁用。如何在OpengGL ES 2.0中使线颜色变平而不是渐变?

有没有办法在没有插入颜色的情况下对这些线着色?

或者有没有办法使用多个三角形来绘制两个顶点之间的一条线,这样我就可以使每个三角形变平。

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

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

+0

这是有道理的,它会很好的少数顶点。但是我从一个xml文件(上帝知道有多少行连接到一个顶点......)解析所有这些1000多个顶点,创建索引并将它们连接起来。我想知道这可以成为一个实际的解决方案。 这就是说,如果没有更好的出现我会使用你的解决方案,谢谢。 – D3athh