读书人

关于改变物体位置的有关问题

发布时间: 2012-03-20 14:01:11 作者: rapoo

关于改变物体位置的问题
我现在是使用这种方法来改变一个物体的位置和状态

但是我想每一次渲染一帧的时候都要这样做一次,这样的话不会影响效率的吗?

有没有一种方法是直接改变它的世界坐标,这样的话应该不会每帧都要渲染一次,效率可能会有所提高吧

C/C++ code
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 );    }


[解决办法]
只是改变坐标位置并不会太影响效率

读书人网 >网络游戏

热点推荐