根据我对像素中心约定的理解,OpenGL将像素的中心视为其半像素位置。这使得用于栅格化的像素中心“匹配” 用于纹理化的texel中心。
因此,如果以下四个条件成立:
然后:
纹理的纹理像素和视口像素之间的匹配将为 1比1 吗?
不需要添加/减去任何校正(+/- 0.5 )吗?
关于如何检查它是否为一对一匹配的任何想法?
有什么提示吗?
答案 0 :(得分:1)
您可以在glsl中使用偏导函数。 偏差导数函数这些是片段着色器指令,可用于计算任何值相对于屏幕空间坐标的变化率。 这个任何值都可以是纹理坐标 所以
vec2 dx_vtc = dFdx(纹理坐标); vec2 dy_vtc = dFdy(texture_coordinate);
float len1 = length(dx_vtc); float len2 = length(dy_vtc);
如果长度差为零,那么我们可以得出结论,存在一对一的映射。