aboutsummaryrefslogtreecommitdiff
path: root/include/RenderBackend/OpenGL/DeviceMemory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/RenderBackend/OpenGL/DeviceMemory.hpp')
-rw-r--r--include/RenderBackend/OpenGL/DeviceMemory.hpp37
1 files changed, 16 insertions, 21 deletions
diff --git a/include/RenderBackend/OpenGL/DeviceMemory.hpp b/include/RenderBackend/OpenGL/DeviceMemory.hpp
index 5f593fc..802230d 100644
--- a/include/RenderBackend/OpenGL/DeviceMemory.hpp
+++ b/include/RenderBackend/OpenGL/DeviceMemory.hpp
@@ -5,6 +5,8 @@
#include "../../Triangle.hpp"
#include "../../Vec.hpp"
+#include <memory>
+
namespace amalgine {
enum class DeviceMemoryType {
NONE,
@@ -12,11 +14,10 @@ namespace amalgine {
VEC3
};
- class DeviceMemory
- {
+ class DeviceMemory {
DISABLE_COPY(DeviceMemory)
- friend class DeviceFrame;
- friend class ShaderProgram;
+ friend class ShaderFrame;
+ friend class std::default_delete<DeviceMemory>;
public:
enum class StorageType
{
@@ -30,26 +31,20 @@ namespace amalgine {
STREAM
};
- enum class PrimitiveType
- {
- TRIANGLE
- };
-
- //void copy(const DataView<f32> &data, StorageType storageType, PrimitiveType primitiveType = PrimitiveType::TRIANGLE);
- void copy(const DataView<vec2f> &texture_coords, StorageType storageType);
- void copy(const DataView<Triangle2D> &triangles, StorageType storageType);
- void copy(const DataView<Triangle3D> &triangles, StorageType storageType);
- void draw();
+ void set(const DataView<vec2f> &texture_coords, StorageType storageType);
+ void set(const DataView<Triangle2D> &triangles, StorageType storageType);
+ void set(const DataView<Triangle3D> &triangles, StorageType storageType);
- DeviceMemoryType get_type() const { return type; }
+ i32 get_num_vertices() const { return num_vertices; }
private:
- DeviceMemory();
+ DeviceMemory(u32 vertex_array_object_id, i32 attrib_location);
~DeviceMemory();
- void use() const;
+ void use();
private:
- u32 vertexBufferObjectId;
- u32 primitiveType;
- u32 numVertices;
- DeviceMemoryType type;
+ u32 vertex_array_object_id;
+ u32 vertex_buffer_object_id;
+ i32 attrib_location;
+ i32 num_vertices;
+ DeviceMemoryType memory_type;
};
}