summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_resource_manager.h
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2015-08-30 13:41:28 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2015-09-03 20:09:50 +0200
commitec28f037e6cfe42c3285866572af075e1e72b3e9 (patch)
tree861ec1bf3da3a500b1e4ea7158aa0c59576884c3 /src/video_core/renderer_opengl/gl_resource_manager.h
parentcitra-qt: Move system shutdown to run inside EmuThread (diff)
downloadyuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar.gz
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar.bz2
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar.lz
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar.xz
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.tar.zst
yuzu-ec28f037e6cfe42c3285866572af075e1e72b3e9.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_resource_manager.h')
-rw-r--r--src/video_core/renderer_opengl/gl_resource_manager.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_resource_manager.h b/src/video_core/renderer_opengl/gl_resource_manager.h
index 68fc1e6d3..65034d40d 100644
--- a/src/video_core/renderer_opengl/gl_resource_manager.h
+++ b/src/video_core/renderer_opengl/gl_resource_manager.h
@@ -37,6 +37,30 @@ public:
GLuint handle = 0;
};
+class OGLSampler : private NonCopyable {
+public:
+ OGLSampler() = default;
+ OGLSampler(OGLSampler&& o) { std::swap(handle, o.handle); }
+ ~OGLSampler() { Release(); }
+ OGLSampler& operator=(OGLSampler&& o) { std::swap(handle, o.handle); return *this; }
+
+ /// Creates a new internal OpenGL resource and stores the handle
+ void Create() {
+ if (handle != 0) return;
+ glGenSamplers(1, &handle);
+ }
+
+ /// Deletes the internal OpenGL resource
+ void Release() {
+ if (handle == 0) return;
+ glDeleteSamplers(1, &handle);
+ OpenGLState::ResetSampler(handle);
+ handle = 0;
+ }
+
+ GLuint handle = 0;
+};
+
class OGLShader : private NonCopyable {
public:
OGLShader() = default;