Open Inventor Reference
SoGLCacheList.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 SoGLCacheList class, which can be used
48 | is used by nodes like Separator to maintain a list of render
49 | caches that might be used. It also implements an auto caching
50 | scheme that tries to be smart about only building caches when
51 | things are not changing.
52 |
53 | Typical use:
54 | In a node's GLRender method:
55 | if (cacheList->call(state)) return;
56 | cacheList->open(state, TRUE);
57 | ... do normal children stuff...
58 | cacheList->close();
59 |
60 | In a node's notify method:
61 | cacheList->invalidateAll();
62 |
63 | Author(s) : Gavin Bell
64 |
65 ______________ S I L I C O N G R A P H I C S I N C . ____________
66 _______________________________________________________________________
67 */
68
69
70#ifndef _SO_GL_CACHE_LIST
71#define _SO_GL_CACHE_LIST
72
73#include <Inventor/SbBasic.h>
74
75
76struct SoGLCacheListEntry;
78class SoState;
79class SoElement;
80
82
83 public:
85 SoGLCacheList(int numCaches = 2);
86
89
95
101 void open(SoGLRenderAction *, bool autoCache = TRUE);
102
106
110
111 private:
112 SoGLCacheListEntry *getLRU();
113 void setMRU(SoGLCacheListEntry *e);
114 void setLRU(SoGLCacheListEntry *e);
115 void blow(SoState *, SoGLCacheListEntry *);
116
120 SoGLCacheListEntry *MRU;
121 int maxCaches, numCaches;
122 SoGLCacheListEntry *openCache;
123 int threshold;
127 int mightBeUsed;
132 SoElement *invalidElement;
138 bool saveInvalid;
145 int saveACacheBits;
149
150};
151
152
153#endif /* _SO_GL_CACHE_LIST */
#define SoEXTENDER
Provide inline template functions for abs, swap, min, max, and clamp.
Definition SbBasic.h:154
#define TRUE
Definition SbBasic.h:76
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
Definition SbSystem.h:77
This is the abstract base class for all state elements.
Definition SoElement.h:96
bool call(SoGLRenderAction *)
Given an SoGLRenderAction, try to use one of the caches we've built.
void close(SoGLRenderAction *)
Close an open cache, if any.
void invalidateAll()
Mark all caches as invalid.
void open(SoGLRenderAction *, bool autoCache=TRUE)
Open a new cache, maybe.
~SoGLCacheList()
Destructor.
SoGLCacheList(int numCaches=2)
Constructor. Takes the maximum number of caches to build.
Renders a scene graph using OpenGL.
An SoState collects and holds state while traversing a scene graph.
Definition SoState.h:82