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!