Opengl 为什么Glu夹具在这里很重要?

Opengl 为什么Glu夹具在这里很重要?,opengl,Opengl,我在跑步 但变化: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 致: 我在顶部和右侧得到了一个稍微不同的图像 但从代码中可以看出: glBegin(GL_QUADS); //lower left glTexCoord2f(0, 0); glVertex2f(-1.0, -1.0); //upper left glTexCoord2f(0, 1.0); glVertex2f(-1.0, 1.0); //upper

我在跑步

但变化:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
致:

我在顶部和右侧得到了一个稍微不同的图像

但从代码中可以看出:

glBegin(GL_QUADS);
//lower left
glTexCoord2f(0, 0); 
glVertex2f(-1.0, -1.0);
//upper left
glTexCoord2f(0, 1.0);
glVertex2f(-1.0, 1.0);
//upper right
glTexCoord2f(1.0, 1.0);
glVertex2f(1.0, 1.0);
//lower right_
glTexCoord2f(1.0, 0); 
glVertex2f(1.0, -1.0);
glEnd();

纹理不会超出范围,为什么GL_钳制很重要?

在片段着色器中,颜色与当前纹理右上角的颜色混合。纹理坐标中添加了一个
vec2(0.0625,0.0625)
。因此,在查找更高或相等(1.0-0.0625)=0.9375的纹理坐标时,始终使用
GL_CLAMP
获得相同的值

void main() {
    vec4 s1 = texture2D(tex0, gl_TexCoord[0].st);
    vec4 s2 = texture2D(tex1, gl_TexCoord[0].st + vec2(0.0625, 0.0625));
    gl_FragColor = mix(vec4(1, s1.g, s1.b, 0.5), vec4(s2.r, s2.g, 1, 0.5), 0.5);
}

你能解释一下
0.0625
=
1.0/16
这个神奇的值是从哪里来的吗?@StevenLu我刚刚发现这个向量被添加到纹理坐标中,因此可以计数超过1.0,其中
GL\u CLAMP
起作用。要了解着色器中实际执行的操作,最好询问。
void main() {
    vec4 s1 = texture2D(tex0, gl_TexCoord[0].st);
    vec4 s2 = texture2D(tex1, gl_TexCoord[0].st + vec2(0.0625, 0.0625));
    gl_FragColor = mix(vec4(1, s1.g, s1.b, 0.5), vec4(s2.r, s2.g, 1, 0.5), 0.5);
}