Developer Documentation

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
EnvMapNode.cc
1 /*===========================================================================*\
2 * *
3 * OpenFlipper *
4 * Copyright (c) 2001-2015, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openflipper.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenFlipper. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 \*===========================================================================*/
41
42 /*===========================================================================*\
43 * *
44 * $Revision$ *
45 * $Author$ *
46 * $Date$ *
47 * *
48 \*===========================================================================*/
49
50
51
52
53 //=============================================================================
54 //
55 // CLASS EnvMapNode - IMPLEMENTATION
56 //
57 //=============================================================================
58
59
60 //== INCLUDES =================================================================
61
62
63 #include "EnvMapNode.hh"
64
65
66 //== NAMESPACES ===============================================================
67
68
69 namespace ACG {
70 namespace SceneGraph {
71
72
73 //== IMPLEMENTATION ==========================================================
74
75
76 EnvMapNode::EnvMapNode( BaseNode* _parent,
77 const std::string& _name ,
78 bool _texture_repeat,
79 GLint _texture_filter)
80 : TextureNode(_parent, _name,_texture_repeat,_texture_filter)
81 {}
82
83
84 //----------------------------------------------------------------------------
85
86
87 DrawModes::DrawMode EnvMapNode::availableDrawModes() const
88 {
89 return ACG::SceneGraph::DrawModes::SOLID_ENV_MAPPED;
90 }
91
92
93 //----------------------------------------------------------------------------
94
95
96 void EnvMapNode::enter(GLState& _state, const DrawModes::DrawMode& _drawmode)
97 {
98 if (_drawmode==DrawModes::SOLID_ENV_MAPPED)
99 {
100 TextureNode::enter(_state, _drawmode);
101 glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
102 glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
103 ACG::GLState::enable(GL_TEXTURE_GEN_S);
104 ACG::GLState::enable(GL_TEXTURE_GEN_T);
105 ACG::GLState::enable(GL_TEXTURE_2D);
106 } else
107 TextureNode::enter( _state, _drawmode);
108 }
109
110
111 //----------------------------------------------------------------------------
112
113
114 void EnvMapNode::leave(GLState& _state, const DrawModes::DrawMode& _drawmode)
115 {
116 if (_drawmode==DrawModes::SOLID_ENV_MAPPED)
117 {
118 TextureNode::leave(_state, _drawmode);
119 ACG::GLState::disable(GL_TEXTURE_GEN_S);
120 ACG::GLState::disable(GL_TEXTURE_GEN_T);
121 ACG::GLState::disable(GL_TEXTURE_2D);
122 } else
123 TextureNode::leave( _state, _drawmode);
124 }
125
126 void EnvMapNode::enterPick(GLState& /*_state*/ , PickTarget /*_target*/, const DrawModes::DrawMode& /*_drawMode*/ ) {
127
128 }
129
130 void EnvMapNode::leavePick(GLState& /*_state*/, PickTarget /*_target*/, const DrawModes::DrawMode& /*_drawMode*/ ) {
131 }
132
133
134 //=============================================================================
135 } // namespace SceneGraph
136 } // namespace ACG
137 //=============================================================================
ACG
Namespace providing different geometric functions concerning angles.
Definition: DBSCANT.cc:51
ACG::SceneGraph::ACG::GLState::enable
static void enable(GLenum _cap)
replaces glEnable, but supports locking
ACG::SceneGraph::BaseNode
Definition: BaseNode.hh:135
ACG::SceneGraph::ACG::SceneGraph::DrawModes::SOLID_ENV_MAPPED
ACGDLLEXPORT DrawMode SOLID_ENV_MAPPED
draw environment mapped
Definition: DrawModes.cc:93
ACG::SceneGraph::PickTarget
PickTarget
What target to use for picking.
Definition: BaseNode.hh:99
ACG::SceneGraph::TextureNode::enter
void enter(GLState &_state, const DrawModes::DrawMode &_drawmode)
set default texture and states for the nodes children
Definition: TextureNode.cc:491
ACG::SceneGraph::ACG::GLState::disable
static void disable(GLenum _cap)
replaces glDisable, but supports locking
ACG::SceneGraph::EnvMapNode::availableDrawModes
DrawModes::DrawMode availableDrawModes() const
add env mapping
Definition: EnvMapNode.cc:87
ACG::GLState
Definition: GLState.hh:220
ACG::SceneGraph::DrawModes::DrawMode
Specifies a DrawMode.
Definition: DrawModes.hh:294
ACG::SceneGraph::EnvMapNode::enter
void enter(GLState &_state, const DrawModes::DrawMode &_drawmode)
set texture
Definition: EnvMapNode.cc:96
ACG::SceneGraph::DrawModes::SOLID_ENV_MAPPED
DrawMode SOLID_ENV_MAPPED
draw environment mapped
Definition: DrawModes.cc:93
ACG::SceneGraph::EnvMapNode::enterPick
void enterPick(GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
Do nothing in picking.
Definition: EnvMapNode.cc:126
ACG::SceneGraph::EnvMapNode::leave
void leave(GLState &_state, const DrawModes::DrawMode &_drawmode)
restores original texture (or no-texture)
Definition: EnvMapNode.cc:114
ACG::SceneGraph::TextureNode
Definition: TextureNode.hh:93
ACG::SceneGraph::EnvMapNode::EnvMapNode
EnvMapNode(BaseNode *_parent=0, const std::string &_name="<EnvMapNode>", bool _texture_repeat=true, GLint _texture_filter=GL_LINEAR)
Default constructor. Applies all properties.
Definition: EnvMapNode.cc:76
ACG::SceneGraph::EnvMapNode::leavePick
void leavePick(GLState &_state, PickTarget _target, const DrawModes::DrawMode &_drawMode)
Do nothing in picking.
Definition: EnvMapNode.cc:130
ACG::SceneGraph::TextureNode::leave
void leave(GLState &_state, const DrawModes::DrawMode &_drawmode)
Unbind Texture.
Definition: TextureNode.cc:531