@@ -29,6 +29,39 @@ THE SOFTWARE.
29
29
#include " OgreDefaultHardwareBufferManager.h"
30
30
31
31
namespace Ogre {
32
+ DefaultBuffer::DefaultBuffer (size_t sizeInBytes)
33
+ : Buffer(sizeInBytes, HBU_CPU_ONLY)
34
+ {
35
+ // Allocate aligned memory for better SIMD processing friendly.
36
+ mData = static_cast <unsigned char *>(AlignedMemory::allocate (mSizeInBytes ));
37
+ }
38
+ // -----------------------------------------------------------------------
39
+ DefaultBuffer::~DefaultBuffer () { AlignedMemory::deallocate (mData ); }
40
+ // -----------------------------------------------------------------------
41
+ void * DefaultBuffer::lockImpl (size_t offset, size_t length, LockOptions options) { return mData + offset; }
42
+ // -----------------------------------------------------------------------
43
+ void DefaultBuffer::unlockImpl () {}
44
+ // -----------------------------------------------------------------------
45
+ void * DefaultBuffer::lock (size_t offset, size_t length, LockOptions options)
46
+ {
47
+ mIsLocked = true ;
48
+ return mData + offset;
49
+ }
50
+ void DefaultBuffer::unlock (void ) { mIsLocked = false ; }
51
+ // -----------------------------------------------------------------------
52
+ void DefaultBuffer::readData (size_t offset, size_t length, void * pDest)
53
+ {
54
+ assert ((offset + length) <= mSizeInBytes );
55
+ memcpy (pDest, mData + offset, length);
56
+ }
57
+ // -----------------------------------------------------------------------
58
+ void DefaultBuffer::writeData (size_t offset, size_t length, const void * pSource, bool discardWholeBuffer)
59
+ {
60
+ assert ((offset + length) <= mSizeInBytes );
61
+ // ignore discard, memory is not guaranteed to be zeroised
62
+ memcpy (mData + offset, pSource, length);
63
+ }
64
+
32
65
33
66
DefaultHardwareVertexBuffer::DefaultHardwareVertexBuffer (size_t vertexSize, size_t numVertices,
34
67
HardwareBuffer::Usage usage)
0 commit comments