在最近邻插值OpenGL中心像素的情况下会发生什么
What happens in the case of nearest neighbour interpolation OpenGL centre of pixels
当最近邻插值发生时,在纹理中计算最近邻插值的像素与两个相邻像素的距离相同,并且像素距离两个像素的长度相等,它试图在放大的情况下正确插入一个新像素。
OpenGL是否采取两个像素,并从纹理中插值颜色,从两个取平均值在相同的长度距离或其他事情发生?
规范非常清楚如何从纹理坐标中选择纹理:
缩小
第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节说明了放大的行为与缩小的行为完全相同。
相关文章:
- 在什么情况下,两个堆栈分配的结构对象的 this 点指向同一个地址?
- 在什么情况下,我想在 C/C++ 代码中使用内联汇编代码
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 在什么情况下,需要共享智能指针而无法使用唯一指针?
- 为什么或在什么情况下,你会将参数作为C++中的引用(或指针)传递给函数?
- 在这种情况下,"typename..."意味着什么?
- 在集合的情况下使用emplace_hint的用例是什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 在这种情况下,int**在C中是什么意思
- 在这种情况下,括号有什么好处?
- 在什么情况下,使用'const T*'输入参数比'const T&'更可取?
- 在这种情况下,#define 的作用是什么?
- 在这种情况下,我们可以使用静态而不是朋友吗,还有其他解决方案是什么
- 在以下情况下会出现什么问题?
- 编译器在这里做什么,允许在很少进行实际比较的情况下比较许多值
- 在这种情况下,删除指针数组期间会发生什么?
- 在不编写显式 setter 的情况下修改私有类数据成员的便捷方法是什么?模板有用吗?
- 在这种情况下,有什么正确的方法可以实现锁定吗?
- 在不使用默认构造函数的情况下声明 POD 结构时,会实例化什么?
- 在没有额外代码的情况下链接两个独立类的最通用方法是什么?