Opengl es webgl着色器和纹理过滤器
我对WebGL没有那么丰富的经验(我想同样的问题也会在OpenGL中得到解决)。我正在使用顶点和片段着色器渲染对象。基本上,所有着色器所做的都是获取顶点的输入颜色,并将其原封不动地传递到片段,因此步骤: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; ...............
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,并将其他两个分量设置为零,但这对任何其他颜色都不起作用 谢谢你的意见。我猜我全错了,但是我真的不认为你提供的链接会有帮助。我不希望每一行都有不同的颜色。我更新了我的答案,让我看到了我想要实现的目标。好的,谢谢你的输入。那我就得找些别的办法来解决我的问题了。:)