在最近邻插值OpenGL像素中心的情况下会发生什么

时间:2016-06-25 16:00:57

标签: c++ opengl nearest-neighbor

当最近邻插值发生时,在纹理中计算最近邻插值的像素与两个相邻像素的距离相同,并且像素距离两个像素的距离相等,会发生什么在放大的情况下尝试正确插入新像素。

OpenGL是否采用两个像素并从纹理中插入一种颜色,取两个相同长度距离的平均值或发生其他情况?

1 个答案:

答案 0 :(得分:4)

spec非常清楚如何从纹理坐标中选择纹素:

<强>缩小

第8.14节规定了缩小行为(我在这里略过了很多有关包裹模式等的内容并解释2D情况):

  

令[s(x,y),t(x,y)]为屏幕位置(x,y)处的纹理坐标。现在我们定义u(x,y)= s(x,y)* texture_width和v(x,y)= t(x,y)* texture_height。在最近邻插值的情况下,纹素由整数坐标(i,j)给出,其中i = floor(u(x,y))和j = floor(v(x,y))。

让我们举一个例子:假设我们的纹理大小为2x1,查找位置为[0.5,0.5]。在这种情况下,u(x,y)= 0.5 * 2 = 1并且v(x,y)= 0.5 * 1 = 0.5。现在我们得到i = floor(1)= 1并且j = floor(0.5)= 0.因此,结果将是右纹理元素的颜色。

<强>放大

第8.15节规定放大的行为与缩小完全相同。