如何计算投影纹理坐标 - 补充

原文见:http://www.cnblogs.com/Pointer/archive/2004/12/20/79323.html

最近通过学习固定渲染管线的光栅化过程,终于明白了扭曲的原因。

我们先设V=投影变换前的顶点,V'=投影变换后的齐次顶点。

在屏幕空间中,V的各项属性并不是线性分布的,但1/Vz是线性分布的,对于其它的顶点属性Vb/Vz也是线性分布的(《Mathematics for 3D Game Programming & Computer Graphics》上有详细的证明),所以我们进行插值的时候应该先对1/Vz进行线性插值,然后对Vb/Vz也进行线性插值,最后将Vb/Vz的插值结果乘以1/Vz插值结果的倒数,得到Vb的插值结果。

又因为V'w= -Vz(推导见投影矩阵的推导),所以我们一般用1/V'w来替代1/Vz。

而我在进行纹理投影的时候,将投影变换后的齐次顶点坐标投影到了三维的空间中(即:<V'x/V'w, V'y/V'w, V'z/V'w>),然后用glVertex3f将该坐标传入了固定渲染管线,这样的话就使得纹理坐标的插值由非线性插值变为了线性插值,导致了最终结果的扭曲。

其实直接用glVertex4f将V'传入固定渲染管线,由固定渲染管线进行透视矫正的话,即可消除这种扭曲现象。

project%20texture%2002.jpg

转载于:https://www.cnblogs.com/Pointer/archive/2005/01/12/90513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值