00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SO_GPU_BUFFER_OBJECT_H
00022 #define SO_GPU_BUFFER_OBJECT_H
00023
00024 #include <Inventor/devices/SoBufferObject.h>
00025 #include <Inventor/devices/SoCpuBufferObject.h>
00026
00054 class SoGpuBufferObject : public SoBufferObject
00055 {
00056 SO_TYPED_CLASS_HEADER();
00057
00058 public:
00059
00064 SoGpuBufferObject();
00065
00080 virtual bool setSize( size_t size );
00081
00087 virtual void* map( AccessMode accessMode );
00088
00094 virtual void unmap();
00095
00117 virtual void map( SoBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00118
00128 virtual void unmap( SoBufferObject* bufferObject );
00129
00141 virtual void memcpy( SoBufferObject* sourceBufferObject, size_t destOffset = 0, size_t sourceOffset = 0, size_t copySize = SO_BUFFER_SIZE_ALL );
00142
00146 virtual void memset( void* value, size_t valueSize = 1, size_t offset = 0, size_t count = SO_BUFFER_SIZE_ALL );
00147
00153 virtual SoBufferObject* createInstance() const;
00154
00158 virtual void clearInstance();
00159
00164 virtual void map( SoCpuBufferObject* targetBufferObject, AccessMode accessMode, size_t startPosition = 0, size_t mappingSize = SO_BUFFER_SIZE_ALL );
00165
00167 virtual void unmap( SoCpuBufferObject* bufferObject );
00168
00170 void memcpy( SoCpuBufferObject* sourceBufferObject, size_t destOffset = 0, size_t sourceOffset = 0, size_t copySize = SO_BUFFER_SIZE_ALL );
00171
00172 private:
00173
00177 void copyToCpuBuffer( SoCpuBufferObject* targetBufferObject, size_t destOffset = 0, size_t sourceOffset = 0, size_t copySize = SO_BUFFER_SIZE_ALL );
00178
00179 private:
00184 virtual ~SoGpuBufferObject();
00185
00186 private:
00187
00188 SoRef<SoCpuBufferObject> m_buffer;
00189 };
00190
00191 #endif // SO_GPU_BUFFER_OBJECT_H
00192