openscenegraph
SceneGraphBuilder
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_SCENEGRAPHBUILDER
15#define OSGUTIL_SCENEGRAPHBUILDER 1
16
17#include <osg/Geode>
18#include <osg/Geometry>
19#include <osg/MatrixTransform>
20#include <osg/GLU>
21
22#include <osgUtil/Export>
23
24namespace osgUtil {
25
29{
30 public:
31
33
34 //
35 // OpenGL 1.0 style building methods
36 //
37 void PushMatrix();
38 void PopMatrix();
40 void LoadMatrixd(const GLdouble* m);
41 void MultMatrixd(const GLdouble* m);
42 void Translated(GLdouble x, GLdouble y, GLdouble z);
43 void Scaled(GLdouble x, GLdouble y, GLdouble z);
44 void Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
45
46 void BlendFunc(GLenum srcFactor, GLenum dstFactor);
47 void CullFace(GLenum mode);
48 void DepthFunc(GLenum mode);
49 void FrontFace(GLenum mode);
50 void LineStipple(GLint factor, GLushort pattern);
51 void LineWidth(GLfloat lineWidth);
52 void PointSize(GLfloat pointSize);
53 void PolygonMode(GLenum face, GLenum mode);
54 void PolygonOffset(GLfloat factor, GLfloat units);
55 void PolygonStipple(const GLubyte* mask);
56 void ShadeModel(GLenum mode);
57
58 void Enable(GLenum mode);
59 void Disable(GLenum mode);
60
61 void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
62 void Color4fv(GLfloat* c) { Color4f(c[0], c[1], c[2], c[3]); }
63
64 void Vertex3f(GLfloat x, GLfloat y, GLfloat z);
65 void Vertex3fv(GLfloat* v) { Vertex3f(v[0], v[1], v[2]); }
66
67 void Normal3f(GLfloat x, GLfloat y, GLfloat z);
68 void Normal3fv(GLfloat* n) { Normal3f(n[0], n[1], n[2]); }
69
70 void TexCoord1f(GLfloat x);
71 void TexCoord1fv(GLfloat* tc) { TexCoord1f(tc[0]); }
72
73 void TexCoord2f(GLfloat x, GLfloat y);
74 void TexCoord2fv(GLfloat* tc) { TexCoord2f(tc[0],tc[1]); }
75
76 void TexCoord3f(GLfloat x, GLfloat y, GLfloat z);
77 void TexCoord3fv(GLfloat* tc) { TexCoord3f(tc[0], tc[1], tc[2]); }
78
79 void TexCoord4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
80 void TexCoord4fv(GLfloat* tc) { TexCoord4f(tc[0], tc[1], tc[2], tc[3]); }
81
82 void Begin(GLenum mode);
83 void End();
84
85 //
86 // glu style building methods
87 //
88 void QuadricDrawStyle(GLenum aDrawStyle);
89 void QuadricNormals(GLenum aNormals);
90 void QuadricOrientation(GLenum aOrientation);
91 void QuadricTexture(GLboolean aTexture);
92
93 void Cylinder(GLfloat base,
94 GLfloat top,
95 GLfloat height,
96 GLint slices,
97 GLint stacks);
98
99 void Disk(GLfloat inner,
100 GLfloat outer,
101 GLint slices,
102 GLint loops);
103
104 void PartialDisk(GLfloat inner,
105 GLfloat outer,
106 GLint slices,
107 GLint loops,
108 GLfloat start,
109 GLfloat sweep);
110
111 void Sphere(GLfloat radius,
112 GLint slices,
113 GLint stacks);
114
115
116 //
117 // methods for obtaining the built scene graph
118 //
121
122 protected:
123
124 typedef std::vector<osg::Matrixd> Matrices;
125
128 void addMode(GLenum mode, bool enabled);
129 void addTextureAttribute(unsigned int unit, osg::StateAttribute* attribute);
130 void addTextureMode(unsigned int unit, GLenum mode, bool enabled);
131 void addShape(osg::Shape* shape);
132 void addDrawable(osg::Drawable* drawable);
134
137
139
143
146
149
152
158
160 {
162 _drawStyle(GLU_FILL),
163 _normals(GLU_SMOOTH),
164 _orientation(GLU_OUTSIDE),
165 _texture(GLU_FALSE) {}
166
168 GLenum _normals;
170 GLboolean _texture;
171 };
172
174
175
180
181};
182
183
184}
185
186#endif
#define GLU_OUTSIDE
Definition GLU:105
#define GLU_SMOOTH
Definition GLU:100
#define GLU_FALSE
Definition GLU:87
#define GLU_FILL
Definition GLU:93
Definition SceneGraphBuilder:29
void QuadricDrawStyle(GLenum aDrawStyle)
void MultMatrixd(const GLdouble *m)
void Disk(GLfloat inner, GLfloat outer, GLint slices, GLint loops)
osg::Vec4f _color
Definition SceneGraphBuilder:148
void DepthFunc(GLenum mode)
void PolygonOffset(GLfloat factor, GLfloat units)
void QuadricNormals(GLenum aNormals)
osg::ref_ptr< osg::Geometry > _geometry
Definition SceneGraphBuilder:176
void Enable(GLenum mode)
osg::ref_ptr< osg::Vec3Array > _vertices
Definition SceneGraphBuilder:154
void TexCoord2f(GLfloat x, GLfloat y)
void Begin(GLenum mode)
osg::ref_ptr< osg::Vec4Array > _colors
Definition SceneGraphBuilder:156
void Vertex3f(GLfloat x, GLfloat y, GLfloat z)
void LoadMatrixd(const GLdouble *m)
void Normal3f(GLfloat x, GLfloat y, GLfloat z)
unsigned int _maxNumTexCoordComponents
Definition SceneGraphBuilder:150
bool _normalSet
Definition SceneGraphBuilder:144
void Vertex3fv(GLfloat *v)
Definition SceneGraphBuilder:65
void Scaled(GLdouble x, GLdouble y, GLdouble z)
void QuadricTexture(GLboolean aTexture)
osg::ref_ptr< osg::Vec3Array > _normals
Definition SceneGraphBuilder:155
void PolygonStipple(const GLubyte *mask)
std::vector< osg::Matrixd > Matrices
Definition SceneGraphBuilder:124
void TexCoord3f(GLfloat x, GLfloat y, GLfloat z)
void LineStipple(GLint factor, GLushort pattern)
Matrices _matrixStack
Definition SceneGraphBuilder:140
void Rotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
void Cylinder(GLfloat base, GLfloat top, GLfloat height, GLint slices, GLint stacks)
void TexCoord2fv(GLfloat *tc)
Definition SceneGraphBuilder:74
void Sphere(GLfloat radius, GLint slices, GLint stacks)
void TexCoord1fv(GLfloat *tc)
Definition SceneGraphBuilder:71
void TexCoord4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
void CullFace(GLenum mode)
osg::Vec3f _normal
Definition SceneGraphBuilder:145
void Color4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
void TexCoord1f(GLfloat x)
void FrontFace(GLenum mode)
void PointSize(GLfloat pointSize)
void Disable(GLenum mode)
void Normal3fv(GLfloat *n)
Definition SceneGraphBuilder:68
void TexCoord3fv(GLfloat *tc)
Definition SceneGraphBuilder:77
osg::Vec4f _texCoord
Definition SceneGraphBuilder:151
osg::ref_ptr< osg::Vec4Array > _texCoords
Definition SceneGraphBuilder:157
void addAttribute(osg::StateAttribute *attribute)
void addDrawable(osg::Drawable *drawable)
void ShadeModel(GLenum mode)
bool _colorSet
Definition SceneGraphBuilder:147
void Translated(GLdouble x, GLdouble y, GLdouble z)
void PartialDisk(GLfloat inner, GLfloat outer, GLint slices, GLint loops, GLfloat start, GLfloat sweep)
void addShape(osg::Shape *shape)
bool _statesetAssigned
Definition SceneGraphBuilder:142
void addTextureAttribute(unsigned int unit, osg::StateAttribute *attribute)
void TexCoord4fv(GLfloat *tc)
Definition SceneGraphBuilder:80
void QuadricOrientation(GLenum aOrientation)
void addTextureMode(unsigned int unit, GLenum mode, bool enabled)
void addMode(GLenum mode, bool enabled)
osg::ref_ptr< osg::Geode > _geode
Definition SceneGraphBuilder:177
osg::ref_ptr< osg::StateSet > _stateset
Definition SceneGraphBuilder:141
GLenum _primitiveMode
Definition SceneGraphBuilder:153
void LineWidth(GLfloat lineWidth)
void BlendFunc(GLenum srcFactor, GLenum dstFactor)
osg::ref_ptr< osg::Group > _group
Definition SceneGraphBuilder:179
osg::ref_ptr< osg::MatrixTransform > _transform
Definition SceneGraphBuilder:178
void Color4fv(GLfloat *c)
Definition SceneGraphBuilder:62
void PolygonMode(GLenum face, GLenum mode)
QuadricState _quadricState
Definition SceneGraphBuilder:173
Definition Drawable:89
Definition Node:72
Definition Shape:49
Definition StateAttribute:77
Definition Vec3f:29
Definition Vec4f:28
Definition ref_ptr:32
Shader generator framework.
Definition NodeVisitor:25
#define OSGUTIL_EXPORT
Definition osgUtil/Export:40
Definition SceneGraphBuilder:160
GLenum _drawStyle
Definition SceneGraphBuilder:167
GLenum _normals
Definition SceneGraphBuilder:168
GLboolean _texture
Definition SceneGraphBuilder:170
GLenum _orientation
Definition SceneGraphBuilder:169
QuadricState()
Definition SceneGraphBuilder:161