void AmjuGLDX9::RotateY(float degs) { AMJU_CALL_STACK; Assert(s_matrixMode == AmjuGL::AMJU_MODELVIEW_MATRIX); D3DXMATRIX m; D3DXMatrixIdentity(&m); D3DXMatrixRotationY(&m, D3DXToRadian(degs)); g_matrixStack->MultMatrixLocal( &m); dd->SetTransform(D3DTS_WORLD, g_matrixStack->GetTop()); }
void AmjuGLDX9::Scale(float x, float y, float z) { AMJU_CALL_STACK; Assert(s_matrixMode == AmjuGL::AMJU_MODELVIEW_MATRIX); D3DXMATRIX m; D3DXMatrixIdentity(&m); D3DXMatrixScaling(&m, x, y, z); g_matrixStack->MultMatrixLocal(&m); dd->SetTransform(D3DTS_WORLD, g_matrixStack->GetTop()); }
void AmjuGLDX9::Translate(float x, float y, float z) { AMJU_CALL_STACK; Assert(s_matrixMode == AmjuGL::AMJU_MODELVIEW_MATRIX); // TODO Use current matrix mode, or scrap the idea of // manipulating proj and tex mats D3DXMATRIX m; D3DXMatrixIdentity(&m); D3DXMatrixTranslation(&m, x, y, z); g_matrixStack->MultMatrixLocal( &m); // WORLD -- VIEW matrix is always just identity dd->SetTransform( D3DTS_WORLD, g_matrixStack->GetTop() ); }
void Node::render() { LPD3DXMATRIXSTACK stack = getStack(); stack->Push(); stack->MultMatrixLocal(&_matrix); getDevice()->SetTransform(D3DTS_WORLDMATRIX(0), stack->GetTop()); _object->render(); for (int i = 0; i != _children.size(); i++) _children[i]->render(); stack->Pop(); }
void AmjuGLDX9::MultMatrix(const float m[16]) { D3DXMATRIX d3dm( m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); if (s_matrixMode == AmjuGL::AMJU_MODELVIEW_MATRIX) { g_matrixStack->MultMatrixLocal(&d3dm); dd->SetTransform(D3DTS_WORLD, g_matrixStack->GetTop()); } else if (s_matrixMode == AmjuGL::AMJU_PROJECTION_MATRIX) { Assert(0); } }
void AmjuGLDX9::RotateZ(float degs) { AMJU_CALL_STACK; D3DXMATRIX m; D3DXMatrixIdentity(&m); D3DXMatrixRotationZ(&m, D3DXToRadian(degs)); if (s_matrixMode == AmjuGL::AMJU_MODELVIEW_MATRIX) { g_matrixStack->MultMatrixLocal( &m); dd->SetTransform(D3DTS_WORLD, g_matrixStack->GetTop()); } else { matProj *= m; dd->SetTransform(D3DTS_PROJECTION, &matProj); } }