00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _SO_GL_BUFFEROBJECT_CACHE_LIST_H_
00024 #define _SO_GL_BUFFEROBJECT_CACHE_LIST_H_
00025
00026 #include <Inventor/devices/SoBaseContextObject.h>
00027 #include <Inventor/caches/SoContextedObjectCache.h>
00028 #include <Inventor/devices/SoGLBufferObject.h>
00029 #include <Inventor/devices/SoGLContext.h>
00030 #include <Inventor/STL/vector>
00031
00032
00033 {
00034 public:
00035 SoGLBufferObjectCache(SoState *)
00036 : SoBaseContextObject(SoGLContext::getCurrent()->getSharedGroup())
00037 , bufferObject(0)
00038 {
00039 }
00040
00041
00042 SoGLBufferObjectCache(SoGLContext *)
00043 :SoBaseContextObject(SoGLContext::getCurrent()->getSharedGroup())
00044 , bufferObject(0)
00045 {
00046 }
00047
00048 void createBufferObject( SoGLBufferObject::Usage usage, size_t size )
00049 {
00050 if (!bufferObject)
00051 {
00052 bufferObject = new SoGLBufferObject( usage );
00053 bufferObject->ref();
00054 bufferObject->setSize( size );
00055 }
00056 }
00057
00058 virtual ~SoGLBufferObjectCache()
00059 {
00060 SO_UNREF_RESET(bufferObject);
00061 }
00062
00063 SoGLBufferObject* getBufferObject() { return bufferObject; }
00064
00065 private:
00066
00067 SoGLBufferObject* bufferObject;
00068 };
00069
00070 typedef SoContextedObjectCache<SoGLBufferObjectCache> SoGLBufferObjectCacheList;
00071
00072
00073 #endif // _SO_GL_BUFFEROBJECT_CACHE_LIST_H_
00074
00075