纹理地址模式钳位,它是如何工作的?

时间:2011-04-15 00:07:53

标签: opengl textures mode

我正在尝试理解纹理拼接在OpenGL或任何其他API中的工作原理。我知道你将操作定义为将范围从[0,1]扩展到任何东西,但是将它夹到边缘。

所以,如果我有伪代码功能:

unsigned int clampedTexel(float u, float v)
{
if(u < 0) u = 0;
if(u >= width) u = width-1;
if(v < 0) v = 0;
if(v >= height) v = height-1;
return image[u][v];

}

http://wwwx.cs.unc.edu/~sud/courses/236/a6/small/tex_0_clamp.png

右?所以,如果我超出范围,比如在u方向上的1.1,为什么它不会被夹到最后的黑色?而不是黑色,在这个例子中它变为白色。我误解了什么吗?为什么黑色旁边的值会被限制为白色?

或者从边缘颜色交替出现的任何其他扩展名。 请帮我看看我失败的地方。

1 个答案:

答案 0 :(得分:4)

我想我看到了问题。你忽略了这样一个事实:纹理的顶行实际上是“白/黑”交替线,而不是它看起来的“黑/白”线。所以重复白/黑的顶行是正确的。类似的情况发生在右边缘,最后一列重复白色/黑色而不是黑色/白色。

这是你的纹理及其轮廓:

enter image description here