私の質問は、どのようにtexturecoordinateがテクスチャ内のテクセルに正確にマッピングされるか(フィルタリングを考慮しない)です。GLSLテクスチャ座標を絶対ピクセルに変換しますか?
たとえば、(0,0)は左上のピクセルの左上隅を参照するか、左上のピクセルの中心を参照しますか?
ニアフィルタリングを使用している場合、テクスチャ座標(0.5,0.5)でどのピクセルがフェッチされますか?
右下のピクセルの右下隅、または右下のピクセルの左上隅を基準にしていますか? (ATIとNVIDIAのカードの違いは数年前のことですが、現在は標準化されていますか?)
textureLod()の代わりにtexelFetch()を使用する場合は、
は
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)));
?
誰かがマッピングがどのように正しく動作するかを明確にすることができますか?
これはよくある質問です。私はそれを数回ここで答えていたStackOverflow.com http://stackoverflow.com/a/7272871/524368 http://stackoverflow.com/a/5879551/524368 – datenwolf