⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mgcgpcamera.h

📁 《3D游戏引擎设计》的源码
💻 H
字号:
// Magic Software, Inc.
// http://www.magic-software.com
// Copyright (c) 2000, All Rights Reserved
//
// Source code from Magic Software is supplied under the terms of a license
// agreement and may not be copied or disclosed except in accordance with the
// terms of that agreement.  The various license agreements may be found at
// the Magic Software web site.  This file is subject to the license
//
// RESTRICTED USE SOURCE CODE
// http://www.magic-software.com/License/restricted.pdf

#ifndef MGCGPCAMERA_H
#define MGCGPCAMERA_H

#include "MgcCamera.h"


class MgcGPCamera : public MgcCamera
{
    MgcDeclareRTTI;
    MgcDeclareStream;

public:
    // construction and destruction
    MgcGPCamera (MgcReal fWidth, MgcReal fHeight);

    MgcReal GetFarDivideNear () const;
    MgcReal GetFarDivideFarMinusNear () const;

    void ComputeModelToViewTransform (const MgcMatrix3& rkWRot,
        const MgcVector3& rkWTrn, MgcReal fWScale,
        MgcMatrix3& rkModelToViewMat, MgcVector3& rkModelToViewTrn);

    virtual void OnFrustumChange ();
    virtual void OnViewPortChange ();
    virtual void OnFrameChange ();

protected:
    MgcGPCamera ();

    MgcReal m_fWidth, m_fHeight;

    // frustum-related values
    MgcReal m_fInverseNear;           // 1/N
    MgcReal m_fFarDivideNear;         // F/N
    MgcReal m_fFarDivideFarMinusNear; // F/(F-N)
    MgcReal m_fTwoDivRmL;             // 2/(R-L)
    MgcReal m_fRpLDivNRmL;            // (R+L)/(N*(R-L))
    MgcReal m_fTwoDivTmB;             // 2/(T-B)
    MgcReal m_fTpBDivNTmB;            // (T+B)/(N*(T-B))

    // viewport (left, bottom, width, height)
    int m_iPortL, m_iPortB, m_iPortW, m_iPortH;

    // projection-times-rotation matrix
    void UpdateProjRotMatrix ();
    MgcMatrix3 m_kProjRot;
};

MgcSmartPointer(MgcGPCamera);
MgcRegisterStream(MgcGPCamera);
#include "MgcGPCamera.inl"

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -