Opengl es OpenGL片段着色器如何知道在纹理中采样哪个像素?

Opengl es OpenGL片段着色器如何知道在纹理中采样哪个像素?,opengl-es,webgl,shader,fragment-shader,vertex-shader,Opengl Es,Webgl,Shader,Fragment Shader,Vertex Shader,我有一个三角形: 我有一个顶点着色器: uniform mat4 uViewProjection; attribute vec3 aVertexPosition; attribute vec2 aTextureCoords; varying vec2 vTextureCoords; void main(void) { vTextureCoords = aTextureCoords; gl_Position = uViewProjection * vec4(aVertexPositio

我有一个三角形:

我有一个顶点着色器:

uniform mat4 uViewProjection;
attribute vec3 aVertexPosition;
attribute vec2 aTextureCoords;
varying vec2 vTextureCoords;

void main(void) {
  vTextureCoords = aTextureCoords;
  gl_Position = uViewProjection * vec4(aVertexPosition, 1.0);
}
我有一个片段着色器:

precision mediump float;
uniform sampler2D uMyTexture;
varying vec2 vTextureCoords;

void main(void) {
  gl_FragColor = texture2D(uMyTexture, vTextureCoords);
}
我输入三组顶点和UV,交错:

# x,  y,    z,   s,   t
0.0,  1.0,  0.0, 0.5, 1.0
-1.0, -1.0, 0.0, 0.0, 0.0 
1.0, -1.0,  0.0, 1.0, 0.0
片段着色器如何知道绘制不同于像素B的像素A?什么变化


据我所知,GL管道的光栅化阶段跨越三角形面,在每个像素上使用插值运行碎片着色器。

您输入了纹理,对吗?为什么你希望它们是一样的,或者你在问着色器在GPU上是如何工作的?@JesusRamos我在问着色器是如何工作的。我不明白什么在改变,谁在着色器过程之间改变它。请查看@genpfault的答案。我本想说同样的话,但他抢先告诉了我:)检查这个伟大的答案,当OpenGL可能是你不期望的采样值时。那么
vTextureCoords
改变了吗?是否所有变化的变量都会以某种方式发生变化?是的,片段着色器中的所有变化的s都加载了插值。有关此答案的进一步解释以及动画,请参见:更新我的链接: