1 | //************************************ bs::framework - Copyright 2018 Marko Pintera **************************************// |
---|---|
2 | //*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********// |
3 | #pragma once |
4 | |
5 | #include "BsGLPrerequisites.h" |
6 | #include "Managers/BsHardwareBufferManager.h" |
7 | |
8 | namespace bs { namespace ct |
9 | { |
10 | /** @addtogroup GL |
11 | * @{ |
12 | */ |
13 | |
14 | /** Handles creation of OpenGL specific hardware buffers. */ |
15 | class GLHardwareBufferManager : public HardwareBufferManager |
16 | { |
17 | public: |
18 | /** Converts engine buffer usage flags into OpenGL specific flags. */ |
19 | static GLenum getGLUsage(GpuBufferUsage usage); |
20 | |
21 | /** Converts vertex element type into OpenGL specific type. */ |
22 | static GLenum getGLType(VertexElementType type); |
23 | |
24 | protected: |
25 | /** @copydoc HardwareBufferManager::createVertexBufferInternal */ |
26 | SPtr<VertexBuffer> createVertexBufferInternal(const VERTEX_BUFFER_DESC& desc, |
27 | GpuDeviceFlags deviceMask = GDF_DEFAULT) override; |
28 | |
29 | /** @copydoc HardwareBufferManager::createIndexBufferInternal */ |
30 | SPtr<IndexBuffer> createIndexBufferInternal(const INDEX_BUFFER_DESC& desc, |
31 | GpuDeviceFlags deviceMask = GDF_DEFAULT) override; |
32 | |
33 | /** @copydoc HardwareBufferManager::createGpuParamBlockBufferInternal */ |
34 | SPtr<GpuParamBlockBuffer> createGpuParamBlockBufferInternal(UINT32 size, |
35 | GpuBufferUsage usage = GBU_DYNAMIC, GpuDeviceFlags deviceMask = GDF_DEFAULT) override; |
36 | |
37 | /** @copydoc HardwareBufferManager::createGpuBufferInternal(const GPU_BUFFER_DESC&, GpuDeviceFlags) */ |
38 | SPtr<GpuBuffer> createGpuBufferInternal(const GPU_BUFFER_DESC& desc, |
39 | GpuDeviceFlags deviceMask = GDF_DEFAULT) override; |
40 | |
41 | /** @copydoc HardwareBufferManager::createGpuBufferInternal(const GPU_BUFFER_DESC&, SPtr<HardwareBuffer>) */ |
42 | SPtr<GpuBuffer> createGpuBufferInternal(const GPU_BUFFER_DESC& desc, |
43 | SPtr<HardwareBuffer> underlyingBuffer) override; |
44 | }; |
45 | |
46 | /** @} */ |
47 | }} |