我正在写一个当前运行良好的软件渲染器,但我试图获得纹理坐标的透视校正,并且看起来不正确。我为我的渲染器使用与opengl相同的矩阵数学。要rasterise三角形我做到以下几点:纹理坐标在3D中的透视校正
使用模型视图和投影矩阵变换顶点,并转化为剪辑坐标。
用于每个三角形的每个像素,计算重心坐标进行内插的属性(颜色,纹理坐标,法线等)
以校正立体我使用透视正确插值: (W是深度的坐标顶点,c是顶点的纹理坐标,b为一个顶点的重心重量)
1/w = b0*(1/w0) + b1*(1/w1) + b2*(1/w2) c/w = b0*(c0/w0) + b1*(c1/w1) + b2*(c2/w2) c = (c/w)/(1/w)
这应该正确的角度来看,它有一点帮助,但仍然存在明显的透视问题。我在这里错过了些什么,也许是一些舍入问题(我使用所有数学的浮点数)?
在此图像中看到纹理坐标中的误差沿着对角线明显,这是通过深度坐标进行除法的结果。
此外,这通常是用于纹理坐标进行...是必要的其他特性(例如法线等)以及?
屏幕截图可能会对您有所帮助。 – genpfault 2011-03-24 21:21:56
我不能添加屏幕截图,直到我的评分为10 :( – 2011-03-25 19:15:13
你现在的评分:D – Bahbar 2011-03-25 19:59:55