Open Inventor Reference
SoVertexShape.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * Further, this software is distributed without any warranty that it is
16  * free of the rightful claim of any third person regarding infringement
17  * or the like. Any license provided herein, whether implied or
18  * otherwise, applies only to this software file. Patent licenses, if
19  * any, provided herein do not apply to combinations of this program with
20  * other software, or any other product whatsoever.
21  *
22  * You should have received a copy of the GNU Lesser General Public
23  * License along with this library; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25  *
26  * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
27  * Mountain View, CA 94043, or:
28  *
29  * http://www.sgi.com
30  *
31  * For further information regarding this notice, see:
32  *
33  * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
34  *
35  */
36 
37 
38 /*
39  * Copyright (C) 1990,91 Silicon Graphics, Inc.
40  *
41  _______________________________________________________________________
42  ______________ S I L I C O N G R A P H I C S I N C . ____________
43  |
44  | $Revision: 1.1.1.1 $
45  |
46  | Description:
47  | This file defines the SoVertexShape node class.
48  |
49  | Author(s) : Paul S. Strauss
50  |
51  ______________ S I L I C O N G R A P H I C S I N C . ____________
52  _______________________________________________________________________
53  */
54 
55 #ifndef _SO_VERTEX_SHAPE_
56 #define _SO_VERTEX_SHAPE_
57 
58 #include <Inventor/nodes/SoShape.h>
61 
62 
63 class SoNormalBundle;
64 class SoNormalCache;
65 class SoState;
66 
67 
70 
134 
136 
138 
139  public:
141 
142  SoEXTENDER public:
147  virtual bool generateDefaultNormals(SoState *state,
148  SoNormalBundle *nb);
149 
150  SoINTERNAL public:
151  static void initClass();
152 
154  virtual void notify(SoNotList *list);
155 
156  protected:
159 
160  virtual ~SoVertexShape();
161 
165 
169  virtual bool shouldGLRender(SoGLRenderAction *action);
170 
174 
177  void setNormalCache(SoState *state,
178  int numNormals, const SbVec3f *normals);
179 
181  SoNormalCache *getNormalCache() const { return normalCache; }
182 
186 
188  void endVertexArrayRendering(SoGLRenderAction* action, bool vboWasUsed);
189 
190  private:
192  SoNormalCache *normalCache;
193 };
194 
195 #endif /* _SO_VERTEX_SHAPE_ */
#define SoEXTENDER
Provide inline template functions for abs, swap, min, max, and clamp.
Definition: SbBasic.h:154
#define SoINTERNAL
Definition: SbBasic.h:155
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition: SbSystem.h:81
#define SO_NODE_ABSTRACT_HEADER(className)
Macros to be called within the class definition header for a node subclass:
Definition: SoSubNode.h:150
3D vector class.
Definition: SbLinear.h:120
Renders a scene graph using OpenGL.
Bundle that allows shapes to deal with normals and normal bindings more easily.
Class SoNormalCache:
Definition: SoNormalCache.h:71
Holds a list of SoNotRec notification records.
Field containing a pointer to a node.
Definition: SoSFNode.h:92
Abstract base class for all shape nodes.
Definition: SoShape.h:101
An SoState collects and holds state while traversing a scene graph.
Definition: SoState.h:82
Vertex property node.
Abstract base class for all vertex-based shape nodes.
virtual bool generateDefaultNormals(SoState *state, SoNormalBundle *nb)
Subclasses may define this method to generate normals to use when the normal binding is DEFAULT and t...
SoSFNode vertexProperty
static void initClass()
SoVertexProperty * getVertexProperty()
Get the SoVertexProperty from the vertexProperty field, returning NULL if the contained node is not o...
SoVertexShape()
Constructor - makes this abstract.
bool beginVertexArrayRendering(SoGLRenderAction *action)
enables vertex array rendering client state and VBO rendering (if supported), returns true if VBOs ar...
SoVertexPropertyCache vpCache
vpCache stores information from one render to the next about what information needs to be grabbed fro...
virtual bool shouldGLRender(SoGLRenderAction *action)
Returns TRUE if the shape should be rendered.
void endVertexArrayRendering(SoGLRenderAction *action, bool vboWasUsed)
disables vertex array rendering and VBOs if vboWasUsed is passes as true (MeVis ONLY)
virtual void notify(SoNotList *list)
Redefines this to invalidate normal cache.
void setNormalCache(SoState *state, int numNormals, const SbVec3f *normals)
Sets up a cache to hold normals.
SoNormalCache * getNormalCache() const
Returns the current normal cache, or NULL if there is none.
virtual ~SoVertexShape()