diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.World/FloatBuffer.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.World/FloatBuffer.cpp')
| -rw-r--r-- | Minecraft.World/FloatBuffer.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Minecraft.World/FloatBuffer.cpp b/Minecraft.World/FloatBuffer.cpp new file mode 100644 index 00000000..6fe0fd02 --- /dev/null +++ b/Minecraft.World/FloatBuffer.cpp @@ -0,0 +1,66 @@ +#include "stdafx.h" +#include "FloatBuffer.h" + +//Allocates a new float buffer. +//The new buffer's position will be zero, its limit will be its capacity, and its mark will be undefined. +//It will have a backing array, and its array offset will be zero. +// +//Parameters: +//capacity - The new buffer's capacity, in floats +FloatBuffer::FloatBuffer(unsigned int capacity) : Buffer( capacity ) +{ + buffer = new float[capacity]; + memset( buffer,0,sizeof(float)*capacity); +} + +FloatBuffer::FloatBuffer( unsigned int capacity, float *backingArray ) : Buffer( capacity ) +{ + hasBackingArray = true; + buffer = backingArray; +} + +FloatBuffer::~FloatBuffer() +{ + if( !hasBackingArray ) + delete[] buffer; +} + +//Flips this buffer. The limit is set to the current position and then the position is set to zero. +//If the mark is defined then it is discarded. +// +//Returns: +//This buffer +FloatBuffer *FloatBuffer::flip() +{ + m_limit = m_position; + m_position = 0; + return this; +} + +//Relative put method (optional operation). +//Writes the given float into this buffer at the current position, and then increments the position. +// +//Parameters: +//f - The float to be written +//Returns: +//This buffer +FloatBuffer *FloatBuffer::put(float f) +{ + buffer[m_position++] = f; + return this; +} + +//Relative bulk get method. +//This method transfers floats from this buffer into the given destination array. +//An invocation of this method of the form src.get(a) behaves in exactly the same way as the invocation +// +// src.get(a, 0, a.length) +//Returns: +//This buffer +void FloatBuffer::get(floatArray *dst) +{ + assert( dst->length <= m_capacity ); + + for (unsigned int i = 0; i < dst->length; i++) + dst->data[i] = buffer[i]; +}
\ No newline at end of file |
