Heavy buffer update, window update, object tracking

This commit is contained in:
NaifBanana
2026-10-11 13:32:47 -05:00
parent e76ef32c45
commit 06f261b793
16 changed files with 553 additions and 843 deletions
+19 -19
View File
@@ -12,10 +12,21 @@ const std::string BufferError::type = "nb::BufferError";
const ErrorCodeMap BufferError::ErrorMessages = {
{ BufferErrorCodes::UNDEFINED, "Error" },
{ BufferErrorCodes::DATA_OVERFLOW, "Attempting buffer overflow" },
{BufferErrorCodes::DATA_ERROR, "Invalid memory operation"}
{ BufferErrorCodes::DATA_ERROR, "Invalid memory operation" },
{ BufferErrorCodes::BAD_DATA_TYPE, "Entered data type not allowed for buffer type"}
};
// class Buffer
Buffer::Buffer(GLenum target_) : OpenGLObject(), Target(target_) {
declare();
}
Buffer::Buffer(GLenum target_, const ByteVector& data_, GLenum usage_) : Buffer(target_) {
bind();
data(data_, usage_);
}
Buffer::Buffer(Buffer&& rval) : Target(rval.Target) {
*this = std::move(rval);
}
@@ -89,17 +100,6 @@ GLuint UniformBuffer::bufferIndex(GLuint idx) {
}
// class ElementBuffer
ElementBuffer::ElementBuffer() : Buffer(GL_ELEMENT_ARRAY_BUFFER) {}
ByteVector ElementBuffer::data() const {
return data();
}
size_t ElementBuffer::size() const { return _size / _typeSize; }
size_t ElementBuffer::typeSize() const { return _typeSize; }
GLenum ElementBuffer::glslType() const { return _glslType; }
template void ElementBuffer::data<uint8_t>(const std::vector<uint8_t>& data, GLenum usage);
template void ElementBuffer::data<uint16_t>(const std::vector<uint16_t>& data, GLenum usage);
@@ -108,11 +108,11 @@ template void ElementBuffer::data<uint8_t>(const uint8_t* const data, size_t siz
template void ElementBuffer::data<uint16_t>(const uint16_t* const data, size_t size, GLenum usage);
template void ElementBuffer::data<uint32_t>(const uint32_t* const data, size_t size, GLenum usage);
template void ElementBuffer::subdata<uint8_t>(const uint8_t* const data, size_t size, size_t offset=0);
template void ElementBuffer::subdata<uint16_t>(const uint16_t* const data, size_t size, size_t offset=0);
template void ElementBuffer::subdata<uint32_t>(const uint32_t* const data, size_t size, size_t offset=0);
template void ElementBuffer::subdata<uint8_t>(const std::vector<uint8_t>& data, size_t offset=0);
template void ElementBuffer::subdata<uint16_t>(const std::vector<uint16_t>& data, size_t offset=0);
template void ElementBuffer::subdata<uint32_t>(const std::vector<uint32_t>& data, size_t offset=0);
template void ElementBuffer::subdata<uint8_t>(const uint8_t* const data, size_t size, GLintptr offset=0);
template void ElementBuffer::subdata<uint16_t>(const uint16_t* const data, size_t size, GLintptr offset=0);
template void ElementBuffer::subdata<uint32_t>(const uint32_t* const data, size_t size, GLintptr offset=0);
template void ElementBuffer::subdata<uint8_t>(const std::vector<uint8_t>& data, GLintptr offset=0);
template void ElementBuffer::subdata<uint16_t>(const std::vector<uint16_t>& data, GLintptr offset=0);
template void ElementBuffer::subdata<uint32_t>(const std::vector<uint32_t>& data, GLintptr offset=0);
}