Я пытаюсь использовать 2-мерную текстуру в качестве таблицы поиска для индексации в более крупную текстуру. Затем текстура отображает значение цвета на четырехугольник. Проблема, с которой я столкнулся, заключается в том, что большая текстура кажется меньше, чем ее собственное разрешение, когда я ее пробую. Например, у меня большая текстура 4k x 4k. Текстура поиска выбирает область размером 1k x 1k большой текстуры. Затем текстура отображает результат в четырехугольник, который заполняет область просмотра, которая также имеет ширину 1k x 1k высоту. Я ожидаю увидеть карту 1: 1 между текстурированным четырехугольником и частью исходной текстуры 4k x 4k размером 1k x 1k. Тем не менее, текстурированный четырехугольник очень искажен. Похоже, что текстура 4k x 4k была уменьшена до текстуры 1k x 1k, а моя карта поиска сэмплирует часть этой текстуры размером 512 x 512.
Другими словами, это выглядит так, как если бы я делал выборку из текстуры, размер которой был изменен, чтобы соответствовать области просмотра 1k x 1k, а не из исходной текстуры 4k x 4k. Есть ли проблема с тем, почему я подхожу к этой проблеме?
Вот мой вершинный шейдер:
uniform mat4 pvm;
void main()
{
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_Position = ftransform();
}
and fragment shader:
uniform sampler2D image; //The large texture
uniform sampler2D map; //The lookup texture
void main()
{
vec4 pos = texture(map,(gl_TexCoord[0].st * vec2(-1.0, 1.0))); //Flip the origin
vec4 color = texelFetch(image,ivec2(pos.s*4096,pos.t*4096),0);
gl_FragColor = color;
}