00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined SOCPUBUFFERUNIFORM_H
00024 #define SOCPUBUFFERUNIFORM_H
00025
00026
00027 #include <Inventor/SbDataType.h>
00028 #include <Inventor/devices/SoCpuBufferObject.h>
00029 #include <Inventor/devices/SoGLBufferObject.h>
00030
00031
00032 #include <LDM/tiles/SoBufferPropertiesInterface.h>
00033 #include <LDM/tiles/SoLDMBufferObjectInterface.h>
00034
00050 class SoCpuBufferUniform: public SoCpuBufferObject, public SoBufferPropertiesInterface, public SoLDMBufferObjectInterface
00051 {
00052 SO_TYPED_CLASS_HEADER();
00053
00054
00055 public:
00056
00060 SoCpuBufferUniform();
00061
00068 SoCpuBufferUniform(const double value, SbDataType valueType );
00069
00081 virtual void map( SoBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00082
00088 virtual void map( SoCpuBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00089
00095 virtual void map( SoGLBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00096
00105 virtual void unmap( SoCpuBufferObject* bufferObject );
00106
00115 virtual void unmap( SoGLBufferObject* bufferObject );
00116
00125 virtual void unmap( SoBufferObject* bufferObject );
00126
00133 virtual void* map( AccessMode accessMode, size_t offset = 0, size_t count = SO_BUFFER_SIZE_ALL );
00134
00140 virtual void unmap();
00141
00152 virtual void memset( void* data, size_t dataSize = 1, size_t offset = 0, size_t count = SO_BUFFER_SIZE_ALL );
00153
00157 virtual void memcpy( SoBufferObject* sourceBufferObject, size_t destOffset, size_t sourceOffset, size_t copySize );
00158
00165 virtual bool setSize( size_t size );
00166
00175 virtual bool getMinMax ( double& min, double& max);
00176
00180 virtual double getValue() const;
00181
00185 virtual SbDataType getType() const;
00186
00190 void setValue(const double &value, const SbDataType &dataType);
00191
00195 virtual size_t getRealSize() const;
00196
00200 virtual void setRealSize(const size_t &realSize);
00201
00202 private:
00206 virtual ~SoCpuBufferUniform();
00207
00208 private:
00209
00211 virtual SoBufferObject* clone() const;
00212
00213 SoINTERNAL private:
00214
00215 virtual SoCpuBufferObject* createCachedBuffer();
00216
00217 virtual void prefetchBuffer();
00218
00219 private:
00220 double m_value;
00221 SbDataType m_type;
00222
00223 };
00224
00225 #endif //SOCPUBUFFERUNIFORM_H
00226
00227