diff options
Diffstat (limited to 'src/RenderBackend/OpenGL/DeviceMemory.cpp')
-rw-r--r-- | src/RenderBackend/OpenGL/DeviceMemory.cpp | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/src/RenderBackend/OpenGL/DeviceMemory.cpp b/src/RenderBackend/OpenGL/DeviceMemory.cpp index f071cd8..a82cdaa 100644 --- a/src/RenderBackend/OpenGL/DeviceMemory.cpp +++ b/src/RenderBackend/OpenGL/DeviceMemory.cpp @@ -15,24 +15,6 @@ namespace amalgine } } - u32 getOpenglPrimitiveType(DeviceMemory::PrimitiveType primitiveType) - { - switch(primitiveType) - { - case DeviceMemory::PrimitiveType::TRIANGLE: return GL_TRIANGLES; - default: assert(false); return -1; - } - } - - u32 getPrimitiveTypePointsPerVertices(DeviceMemory::PrimitiveType primitiveType) - { - switch(primitiveType) - { - case DeviceMemory::PrimitiveType::TRIANGLE: return 3; - default: assert(false); return -1; - } - } - DeviceMemory::DeviceMemory() : primitiveType(0), numVertices(0), type(DeviceMemoryType::NONE) { glGenBuffers(1, &vertexBufferObjectId); @@ -57,12 +39,20 @@ namespace amalgine numVertices = getPrimitiveTypePointsPerVertices(primitiveType); } */ + void DeviceMemory::copy(const DataView<vec2f> &texture_coords, StorageType storageType) { + glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObjectId); + glBufferData(GL_ARRAY_BUFFER, texture_coords.getByteSize(), texture_coords.data, getOpenglStorageType(storageType)); + primitiveType = GL_TRIANGLES; + numVertices = texture_coords.size * 2; + type = DeviceMemoryType::VEC2; + } + void DeviceMemory::copy(const DataView<Triangle2D> &triangles, StorageType storageType) { glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObjectId); glBufferData(GL_ARRAY_BUFFER, triangles.getByteSize(), triangles.data, getOpenglStorageType(storageType)); primitiveType = GL_TRIANGLES; - numVertices = triangles.size * 3; + numVertices = triangles.size * 2; type = DeviceMemoryType::VEC2; } |