EnvMapNode.cc 5.46 KB
Newer Older
Jan Möbius's avatar
Jan Möbius committed
1 2 3
/*===========================================================================*\
 *                                                                           *
 *                              OpenFlipper                                  *
Jan Möbius's avatar
Jan Möbius committed
4
 *      Copyright (C) 2001-2011 by Computer Graphics Group, RWTH Aachen      *
Jan Möbius's avatar
Jan Möbius committed
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
 *                           www.openflipper.org                             *
 *                                                                           *
 *---------------------------------------------------------------------------*
 *  This file is part of OpenFlipper.                                        *
 *                                                                           *
 *  OpenFlipper 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 with the              *
 *  following exceptions:                                                    *
 *                                                                           *
 *  If other files instantiate templates or use macros                       *
 *  or inline functions from this file, or you compile this file and         *
 *  link it with other files to produce an executable, this file does        *
 *  not by itself cause the resulting executable to be covered by the        *
 *  GNU Lesser General Public License. This exception does not however       *
 *  invalidate any other reasons why the executable file might be            *
 *  covered by the GNU Lesser General Public License.                        *
 *                                                                           *
 *  OpenFlipper 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 LesserGeneral Public          *
 *  License along with OpenFlipper. If not,                                  *
 *  see <http://www.gnu.org/licenses/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
Jan Möbius's avatar
Jan Möbius committed
37
 *   $Revision$                                                       *
Jan Möbius's avatar
Jan Möbius committed
38 39 40 41
 *   $Author$                                                      *
 *   $Date$                   *
 *                                                                           *
\*===========================================================================*/
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65




//=============================================================================
//
//  CLASS EnvMapNode - IMPLEMENTATION
//
//=============================================================================


//== INCLUDES =================================================================


#include "EnvMapNode.hh"
#include "DrawModes.hh"


//== NAMESPACES ===============================================================


namespace ACG {
namespace SceneGraph {

66 67

//== IMPLEMENTATION ==========================================================
68 69


70
EnvMapNode::EnvMapNode( BaseNode*            _parent,
71 72 73 74
                        const std::string&   _name ,
                        bool                _texture_repeat,
                        GLint               _texture_filter)
  : TextureNode(_parent, _name,_texture_repeat,_texture_filter)
75 76
{}

77

78 79 80
//----------------------------------------------------------------------------


81
DrawModes::DrawMode EnvMapNode::availableDrawModes() const
82 83 84 85 86 87 88
{
  return ACG::SceneGraph::DrawModes::SOLID_ENV_MAPPED;
}


//----------------------------------------------------------------------------

89

90
void EnvMapNode::enter(GLState& _state, const DrawModes::DrawMode& _drawmode)
91 92 93 94 95 96
{
  if (_drawmode==DrawModes::SOLID_ENV_MAPPED)
  {
    TextureNode::enter(_state, _drawmode);
    glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
    glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
97 98 99
    ACG::GLState::enable(GL_TEXTURE_GEN_S);
    ACG::GLState::enable(GL_TEXTURE_GEN_T);
    ACG::GLState::enable(GL_TEXTURE_2D);
100 101
  } else
    TextureNode::enter( _state, _drawmode);
102 103 104 105 106 107
}


//----------------------------------------------------------------------------


108
void EnvMapNode::leave(GLState& _state, const DrawModes::DrawMode& _drawmode)
109 110 111 112
{
  if (_drawmode==DrawModes::SOLID_ENV_MAPPED)
  {
    TextureNode::leave(_state, _drawmode);
113 114 115
    ACG::GLState::disable(GL_TEXTURE_GEN_S);
    ACG::GLState::disable(GL_TEXTURE_GEN_T);
    ACG::GLState::disable(GL_TEXTURE_2D);
116 117
  } else
    TextureNode::leave( _state, _drawmode);
118 119
}

120
void EnvMapNode::enterPick(GLState& /*_state*/ , PickTarget /*_target*/, const DrawModes::DrawMode& /*_drawMode*/ ) {
121 122 123

}

124
void EnvMapNode::leavePick(GLState& /*_state*/, PickTarget /*_target*/, const DrawModes::DrawMode& /*_drawMode*/ ) {
125 126
}

127 128 129 130 131

//=============================================================================
} // namespace SceneGraph
} // namespace ACG
//=============================================================================