D3DXMatrixPerspectiveOffCenterLH()的参数问题
说明文档中D3DXMatrixPerspectiveOffCenterLH()的内容不多,在网上找了下,发现
http://blog.csdn.net/rabbit729/article/details/6237811
中有较详细的说明,但我还不明白:既然这些参数定义的都是近平面的数值,而且又都是在相机空间,岂不是maxX=-minX; maxY=-minY;?参数不是可以省去两个?变成这样:
D3DXMATRIX * D3DXMatrixPerspectiveOffCenterLH(
D3DXMATRIX * pOut,
FLOAT x,
FLOAT y,
FLOAT zn,
FLOAT zf
);
原型却是:
D3DXMATRIX * D3DXMatrixPerspectiveOffCenterLH(
D3DXMATRIX * pOut,
FLOAT l,
FLOAT r,
FLOAT b,
FLOAT t,
FLOAT zn,
FLOAT zf
);
请过来人指点一下。谢谢!
[解决办法]
D3DXMatrixPerspectiveLH
和
D3DXMatrixPerspectiveOffCenterLH
这两个寒暑的区别就在于如此
前者少了2个参数就是假定视线在窗口的中心, 而后者则未视线未必在窗口的中心,可以“偏心”
D3DXMatrixPerspectiveOffCenterLH的这个特点可以让你可以实现一些特效
比如,你有四个独立的显示器, 让四个显示器合并成一个大的显示器,来观看同一个场景
这个时候,就是用D3DXMatrixPerspectiveOffCenterLH生成四个不同的透视矩阵察看同一个场景,然后拼接起来,四个矩阵生成的画面的某个角点才是合并后的画面的相机视线的中心点
这个技术也可以用于渲染一张超出显卡硬件支持范围的大图片, 比如:渲染一个4000*4000的图片, 而你的显卡可能只支持1000*1000的分辨率,解决的办法就是把大图片分成4*4个小图片,每个小图片都是利用D3DXMatrixPerspectiveOffCenterLH生成和视线方向“偏心”的投影矩阵,渲染16次后拼接成大图片的