1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-05 16:46:06 +01:00
LibrePilot/ground/openpilotgcs/src/libs/glc_lib/glc_state.h

221 lines
5.4 KiB
C++

/****************************************************************************
This file is part of the GLC-lib library.
Copyright (C) 2005-2008 Laurent Ribon (laumaya@users.sourceforge.net)
http://glc-lib.sourceforge.net
GLC-lib is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
GLC-lib is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with GLC-lib; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*****************************************************************************/
//! \file glc_state.h interface for the GLC_State class.
#ifndef GLC_STATE_H_
#define GLC_STATE_H_
#include <QString>
#include "glc_cachemanager.h"
#include "glc_config.h"
//////////////////////////////////////////////////////////////////////
//! \class GLC_State
/*! \brief GLC_State store GLC_lib state*/
/*! GLC_State is used to set and get glabal GLC_lib state
* */
//////////////////////////////////////////////////////////////////////
class GLC_LIB_EXPORT GLC_State
{
private:
GLC_State();
public:
~GLC_State();
//////////////////////////////////////////////////////////////////////
/*! \name Get Functions*/
//@{
//////////////////////////////////////////////////////////////////////
public:
//! Return true if VBO is supported
static bool vboSupported();
//! Return true if VBO is used
static bool vboUsed();
//! Return true if GLSL is supported
static bool glslSupported();
//! Return true if frameBuffer is supported
static bool frameBufferSupported();
//! Return true if GLSL is used
static bool glslUsed();
//! Return true if Point Sprite is supported
static bool pointSpriteSupported();
//! Return true if selection shader is used
static bool selectionShaderUsed();
//! Return true if is in selection mode
static bool isInSelectionMode();
//! Return the Opengl version
static QString version();
//! Return the Opengl vendor
static QString vendor();
//! Return the Opengl renderer
static QString renderer();
//! Return true if OpenGL Vendor is NVIDIA
static bool vendorIsNvidia();
//! Return true if pixel culling is activate
static bool isPixelCullingActivated();
//! Return true if the cache is used
static bool cacheIsUsed();
//! Return the current cache manager
static GLC_CacheManager& currentCacheManager();
//! Return true if space partitionning is used
static bool isSpacePartitionningActivated();
//! Return the default octree depth
static int defaultOctreeDepth();
//! Return true if frustum culling is activated
static bool isFrustumCullingActivated();
//! Return true valid
static bool isValid();
//@}
//////////////////////////////////////////////////////////////////////
/*! \name Set Functions*/
//@{
//////////////////////////////////////////////////////////////////////
public:
//! Intialize the state
static void init();
//! Set VBO support
static void setVboSupport();
//! Set VBO usage
static void setVboUsage(const bool);
//! Set GLSL support
static void setGlslSupport();
//! Set Point Sprite support
static void setPointSpriteSupport();
//! Set the frame buffer support
static void setFrameBufferSupport();
//! Set GLSL usage
static void setGlslUsage(const bool);
//! Set selection shader usage
static void setSelectionShaderUsage(const bool);
//! Set selection mode
static void setSelectionMode(const bool);
//! Set pixel culling state
static void setPixelCullingUsage(const bool);
//! Set the cache usage
static void setCacheUsage(const bool);
//! Set the current cache manager
static void setCurrentCacheManager(const GLC_CacheManager&);
//! Set space partionning usage
static void setSpacePartionningUsage(const bool);
//! Set the default octree depth
static void setDefaultOctreeDepth(int);
//! Set the frustum culling usage
static void setFrustumCullingUsage(bool);
//@}
//////////////////////////////////////////////////////////////////////
//Private attributes
//////////////////////////////////////////////////////////////////////
private:
//! VBO supported flag
static bool m_VboSupported;
//! VBO used
static bool m_UseVbo;
//! GLSL supported flag
static bool m_GlslSupported;
//! Point Sprite supported flag
static bool m_PointSpriteSupported;
//! Use shader
static bool m_UseShader;
//! Use selectionShader flag
static bool m_UseSelectionShader;
//! In selection mode
static bool m_IsInSelectionMode;
//! Pixel culling activation
static bool m_IsPixelCullingActivated;
//! The Opengl card version
static QString m_Version;
//! The Opengl card vendor
static QString m_Vendor;
//! The Opengl card renderer
static QString m_Renderer;
//! Cache usage
static bool m_UseCache;
//! The current cache manager
static GLC_CacheManager m_CacheManager;
//! Space partitionning activation
static bool m_IsSpacePartitionningActivated;
//! Frustum culling activated
static bool m_IsFrustumCullingActivated;
//! Frame buffer supported
static bool m_IsFrameBufferSupported;
//! State valid flag
static bool m_IsValid;
};
#endif /*GLC_STATE_H_*/