怎样得到矩阵数组

千分散尽还复来 2012-10-11 05:04:05
这里的一个贴子
等了半天没人说话,链接过来算了,一起给分。
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
问题仍未解决,返回的指针究竟是什么还不清楚,求过路的大侠们指点!
WJN92 2012-10-19
  • 打赏
  • 举报
回复
不就是一个指针么
  • 打赏
  • 举报
回复
上面哪两个矩阵?是那个矩阵和数组吗?全代换下?
我试过,换成矩阵数组可以顺利编译,但看结果可知输出的值是错误的。因为我用其他的方法得到过正确结果,我之所以使用上面的方法,是我嫌原来的方法太繁琐。
yinyuping 2012-10-15
  • 打赏
  • 举报
回复
你可以试试:
D3DXMATRIX mat;
D3DXMATRIX* pmat;
然后D3DXMatrixIdentity上面两个矩阵,你就会发现错在哪里了。

yinyuping 2012-10-12
  • 打赏
  • 举报
回复
你用什么编译器?

返回数组第一个元素的地址试试。
  • 打赏
  • 举报
回复
回楼上,我用的VS2005 C++;
经反复验证,使用下面这一段是合理的:

class CMatrix
{
public:
CMatrix() { D3DXMatrixIdentity( &m_LCPM ) ; m_Position[0] = m_Position[1] = m_Position[2] = D3DXVECTOR3( 0.f ,0.f,0.f) ; /* for ( int i = 0 ; i < 3 ; i ++ ) D3DXMatrixIdentity( m_pLCVMList[i] ) ; */ } ;
~CMatrix() {} ;
void SetPosition( D3DXVECTOR3 Position[3] ) { for ( int i = 0 ; i < 3 ; i ++ ) m_Position[i] = Position[i] ; UpdateLCVM() ; };
void UpdateLCVM ()
{
D3DXVECTOR3 Di[5] = { D3DXVECTOR3( 0.f , -1.f , 0.f) ,D3DXVECTOR3( 1.f , 0.f , 0.f) ,D3DXVECTOR3( -1.f , 0.f , 0.f) ,D3DXVECTOR3( 0.f , 0.f , 1.f) ,D3DXVECTOR3( 0.f , 0.f , -1.f) } ;
D3DXVECTOR3 Up( 0.01f , 1.f , 0.01f ) ;
for ( int i = 0 ; i < 3 ; i ++ )
{
for ( int j = 0 ; j < 5 ; j ++ )
{
D3DXVECTOR3 At = m_Position[i] + Di[j] ;
D3DXMatrixLookAtLH( m_pLCVMList[5*i+j] , &m_Position[i] ,&At ,&Up ) ;
}//??????????????????????????????
}
};
D3DXMATRIX* GetLCPM() { D3DXMatrixPerspectiveFovLH( &m_LCPM, D3DX_PI/2, 1.f, 0.1f, 20.f ); return &m_LCPM ; } ;
D3DXMATRIX** GetLCVMList() { return m_pLCVMList ; } ;
private:
D3DXMATRIX m_LCPM ,*m_pLCVMList[15] ;
D3DXVECTOR3 m_Position[3] ;
};

现在问题集中在如何引用数组中的指针上了。
如果一个一个的计算出15个矩阵的值(m0,m1,.....m14),再取它们的地址填充到m_pLCVMList数组里面,结果就是正确的;但像上面那样用for循环去计算就出现访问冲突,其实在构造函数中用函数D3DXMatrixIdentity( m_pLCVMList[i] ) 初始这个列表时就已经冲突了。这说明我引用的矩阵指针是错误的,究竟该怎样用呢?谢谢!

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧