aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/renderer_opengl/gl_resource_manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_opengl/gl_resource_manager.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_resource_manager.cpp b/src/video_core/renderer_opengl/gl_resource_manager.cpp
new file mode 100644
index 00000000..8f4ae28a
--- /dev/null
+++ b/src/video_core/renderer_opengl/gl_resource_manager.cpp
@@ -0,0 +1,111 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "video_core/renderer_opengl/gl_resource_manager.h"
+#include "video_core/renderer_opengl/gl_shader_util.h"
+
+// Textures
+OGLTexture::OGLTexture() : handle(0) {
+}
+
+OGLTexture::~OGLTexture() {
+ Release();
+}
+
+void OGLTexture::Create() {
+ if (handle != 0) {
+ return;
+ }
+
+ glGenTextures(1, &handle);
+}
+
+void OGLTexture::Release() {
+ glDeleteTextures(1, &handle);
+ handle = 0;
+}
+
+// Shaders
+OGLShader::OGLShader() : handle(0) {
+}
+
+OGLShader::~OGLShader() {
+ Release();
+}
+
+void OGLShader::Create(const char* vert_shader, const char* frag_shader) {
+ if (handle != 0) {
+ return;
+ }
+
+ handle = ShaderUtil::LoadShaders(vert_shader, frag_shader);
+}
+
+void OGLShader::Release() {
+ glDeleteProgram(handle);
+ handle = 0;
+}
+
+// Buffer objects
+OGLBuffer::OGLBuffer() : handle(0) {
+}
+
+OGLBuffer::~OGLBuffer() {
+ Release();
+}
+
+void OGLBuffer::Create() {
+ if (handle != 0) {
+ return;
+ }
+
+ glGenBuffers(1, &handle);
+}
+
+void OGLBuffer::Release() {
+ glDeleteBuffers(1, &handle);
+ handle = 0;
+}
+
+// Vertex array objects
+OGLVertexArray::OGLVertexArray() : handle(0) {
+}
+
+OGLVertexArray::~OGLVertexArray() {
+ Release();
+}
+
+void OGLVertexArray::Create() {
+ if (handle != 0) {
+ return;
+ }
+
+ glGenVertexArrays(1, &handle);
+}
+
+void OGLVertexArray::Release() {
+ glDeleteVertexArrays(1, &handle);
+ handle = 0;
+}
+
+// Framebuffers
+OGLFramebuffer::OGLFramebuffer() : handle(0) {
+}
+
+OGLFramebuffer::~OGLFramebuffer() {
+ Release();
+}
+
+void OGLFramebuffer::Create() {
+ if (handle != 0) {
+ return;
+ }
+
+ glGenFramebuffers(1, &handle);
+}
+
+void OGLFramebuffer::Release() {
+ glDeleteFramebuffers(1, &handle);
+ handle = 0;
+}