refpages说:“返回最接近指定纹理坐标的四个纹理元素的加权平均值。”他们究竟如何加权?那么3D纹理呢,它仍然只使用4个像素插值或更多?GL_LINEAR使用什么算法?
3
A
回答
1
在
2D纹理
是用于4个样本,这意味着双线性插值所以3X 线性插值。权重是目标纹理与其4个邻居的归一化距离。
因此,例如,你想要的纹理像素的
(s,t)=(0.21,0.32)
但质地附近纹理像素坐标为:
(s0,t0)=(0.20,0.30)
(s0,t1)=(0.20,0.35)
(s1,t0)=(0.25,0.30)
(s1,t1)=(0.25,0.35)
的权重分别是:
ws = (s-s0)/(s1-s0) = 0.2
wt = (t-t0)/(t1-t0) = 0.4
所以线性插值textels在s
方向
c0 = texture(s0,t0) + (texture(s1,t0)-texture(s0,t0))*ws
c1 = texture(s0,t1) + (texture(s1,t1)-texture(s0,t1))*ws
终于在t
方向:
c = c0 + (c1-c0)*wt
,其中在s,t
texture(s,t)
返回纹素的色彩,而坐标对应于准确的纹素和c
是最后的内插的纹理像素的颜色。
实际上,s,t
坐标乘以纹理分辨率(xs,ys
),将纹理分辨率转换为纹理单元。之后s-s0
和t-t0
已经标准化,因此不需要除以s1-s0
和t1-t0
,因为它们的展位等于一个。所以:
s=s*xs; s0=floor(s); s1=s0+1; ws=s-s0;
t=t*ys; t0=floor(t); t1=t0+1; wt=t-t0;
c0 = texture(s0,t0) + (texture(s1,t0)-texture(s0,t0))*ws;
c1 = texture(s0,t1) + (texture(s1,t1)-texture(s0,t1))*ws;
c = c0 + (c1-c0)*wt;
我没有用过3D纹理之前,但在这种情况下,它使用8个textels,它被称为三线性插值其为2x 双线性插值简单地采取2个最接近的纹理和与双线性插值计算每刚刚计算通过基于u
线性插值最终纹理像素的完全相同的方式协调......所以
u=u*zs; u0=floor(u); u1=u0+1; wu=u-u0;
c = cu0 + (cu1-cu0)*wu;
其中zs
是纹理的计数,cu0
是的结果双线性插值纹理在u0
和cu1
在u1
。同样的原理也可用于的贴图 ...
所有的坐标可能是由0.5纹元offseted也分辨率相乘可以xs-1
而不是xs
根据您的钳设置来完成...
相关问题
- 1. arsort使用什么算法?
- 2. mayavi.mlab.pipeline.iso_surface.IsoSurface使用什么算法?
- 3. table.sort使用什么算法?
- 4. Math.random使用什么算法?
- 5. .Net Machinekey.Protect - 使用什么算法?
- 6. 为什么BFS算法使用队列?
- 7. python的排序()使用什么算法?
- 8. 在std :: search中使用什么算法?
- 9. Python在fractions.gcd()中使用什么算法?
- 10. 使用什么语音压缩算法?
- 11. 这里使用了什么算法?
- 12. GameplayKit寻路使用什么算法?
- 13. PHP使用什么样的算法?
- 14. qsort使用什么排序算法?
- 15. 文本压缩 - 什么算法使用
- 16. MKMapPointForCoordinate中使用的算法是什么?
- 17. 试图找出使用什么算法
- 18. 什么是算法
- 19. 什么算法/方法被用来使用暴力方法?
- 20. Excel使用什么算法重新计算公式?
- 21. 使用什么算法来计算校验位?
- 22. 什么是算法必须研究,以使更好的算法
- 23. D3.js使用什么算法来使用力指向图?
- 24. 我怎么知道使用什么加密算法
- 25. 什么是TreeNode.Nodes.ContainsKey的算法
- 26. 这是什么算法?
- 27. 什么是McNaughton-Yamada算法?
- 28. 这是什么算法?
- 29. 什么是s2k算法?
- 30. 什么是cooks-kim算法
作为一名外部观察者,我推测这只是2D线性插值。 –
@OliverCharlesworth它是双线性的...... – Spektre