发布网友 发布时间:2022-04-23 05:59
共2个回答
热心网友 时间:2023-10-17 21:07
这个东西重要么?如果不是考试的话,和东西基本上不需要你自己写。而且opengl和d3d都是一样,没有本质区别。他们都是采用矩阵对当前的三维坐标进行坐标系转换。比如常用的localtoworld,worldtocarmer carmertoscreen 三个转换过程,你说的投影变换就是从三维转换成二维的过程,对应carmertoscreen。他是采用第四维的w值对你的xyz进行降维。这个都属于数学范畴,没必要深究。懂得原理就成。
热心网友 时间:2023-10-17 21:08
左手坐标系透视投影:
D3DXMATRIX * D3DXMatrixPerspectiveFovLH(
__inout D3DXMATRIX *pOut,
__in FLOAT fovy,
__in FLOAT Aspect,
__in FLOAT zn,
__in FLOAT zf
);
输出矩阵如下:
xScale 0 0 0
0 yScale 0 0
0 0 zf/(zf-zn) 1
0 0 -zn*zf/(zf-zn) 0
where:
yScale = cot(fovY/2)
xScale = yScale / Aspect
具体数学推导过程较复杂,看下面参考资料。百度一下各种有追问我看了下你给的网站,那是opengl 的推导原理 , 关于d3d的呢 。请不要把 dx开发文档上的东西copy 给我, 谢谢。如果回答正解,我会给您额外的分的谢谢。ps:如果我搜得到原理我就不会提问了额。
参考资料:http://hi.baidu.com/twjblog/item/cbbcf213c4b5c0f5ddeeca2c