我正在尝试渲染一个盒子,其中近面与显示器的角落完全对齐,但其余部分可以剪切(透视)有点像视差效果。基本上和这个一模一样。
我发现将我的投影矩阵乘以这个剪切矩阵会产生正确的效果:
Shear = {
1 0 -cot(theta) 0
0 1 -cot(phi) 0
0 0 1 0
0 0 0 1
}
然而,视图体积似乎在体积中心周围发生剪切,因此一旦您开始旋转,盒子的正面就会在显示区域之外摆动。
也许我可以改变模型或视口来补偿,但这似乎是作弊。这可以用正确的投影矩阵来完成,还是有一种好方法来计算需要应用于模型视图矩阵的其他一些平移?