aboutsummaryrefslogtreecommitdiff
path: root/src/RenderBackend/OpenGL/DeviceFrame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/RenderBackend/OpenGL/DeviceFrame.cpp')
-rw-r--r--src/RenderBackend/OpenGL/DeviceFrame.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/RenderBackend/OpenGL/DeviceFrame.cpp b/src/RenderBackend/OpenGL/DeviceFrame.cpp
new file mode 100644
index 0000000..9d60597
--- /dev/null
+++ b/src/RenderBackend/OpenGL/DeviceFrame.cpp
@@ -0,0 +1,36 @@
+#include "../../../include/RenderBackend/OpenGL/DeviceFrame.hpp"
+#include "../../../include/RenderBackend/OpenGL/DeviceMemory.hpp"
+#include "../../../include/RenderBackend/OpenGL/opengl.hpp"
+
+namespace amalgine
+{
+ DeviceFrame::DeviceFrame()
+ {
+ glGenVertexArrays(1, &vertexArrayObjectId);
+ }
+
+ DeviceFrame::~DeviceFrame()
+ {
+ for(DeviceMemory *deviceMemory : buffers)
+ {
+ delete deviceMemory;
+ }
+ glDeleteVertexArrays(1, &vertexArrayObjectId);
+ }
+
+ DeviceMemory* DeviceFrame::alloc()
+ {
+ glBindVertexArray(vertexArrayObjectId);
+ DeviceMemory *deviceMemory = new DeviceMemory();
+ buffers.push_back(deviceMemory);
+ return deviceMemory;
+ }
+
+ void DeviceFrame::draw()
+ {
+ for(DeviceMemory *deviceMemory : buffers)
+ {
+ deviceMemory->draw();
+ }
+ }
+}