在texture2DProj上没有钳位或重复

时间:2014-09-20 03:46:15

标签: ios opengl-es textures

有没有办法告诉texture2DProj或在一个模式中设置纹理,如果坐标位于边界之外,将显示默认值?一种方法是将图像的边框设置为默认值并使用夹紧。还有别的吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是测试坐标是否在着色器中的范围内,否则分配默认值。

如果您的电话正常:

vec3 texCoord = ...;
vec4 texVal = texture2DProj(tex, texCoord);

您可以将其更改为:

vec4 texVal;
if (any(bvec4(texCoord[0] < 0.0, texCoord[1] < 0.0,
              texCoord[0] > texCoord[2], texCoord[1] > texCoord[2]))) {
    texVal = defaultVal;
} else {
    texVal = texture2DProj(tex, texCoord);
}