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

📄 glcamera.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: glcamera.hpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 19:49:26  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * PRODUCTION * =========================================================================== */#ifndef GUI_OPENGL___GL_CAMPERA__HPP#define GUI_OPENGL___GL_CAMPERA__HPP/*  $Id: glcamera.hpp,v 1000.1 2004/06/01 19:49:26 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Mike DiCuccio * * File Description: * */#include <corelib/ncbiobj.hpp>#include <gui/opengl.h>#include <gui/gui.hpp>/** @addtogroup GUI_OPENGL * * @{ */BEGIN_NCBI_SCOPE//// class CGlCamera abstracts the options required for camera set-up.//// This class supports orthographic and perspective view setups, and provides a// variety of means to control the layout.  When this class is made current,// the values of the matrices are optionally overwritten rather than saved.//class NCBI_GUIOPENGL_EXPORT CGlCamera : public CObject{public:    // enum controlling the type of layout we use (orthographic or perspective)    // the default is perspective.    enum EType {        eOrtho,        ePerspective    };    // default ctor    CGlCamera();    // set up the camera for rendering.  the boolean flag passed here indicates    // whether the current matrices are to be saved.  If they are saved, they    // must be restored using ReleaseCurrent(true)    void MakeCurrent(bool save_matrices = false);    // restore the previously saved projection matrices.  The default is for    // this to be a null operation; if MakeCurrent(true) was called,    // ReleaseCurrent(true) must also be called.    void ReleaseCurrent(bool restore_matrices = false);    // access the type of layout we use    EType GetLayout(void) const;    void SetLayout(EType type);    //    // access the clipping planes    // this is specific to the kind of camera set-up we're using    //    //    // Common view setup    // The two clipping planes defining the near and far aspects of the frustum    // are shared by perspective and orthographic views.    GLdouble GetNearPlane  (void) const;    GLdouble GetFarPlane   (void) const;    void     SetNearPlane  (GLdouble);    void     SetFarPlane   (GLdouble);    //    // Orthographic Setup    // An orthographic view is an architectural view that lacks perspective.    // Orthographic displays are most commonly used to set up 2D displays that    // lack perspective, but they are also valid for 3D scenes in which    // perspective hints are not required.    //    // Orthographic views are defined as a cube, bounded by six planes (near,    // far, left, right, top, bottom).  The corrdinates used for these are up    // to the user to determine; OpenGL makes no assumptions about the    // rendering coordinates.    GLdouble GetLeftPlane  (void) const;    GLdouble GetRightPlane (void) const;    GLdouble GetTopPlane   (void) const;    GLdouble GetBottomPlane(void) const;    void     SetLeftPlane  (GLdouble f);    void     SetRightPlane (GLdouble f);    void     SetTopPlane   (GLdouble f);    void     SetBottomPlane(GLdouble f);    //    // Perspective setup    // Perspective views are defined by a different set of parameters.  The    // perspective camera setup creates a frustum (= truncated pyramid) defined    // by the following parameters:    //  - near and far clipping planes (from common set-up)    //  - field of view (in degrees)    //  - aspect ratio (width / height)    GLdouble GetFieldOfView(void) const;    GLdouble GetAspectRatio(void) const;    void     SetFieldOfView(GLdouble f);    void     SetAspectRatio(GLdouble f);private:    // type of viewing setup we use (default = perspective)    EType m_Type;    // common params    GLdouble m_NearPlane;    GLdouble m_FarPlane;    // ortho params    GLdouble m_LeftPlane;    GLdouble m_RightPlane;    GLdouble m_TopPlane;    GLdouble m_BottomPlane;    // perspective params    GLdouble m_Fov;    GLdouble m_Aspect;};END_NCBI_SCOPE/* @} *//* * =========================================================================== * $Log: glcamera.hpp,v $ * Revision 1000.1  2004/06/01 19:49:26  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * * Revision 1.4  2004/05/11 18:54:22  dicuccio * Added doxygne modules info * * Revision 1.3  2004/05/03 12:43:59  dicuccio * Added #include for gui/gui.hpp * * Revision 1.2  2003/06/03 19:36:38  dicuccio * Added export specifiers.  Fixed errant #include of <GL/...> files * * Revision 1.1  2003/06/03 17:42:54  dicuccio * Added texture support.  Added classes to handle OpenGL camera setup, viewport * specification * * =========================================================================== */#endif  // GUI_OPENGL___GL_CAMPERA__HPP

⌨️ 快捷键说明

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