OpenGL片段着色器如何知道纹理中要采样的像素?

时间:2013-01-31 18:50:33

标签: 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(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?有什么变化?

1 个答案:

答案 0 :(得分:7)

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