Мой вопрос касается того, как texturecoordinate точно соответствует текстуре текстуры (не учитывая фильтрацию).Координата текстуры GLSL для абсолютного пикселя?
делает (0,0), например, ссылается на верхний левый угол верхнего левого пикселя или ссылается на центр верхнего левого пикселя?
при использовании фильтра с близким фильтром, какой пиксель выбирается по координате текстуры (0,5,0,5)?
Что касается (1.0,1.0), это относится к нижнему правому углу нижнего правого пикселя или, скорее, к верхнему левому углу нижнего правого пикселя? (я могу вспомнить, что несколько лет назад это отличалось между некоторыми картами ATI и NVIDIA, теперь оно стандартизировано?)
, если вы используете texelFetch() вместо textureLod(), каков правильный способ доступа к пикселю?
это
ivec2 size = textureSize(sampler,0);
ivec2 iCoords = ivec2(int(uv.x*size.x),int(uv.y*size.y));
vec4 col = texelFetch(sampler,iCoords);
или, может быть,
ivec2 iCoords = ivec2(int(uv.x*size.x+0.5f),int(uv.y*size.y+0.5f));
правильно?
или даже
ivec2 iCoords = ivec2(int(uv.x*(size.x+1)),int(uv.y*(size.y+1)));
?
Возможно, кто-то может уточнить, как точно работает отображение?
Это FAQ. Я несколько раз отвечал на него на StackOverflow.com http://stackoverflow.com/a/7272871/524368 http://stackoverflow.com/a/5879551/524368 – datenwolf