openscenegraph
GLObjectsVisitor
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSGUTIL_GLOBJECTSVISITOR
15#define OSGUTIL_GLOBJECTSVISITOR 1
16
17#include <OpenThreads/Mutex>
18#include <osg/NodeVisitor>
19#include <osg/Geode>
20#include <osg/State>
21
22#include <osgUtil/Export>
23
24namespace osgUtil {
25
31{
32 public:
33
36 {
37 SWITCH_ON_DISPLAY_LISTS = 0x1,
38 SWITCH_OFF_DISPLAY_LISTS = 0x2,
39 COMPILE_DISPLAY_LISTS = 0x4,
40 COMPILE_STATE_ATTRIBUTES = 0x8,
41 RELEASE_DISPLAY_LISTS = 0x10,
42 RELEASE_STATE_ATTRIBUTES = 0x20,
43 SWITCH_ON_VERTEX_BUFFER_OBJECTS = 0x40,
44 SWITCH_OFF_VERTEX_BUFFER_OBJECTS = 0x80,
45 CHECK_BLACK_LISTED_MODES = 0x100
46 };
47
48 typedef unsigned int Mode;
49
55 GLObjectsVisitor(Mode mode=COMPILE_DISPLAY_LISTS|COMPILE_STATE_ATTRIBUTES|CHECK_BLACK_LISTED_MODES);
56
58
59 virtual void reset()
60 {
61 _drawablesAppliedSet.clear();
62 _stateSetAppliedSet.clear();
63 }
64
65
67 void setMode(Mode mode) { _mode = mode; }
68
70 Mode getMode() const { return _mode; }
71
72
74 void setState(osg::State* state)
75 {
76 _renderInfo.setState(state);
77 }
78
80 {
81 return _renderInfo.getState();
82 }
83
85 {
86 _renderInfo = renderInfo;
87 }
88
90 {
91 return _renderInfo;
92 }
93
95 void setCheckForGLErrors(osg::State::CheckForGLErrors check) { _checkGLErrors = check; }
96
98 osg::State::CheckForGLErrors getCheckForGLErrors() const { return _checkGLErrors; }
99
101 virtual void apply(osg::Node& node);
102
103 void apply(osg::Drawable& drawable);
104 void apply(osg::StateSet& stateset);
105
107 void compile(osg::Node& node);
108
109 protected:
110
111 typedef std::set<osg::Drawable*> DrawableAppliedSet;
112 typedef std::set<osg::StateSet*> StatesSetAppliedSet;
113
117
121
122};
123
125{
126 public:
127
128 GLObjectsOperation(GLObjectsVisitor::Mode mode = GLObjectsVisitor::COMPILE_DISPLAY_LISTS|GLObjectsVisitor::COMPILE_STATE_ATTRIBUTES|GLObjectsVisitor::CHECK_BLACK_LISTED_MODES);
129
130 GLObjectsOperation(osg::Node* subgraph, GLObjectsVisitor::Mode mode = GLObjectsVisitor::COMPILE_DISPLAY_LISTS|GLObjectsVisitor::COMPILE_STATE_ATTRIBUTES|GLObjectsVisitor::CHECK_BLACK_LISTED_MODES);
131
132 virtual void operator () (osg::GraphicsContext* context);
133
134 protected:
135
138};
139
140}
141
142#endif
143
Definition GLObjectsVisitor:125
GLObjectsOperation(GLObjectsVisitor::Mode mode=GLObjectsVisitor::COMPILE_DISPLAY_LISTS|GLObjectsVisitor::COMPILE_STATE_ATTRIBUTES|GLObjectsVisitor::CHECK_BLACK_LISTED_MODES)
GLObjectsOperation(osg::Node *subgraph, GLObjectsVisitor::Mode mode=GLObjectsVisitor::COMPILE_DISPLAY_LISTS|GLObjectsVisitor::COMPILE_STATE_ATTRIBUTES|GLObjectsVisitor::CHECK_BLACK_LISTED_MODES)
GLObjectsVisitor::Mode _mode
Definition GLObjectsVisitor:137
osg::ref_ptr< osg::Node > _subgraph
Definition GLObjectsVisitor:136
Definition GLObjectsVisitor:31
void setState(osg::State *state)
Definition GLObjectsVisitor:74
Mode getMode() const
Definition GLObjectsVisitor:70
osg::RenderInfo _renderInfo
Definition GLObjectsVisitor:115
osg::RenderInfo & getRenderInfo()
Definition GLObjectsVisitor:89
void setCheckForGLErrors(osg::State::CheckForGLErrors check)
Definition GLObjectsVisitor:95
void apply(osg::StateSet &stateset)
osg::ref_ptr< osg::Program > _lastCompiledProgram
Definition GLObjectsVisitor:120
ModeValues
Definition GLObjectsVisitor:36
osg::State::CheckForGLErrors getCheckForGLErrors() const
Definition GLObjectsVisitor:98
StatesSetAppliedSet _stateSetAppliedSet
Definition GLObjectsVisitor:119
virtual void apply(osg::Node &node)
void compile(osg::Node &node)
void setMode(Mode mode)
Definition GLObjectsVisitor:67
osg::State * getState()
Definition GLObjectsVisitor:79
Mode _mode
Definition GLObjectsVisitor:114
void apply(osg::Drawable &drawable)
unsigned int Mode
Definition GLObjectsVisitor:48
std::set< osg::StateSet * > StatesSetAppliedSet
Definition GLObjectsVisitor:112
META_NodeVisitor(osgUtil, GLObjectsVisitor) virtual void reset()
Definition GLObjectsVisitor:57
void setRenderInfo(osg::RenderInfo &renderInfo)
Definition GLObjectsVisitor:84
DrawableAppliedSet _drawablesAppliedSet
Definition GLObjectsVisitor:118
osg::State::CheckForGLErrors _checkGLErrors
Definition GLObjectsVisitor:116
GLObjectsVisitor(Mode mode=COMPILE_DISPLAY_LISTS|COMPILE_STATE_ATTRIBUTES|CHECK_BLACK_LISTED_MODES)
std::set< osg::Drawable * > DrawableAppliedSet
Definition GLObjectsVisitor:111
Definition Drawable:89
Definition GraphicsContext:30
Definition NodeVisitor:82
Definition Node:72
Definition RenderInfo:28
Definition StateSet:46
Definition State:80
CheckForGLErrors
Definition State:905
Definition ref_ptr:32
Shader generator framework.
Definition NodeVisitor:25
#define OSGUTIL_EXPORT
Definition osgUtil/Export:40
Definition GraphicsThread:36