glm::mat4 mModel = glm::translate(glm::mat4(1.0),cCamera.vEye); mModel = glm::rotate(mModel,-cCamera.GetAngleY(),glm::vec3(0, 1, 0)); mModel = glm::rotate(mModel,cCamera.GetAngleX(),glm::vec3(1, 0, 0)); mModel = glm::scale(mModel, glm::vec3(10.0f, 10.0f, 10.0f)); spMain.SetModelAndNormalMatrix("matrices.modelMatrix", "matrices.normalMatrix", mModel); weaponLoader[0].RenderModel();

void CFPSCamera::RotateWithMouse() { GetCursorPos(&pCur); RECT rRect; GetWindowRect(appMain.hWnd, &rRect); int iCentX = (rRect.left+rRect.right)>>1, iCentY = (rRect.top+rRect.bottom)>>1; float deltaX = (float)(iCentX-pCur.x)*fSense; float deltaY = (float)(iCentY-pCur.y)*fSense; if(deltaX != 0.0f) { vView -= vEye; vView = glm::rotate(vView, deltaX, glm::vec3(0.0f, 1.0f, 0.0f)); vView += vEye; } if(deltaY != 0.0f) { glm::vec3 vAxis = glm::cross(vView-vEye, vUp); vAxis = glm::normalize(vAxis); float fAngle = deltaY; float fNewAngle = fAngle+GetAngleX(); if(fNewAngle > -89.80f && fNewAngle < 89.80f) { vView -= vEye; vView = glm::rotate(vView, deltaY, vAxis); vView += vEye; } } SetCursorPos(iCentX, iCentY); }

void CFPSCamera::Update() { RotateWithMouse(); // Get view direction glm::vec3 vMove = vView-vEye; vMove = glm::normalize(vMove); vMove = vMove * glm::vec3(1.0f, 0.0f, 1.0f); vMove *= fSpeed; glm::vec3 vStrafe = glm::cross(vView-vEye, vUp); vStrafe = glm::normalize(vStrafe); vStrafe = vStrafe * glm::vec3(1.0f, 0.0f, 1.0f); vStrafe *= fSpeed; int iMove = 0; glm::vec3 vMoveBy; // Get vector of move if(Keys::Key(iForw))vMoveBy += vMove*appMain.sof(1.0f); if(Keys::Key(iBack))vMoveBy -= vMove*appMain.sof(1.0f); if(Keys::Key(iLeft))vMoveBy -= vStrafe*appMain.sof(1.0f); if(Keys::Key(iRight))vMoveBy += vStrafe*appMain.sof(1.0f); vEye += vMoveBy; vView += vMoveBy; }

I heard that the weapon should render before any view transformation,and align it to the bottom right corner of the screen?

A model has a position and direction,how to set it properly?

Im new in game programming.Thanks!

**Edited by YenTown, 31 August 2014 - 12:42 PM.**