diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-08-30 13:41:28 +0200 |
---|---|---|
committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-09-03 20:09:50 +0200 |
commit | ec28f037e6cfe42c3285866572af075e1e72b3e9 (patch) | |
tree | 861ec1bf3da3a500b1e4ea7158aa0c59576884c3 /src/video_core/renderer_opengl/gl_resource_manager.h | |
parent | citra-qt: Move system shutdown to run inside EmuThread (diff) | |
download | yuzu-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.h | 24 |
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; |