关于改变物体位置的问题
我现在是使用这种方法来改变一个物体的位置和状态
但是我想每一次渲染一帧的时候都要这样做一次,这样的话不会影响效率的吗?
有没有一种方法是直接改变它的世界坐标,这样的话应该不会每帧都要渲染一次,效率可能会有所提高吧
void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext ){ HRESULT hr; pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB( 0,255,255 ), 1.0f, 0 ); pd3dDevice->SetRenderState(D3DRS_LIGHTING, false); if (SUCCEEDED(pd3dDevice->BeginScene())) { model.Render(pd3dDevice); pd3dDevice->SetTransform(D3DTS_WORLD, &m) ; room.Render(pd3dDevice); D3DXMatrixRotationY( &m, -45 ); MyCamera.SetWorldMatrix(m);//***************************************************** D3DXMATRIX world = *MyCamera.GetWorldMatrix() ; pd3dDevice->SetTransform(D3DTS_WORLD, &world) ; // Set view matrix D3DXMATRIX view = *MyCamera.GetViewMatrix() ; pd3dDevice->SetTransform(D3DTS_VIEW, &view) ; // Set projection matrix D3DXMATRIX proj = *MyCamera.GetProjMatrix() ; pd3dDevice->SetTransform(D3DTS_PROJECTION, &proj) ;//***************************************************** pd3dDevice->EndScene(); }}void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext ){ MyCamera.FrameMove( fElapsedTime ); D3DXMatrixRotationY( &m, 45 ); }