Почему координата текстуры 1,0 выходит за границы текстуры?

Я делаю поиск цвета, используя текстуру, чтобы применить эффект к изображению. Мой поиск - это карта градиента, использующая яркость фрагмента первой текстуры, а затем ее поиск на второй текстуре. 2-я текстура 256x256 с градиентами, идущими горизонтально, и несколькими различными градиентами сверху вниз. Таким образом, 32 горизонтальные полосы каждые 8 пикселей в высоту. Мой поиск на x - это яркость, на y - градиент, и я нацеливаюсь на центр полосы, чтобы избежать пересечения.

Мой фрагментный шейдер выглядит так:

 lowp vec4 source = texture2D(u_textureSampler, v_fragmentTexCoord0);
 float luminance = 1.0 - dot(source.rgb, W);
 lowp vec2 texPos;
 texPos.x = clamp(luminance, 0.0, 1.0);
 // the y value selects which gradient to use by supplying a T value
 // this would be more efficient in the vertex shader
 texPos.y = clamp(u_value4, 0.0, 1.0);

 lowp vec4 newColor1 = texture2D(u_textureSampler2, texPos);

Это работает хорошо, но я получал искажения в самых белых частях белых и самой черной части черных. По сути, это выглядело так, как будто он взял этот newColor из совершенно другого места на texture2, или, возможно, просто ничего не получил за эти фрагменты. Я добавил зажимы в шейдер, чтобы он не выходил за границы текстуры поиска, но это не помогло. Я правильно не использую зажим?

Наконец я подумал, что это может быть связано с моей исходной текстурой или с тем, как она загружена. В итоге я исправил это, добавив:

    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Итак .. ПОЧЕМУ?

Немного раздражает необходимость фиксировать текстуры, потому что это означает, что я должен написать исключение в своем коде при загрузке справочных таблиц.

Если мои textPos.x и .y зафиксированы на 0-1 .. как он тянет образец за край?

Кроме того, нужно ли использовать вышеупомянутый вызов зажима при создании текстуры или я могу вызвать его, когда собираюсь использовать текстуру?

Ответы на вопрос(1)

Ваш ответ на вопрос