我有一个“2 1/2-D”引擎,我正致力于针对多个平台,但目前我正在升级我的DirectX 11版本。
对我的引擎来说非常重要的一件事就是能够调整地平线点,使地平线以下的视角移动到与地平线上方的视角不同的角度。
在普通的3D环境中,这通常是通过将相机倾斜到地平线以上来实现的,然而,在我的引擎中,大量使用2D精灵,在传统意义上倾斜相机也会倾斜精灵。我不想做的事情(它破坏了16位街机风格的效果)
我通过使用偏心的中心点在CPU中手动进行透视分割,在某一点上工作,但是如果可能的话,我想用特殊的投影矩阵来做这件事。现在我正在使用一个使用FOV,近平面和远平面参数的股票矩阵。
有什么想法吗?这甚至可以用矩阵吗? DX11管道中的自动划分是不是自动划分?如何控制透视分割的执行时间和方式?我是否正确假设透视鸿沟不能单独用矩阵完成?它要求每个顶点手动除以Z,正确吗?
答案 0 :(得分:0)
你正在寻找的是偏心透视投影矩阵,而不是fov和纵横比,你提供左/右/上/下有tan(角度)。结果与对称投影矩阵或多或少相同,增加了两个额外的非零值。
你也是对的,GPU很难用于执行分割,并且在顶点着色器中进行它并不是一个好主意,它会混淆纹理坐标和裁剪的透视校正(要么不是精灵特殊案例。)
您可以在此处找到此类矩阵的示例:https://msdn.microsoft.com/en-us/library/windows/desktop/bb205353(v=vs.85).aspx