关于Cube Map(环境帖图)中的困惑
最近在弄DX8的CubeMap例子,对里面的下面代码不解:
// 渲染天空顶
D3DXMATRIX matViewSave, matProjSave;
m_pD3DDev->GetTransform( D3DTS_VIEW, &matViewSave );
m_pD3DDev->GetTransform( D3DTS_PROJECTION, &matProjSave );
// Disable zbuffer, center view matrix, and set FOV to 90 degrees
D3DXMATRIX matView = matViewSave;
D3DXMATRIX matProj = matViewSave;
matView._41 = matView._42 = matView._43 = 0.0f;
这里的view矩阵怎么直接设置成0呀?他们代表什么?
在渲染到CubeTexture时也是首先matViewDir._41 = 0.0f; matViewDir._42 = 0.0f; matViewDir._43 = 0.0f; 为什么?
然后
for( DWORD i=0; i<6; i++ )
{
// Set the view transform for this cubemap surface
D3DXMATRIX matView;
matView = D3DUtil_GetCubeMapViewMatrix( (D3DCUBEMAP_FACES)i );
D3DXMatrixMultiply( &matView, &matViewDir, &matView );
m_pD3DDev->SetTransform( D3DTS_VIEW, &matView );
...........................
}
怎么还D3DXMatrixMultiply呀?
各位大虾帮忙,先谢了!
问题点数:60、回复次数:6Top
1 楼nasi00(莫傲·逍遥)回复于 2005-07-30 21:16:23 得分 30
你要是明白矩阵中 41, 42, 43 这个位置的向量是做什么用的就会明白了…… (Tips: Position)Top
2 楼marcoxiong(marco)回复于 2005-07-30 22:09:22 得分 0
我查过资料,这三个不是纯粹上的位置,它们是-(uc),-(vc),-(nc) u表示观察系上方的坐标,v代表右方坐标,n代表观察方向,c为观察坐标系原点在世界坐标系的坐标。我也调试过程序,只把43改为-1后观察坐标就向前了,这里的观察坐标系里的向量对c没影响吗?如果这里的向量不是单位向量呢?
还有渲染cube map时它是在matViewDir基础上再乘以matView,这个是为什么?Top
3 楼marcoxiong(marco)回复于 2005-08-01 20:33:04 得分 0
自己UP,大家快帮帮忙吧!自学真的好难!Top
4 楼CGChina(时空英雄)回复于 2005-08-01 23:12:47 得分 30
Render to the six surface of cube texture.
Top
5 楼marcoxiong(marco)回复于 2005-08-02 08:50:18 得分 0
楼上这位大哥,我的问题是只与这个view矩阵有关,关于环境帖图原理我还是基本知道的。不管怎样,也谢了。Top
6 楼marcoxiong(marco)回复于 2005-08-05 13:00:56 得分 0
有没有人用过呀!真的不想只知其然而不知其所以然!Top





