flightgear/utils/fgpanel/FGTexturedLayer.hxx
2022-10-20 20:29:11 +08:00

66 lines
2.1 KiB
C++

//
// Written by David Megginson, started January 2000.
// Adopted for standalone fgpanel application by Torsten Dreyer, August 2009
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program 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
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
#ifndef FGTEXTUREDLAYER_HXX
#define FGTEXTUREDLAYER_HXX
#include "FGCroppedTexture.hxx"
#include "FGInstrumentLayer.hxx"
/**
* A textured layer of an instrument.
*
* This is a layer holding a single texture. Normally, the texture's
* backgound should be transparent so that lower layers and the panel
* background can show through.
*/
class FGTexturedLayer : public FGInstrumentLayer {
public:
static void Init (const GLuint Program_Object,
const GLint Position_Loc,
const GLint Tex_Coord_Loc,
const GLint MVP_Loc,
const GLint Sampler_Loc);
FGTexturedLayer (const int w = -1, const int h = -1);
FGTexturedLayer (const FGCroppedTexture_ptr texture, const int w = -1, const int h = -1);
virtual ~FGTexturedLayer ();
virtual void draw ();
virtual void setTexture (const FGCroppedTexture_ptr texture);
FGCroppedTexture_ptr getTexture () const;
void setEmissive (const bool emissive);
private:
void getDisplayList ();
FGCroppedTexture_ptr m_texture;
bool m_emissive;
static GLuint Textured_Layer_Program_Object;
static GLint Textured_Layer_Position_Loc;
static GLint Textured_Layer_Tex_Coord_Loc;
static GLint Textured_Layer_MVP_Loc;
static GLint Textured_Layer_Sampler_Loc;
};
#endif