File: UniformBuffer.cpp

package info (click to toggle)
freespace2 24.2.0%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 43,716 kB
  • sloc: cpp: 595,001; ansic: 21,741; python: 1,174; sh: 457; makefile: 248; xml: 181
file content (24 lines) | stat: -rw-r--r-- 1,293 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "UniformBuffer.h"
#include "UniformBufferManager.h"

namespace graphics {
namespace util {

UniformBuffer::UniformBuffer() = default;
UniformBuffer::UniformBuffer(UniformBufferManager* parent, size_t parent_offset, void* data_buffer, size_t buffer_size,
                             size_t element_size, size_t header_size, size_t element_alignment)
    : _parent(parent), _parent_offset(parent_offset),
      _aligner(reinterpret_cast<uint8_t*>(data_buffer), buffer_size, element_size, header_size, element_alignment)
{
	// Cache the buffer handle here since the active handle may change between now and when bind buffer range is called
	// if the buffer needs to be resized
	_buffer_handle = _parent->getActiveBufferHandle();
}
UniformBuffer::~UniformBuffer() = default;
void UniformBuffer::submitData() { _parent->submitData(_aligner.getData(), _aligner.getSize(), _parent_offset); }
gr_buffer_handle UniformBuffer::bufferHandle() { return _buffer_handle; }
size_t UniformBuffer::getBufferOffset(size_t localOffset) { return _parent_offset + localOffset; }
size_t UniformBuffer::getAlignerElementOffset(size_t index) { return getBufferOffset(_aligner.getOffset(index)); }
size_t UniformBuffer::getCurrentAlignerOffset() { return getBufferOffset(_aligner.getCurrentOffset()); }
}
}