diff options
author | Daria Volvenkova <d.volvenkova@corp.mail.ru> | 2017-05-16 14:42:32 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-16 14:42:32 +0300 |
commit | d2f79bd2c7004af2d1459e8d5b7748763f241a54 (patch) | |
tree | 64300bccb750e59f7c3a05800eafcd5c3b3f89cb /drape/data_buffer_impl.hpp | |
parent | aa6703383e8d4c2ff8445e8b3c27728846cdab4b (diff) | |
parent | 086d6f9cf247cea07cff6bc33d5567dc7c64806b (diff) |
Merge pull request #6040 from rokuz/es3-supportbeta-810
Added OpenGL ES3 support
Diffstat (limited to 'drape/data_buffer_impl.hpp')
-rw-r--r-- | drape/data_buffer_impl.hpp | 103 |
1 files changed, 32 insertions, 71 deletions
diff --git a/drape/data_buffer_impl.hpp b/drape/data_buffer_impl.hpp index 562e9a0913..1d46204a55 100644 --- a/drape/data_buffer_impl.hpp +++ b/drape/data_buffer_impl.hpp @@ -1,65 +1,40 @@ #pragma once -#include "data_buffer.hpp" -#include "cpu_buffer.hpp" -#include "gpu_buffer.hpp" +#include "drape/cpu_buffer.hpp" +#include "drape/data_buffer.hpp" +#include "drape/gpu_buffer.hpp" + #include "std/utility.hpp" namespace dp { - -/// generic implementation of data buffer +// Generic implementation of data buffer. template <typename TBuffer> class DataBufferImpl : public DataBufferBase { public: - template<typename... Args> DataBufferImpl(Args&&... params) - : m_buffer(make_unique_dp<TBuffer>(forward<Args>(params)...)) - { - } - - uint32_t GetCapacity() const override - { - return m_buffer->GetCapacity(); - } - - uint32_t GetCurrentSize() const override - { - return m_buffer->GetCurrentSize(); - } - - uint32_t GetAvailableSize() const override - { - return m_buffer->GetAvailableSize(); - } - - uint8_t GetElementSize() const override - { - return m_buffer->GetElementSize(); - } - - void Seek(uint32_t elementNumber) override - { - m_buffer->Seek(elementNumber); - } + template <typename... Args> + DataBufferImpl(Args &&... params) : m_buffer(make_unique_dp<TBuffer>(forward<Args>(params)...)) + {} + uint32_t GetCapacity() const override { return m_buffer->GetCapacity(); } + uint32_t GetCurrentSize() const override { return m_buffer->GetCurrentSize(); } + uint32_t GetAvailableSize() const override { return m_buffer->GetAvailableSize(); } + uint8_t GetElementSize() const override { return m_buffer->GetElementSize(); } + void Seek(uint32_t elementNumber) override { m_buffer->Seek(elementNumber); } protected: drape_ptr<TBuffer> m_buffer; }; -/// CPU implementation of data buffer +// CPU implementation of data buffer. class CpuBufferImpl : public DataBufferImpl<CPUBuffer> { public: - template<typename... Args> CpuBufferImpl(Args&&... params) - : DataBufferImpl(forward<Args>(params)...) + template <typename... Args> + CpuBufferImpl(Args &&... params) : DataBufferImpl(forward<Args>(params)...) {} - void const * Data() const override - { - return m_buffer->Data(); - } - + void const * Data() const override { return m_buffer->Data(); } void UploadData(void const * data, uint32_t elementCount) override { m_buffer->UploadData(data, elementCount); @@ -67,34 +42,28 @@ public: m_buffer->Seek(newOffset); } - void UpdateData(void * destPtr, void const * srcPtr, uint32_t elementOffset, uint32_t elementCount) override + void UpdateData(void * destPtr, void const * srcPtr, uint32_t elementOffset, + uint32_t elementCount) override { ASSERT(false, ("Data updating is unavailable for CPU buffer")); } - void Bind() override - { - ASSERT(false, ("Binding is unavailable for CPU buffer")); - } - - void * Map() override + void Bind() override { ASSERT(false, ("Binding is unavailable for CPU buffer")); } + void * Map(uint32_t elementOffset, uint32_t elementCount) override { ASSERT(false, ("Mapping is unavailable for CPU buffer")); return nullptr; } - void Unmap() override - { - ASSERT(false, ("Unmapping is unavailable for CPU buffer")); - } + void Unmap() override { ASSERT(false, ("Unmapping is unavailable for CPU buffer")); } }; -/// GPU implementation of data buffer +// GPU implementation of data buffer. class GpuBufferImpl : public DataBufferImpl<GPUBuffer> { public: - template<typename... Args> GpuBufferImpl(Args&&... params) - : DataBufferImpl(forward<Args>(params)...) + template <typename... Args> + GpuBufferImpl(Args &&... params) : DataBufferImpl(forward<Args>(params)...) {} void const * Data() const override @@ -108,25 +77,17 @@ public: m_buffer->UploadData(data, elementCount); } - void UpdateData(void * destPtr, void const * srcPtr, uint32_t elementOffset, uint32_t elementCount) override + void UpdateData(void * destPtr, void const * srcPtr, uint32_t elementOffset, + uint32_t elementCount) override { m_buffer->UpdateData(destPtr, srcPtr, elementOffset, elementCount); } - void Bind() override - { - m_buffer->Bind(); - } - - void * Map() override + void Bind() override { m_buffer->Bind(); } + void * Map(uint32_t elementOffset, uint32_t elementCount) override { - return m_buffer->Map(); - } - - void Unmap() override - { - return m_buffer->Unmap(); + return m_buffer->Map(elementOffset, elementCount); } + void Unmap() override { return m_buffer->Unmap(); } }; - -} // namespace dp +} // namespace dp |