Add horizontal FoV to CEngine
parent
0de347d430
commit
2751db3245
|
@ -2631,6 +2631,10 @@ void CEngine::SetFocus(float focus)
|
|||
float farPlane = m_deepView[0] * m_clippingDistance;
|
||||
|
||||
float aspect = static_cast<float>(m_size.x) / static_cast<float>(m_size.y);
|
||||
|
||||
// Compute H-FoV from V-FoV and aspect ratio.
|
||||
m_hfov = 2.0f * atan(aspect * tan(focus / 2.0f));
|
||||
|
||||
Math::LoadProjectionMatrix(m_matProj, m_focus, aspect, 0.5f, farPlane);
|
||||
}
|
||||
|
||||
|
@ -2639,6 +2643,16 @@ float CEngine::GetFocus()
|
|||
return m_focus;
|
||||
}
|
||||
|
||||
float CEngine::GetVFovAngle()
|
||||
{
|
||||
return m_focus;
|
||||
}
|
||||
|
||||
float CEngine::GetHFovAngle()
|
||||
{
|
||||
return m_hfov;
|
||||
}
|
||||
|
||||
void CEngine::SetShadowColor(float value)
|
||||
{
|
||||
m_shadowColor = value;
|
||||
|
|
|
@ -921,12 +921,16 @@ public:
|
|||
void SetTerrainVision(float vision);
|
||||
|
||||
//@{
|
||||
//! Management of camera angle
|
||||
/**
|
||||
//! Management of camera vertical field-of-view angle.
|
||||
/** This is specified in radians.
|
||||
Horizontal FoV is calculated based on vertical FoV and aspect ratio.
|
||||
0.75 = normal
|
||||
1.50 = wide-angle */
|
||||
void SetFocus(float focus);
|
||||
//! Deprecated alias for GetVFovAngle
|
||||
float GetFocus();
|
||||
float GetVFovAngle();
|
||||
float GetHFovAngle();
|
||||
//@}
|
||||
|
||||
//@{
|
||||
|
@ -1318,8 +1322,10 @@ protected:
|
|||
Math::Matrix m_matProj;
|
||||
//! View matrix for 3D scene
|
||||
Math::Matrix m_matView;
|
||||
//! Camera angle for 3D scene
|
||||
//! Camera vertical field-of-view angle for 3D scene. A.k.a. m_vfov
|
||||
float m_focus;
|
||||
//! Horizontal field-of-view angle, calculated from vertical FOV and aspect ratio
|
||||
float m_hfov;
|
||||
|
||||
//! Projection matrix for rendering shadow maps
|
||||
Math::Matrix m_shadowProjMat;
|
||||
|
|
Loading…
Reference in New Issue