Opengl es webgl着色器和纹理过滤器

Opengl es webgl着色器和纹理过滤器,opengl-es,webgl,Opengl Es,Webgl,我对WebGL没有那么丰富的经验(我想同样的问题也会在OpenGL中得到解决)。我正在使用顶点和片段着色器渲染对象。基本上,所有着色器所做的都是获取顶点的输入颜色,并将其原封不动地传递到片段,因此步骤: In vertex shader, amongst other things: attribute vec4 aVertexColor; varying vec4 vColor; ................. vColor = aVertexColor; ...............

我对WebGL没有那么丰富的经验(我想同样的问题也会在OpenGL中得到解决)。我正在使用顶点和片段着色器渲染对象。基本上,所有着色器所做的都是获取顶点的输入颜色,并将其原封不动地传递到片段,因此步骤:

In vertex shader, amongst other things:

attribute vec4 aVertexColor;
varying vec4 vColor;

.................
vColor = aVertexColor;
..................

In shader color:

varying vec4 vColor;

...........
gl_FragColor = vColor;
现在这个很好用。然而,从我所看到的片段插值默认为线性,我想把它改为最近的。现在我要做的是;我想做的是:

gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
但这似乎没有效果,即使我用gl.LINEAR更改gl.NEAREST,就我所知,这也不会改变任何东西。着色器是否以某种方式覆盖了某些内容,这就是为什么我无法获得所需效果的原因

现在我;我附上了我得到的结果。现在我的目标是让三角形在3个不同颜色的区域(与顶点相同)。所以在我的例子中,我的目标是~1.3蓝色、~1.3绿色、~1.3红色,没有任何中间颜色。有什么提示吗

以下是我想要得到的:


我想你误解了最近的过滤主题。如果使用纹理,则拾取最近的纹理像素的颜色,而不是与相邻像素混合的颜色。但使用您的方法在顶点之间使用恒定而非混合的颜色并没有帮助。我猜你想要的是下面这样的东西


我认为你想要的是不可能的。可变值始终是插值的,您不能覆盖它以使用最近值。为了达到你想要的效果,我想你只需要分别画3个多边形


在这种非常特殊的情况下,您还可以使用一些像素着色器技巧来查找RGB的最大分量,将其设置为1,并将其他两个分量设置为零,但这对任何其他颜色都不起作用

谢谢你的意见。我猜我全错了,但是我真的不认为你提供的链接会有帮助。我不希望每一行都有不同的颜色。我更新了我的答案,让我看到了我想要实现的目标。好的,谢谢你的输入。那我就得找些别的办法来解决我的问题了。:)