Files
Seele/src/Engine/Graphics/Buffer.cpp
T

94 lines
2.0 KiB
C++
Raw Normal View History

2023-10-26 18:37:29 +02:00
#include "Buffer.h"
using namespace Seele;
using namespace Seele::Gfx;
Buffer::Buffer(QueueFamilyMapping mapping, QueueType startQueue)
: QueueOwnedResource(mapping, startQueue)
{
}
Buffer::~Buffer()
{
}
2023-11-15 00:06:00 +01:00
VertexBuffer::VertexBuffer(QueueFamilyMapping mapping, uint32 numVertices, uint32 vertexSize, QueueType startQueueType)
: Buffer(mapping, startQueueType)
, numVertices(numVertices)
, vertexSize(vertexSize)
{
}
VertexBuffer::~VertexBuffer()
{
}
IndexBuffer::IndexBuffer(QueueFamilyMapping mapping, uint64 size, Gfx::SeIndexType indexType, QueueType startQueueType)
: Buffer(mapping, startQueueType)
, indexType(indexType)
{
switch (indexType)
{
case SE_INDEX_TYPE_UINT16:
numIndices = size / sizeof(uint16);
break;
case SE_INDEX_TYPE_UINT32:
numIndices = size / sizeof(uint32);
break;
default:
break;
}
}
IndexBuffer::~IndexBuffer()
{
}
2023-11-01 23:12:30 +01:00
UniformBuffer::UniformBuffer(QueueFamilyMapping mapping, const DataSource& sourceData)
: Buffer(mapping, sourceData.owner)
, contents(sourceData.size)
2023-10-26 18:37:29 +02:00
{
2023-11-01 23:12:30 +01:00
if (sourceData.data != nullptr)
2023-10-26 18:37:29 +02:00
{
2023-11-01 23:12:30 +01:00
std::memcpy(contents.data(), sourceData.data, contents.size());
2023-10-26 18:37:29 +02:00
}
}
UniformBuffer::~UniformBuffer()
{
}
2023-11-01 23:12:30 +01:00
bool UniformBuffer::updateContents(const DataSource& sourceData)
2023-10-26 18:37:29 +02:00
{
2023-11-01 23:12:30 +01:00
assert(contents.size() == sourceData.size);
if (std::memcmp(contents.data(), sourceData.data, contents.size()) == 0)
2023-10-26 18:37:29 +02:00
{
return false;
}
2023-11-01 23:12:30 +01:00
std::memcpy(contents.data(), sourceData.data, contents.size());
2023-10-26 18:37:29 +02:00
return true;
}
2023-11-15 00:06:00 +01:00
ShaderBuffer::ShaderBuffer(QueueFamilyMapping mapping, uint32 numElements, const DataSource& sourceData)
2023-11-01 23:12:30 +01:00
: Buffer(mapping, sourceData.owner)
, contents(sourceData.size)
2023-10-26 18:37:29 +02:00
, numElements(numElements)
{
2023-11-01 23:12:30 +01:00
if (sourceData.data != nullptr)
2023-10-26 18:37:29 +02:00
{
2023-11-01 23:12:30 +01:00
std::memcpy(contents.data(), sourceData.data, sourceData.size);
2023-10-26 18:37:29 +02:00
}
}
2023-11-15 00:06:00 +01:00
2023-10-26 18:37:29 +02:00
ShaderBuffer::~ShaderBuffer()
{
}
2023-11-01 23:12:30 +01:00
bool ShaderBuffer::updateContents(const DataSource& sourceData)
2023-10-26 18:37:29 +02:00
{
2023-11-01 23:12:30 +01:00
assert(contents.size() >= sourceData.size);
if (std::memcmp(contents.data(), sourceData.data, sourceData.size) == 0)
2023-10-26 18:37:29 +02:00
{
return false;
}
2023-11-01 23:12:30 +01:00
std::memcpy(contents.data(), sourceData.data, sourceData.size);
2023-10-26 18:37:29 +02:00
return true;
}