3
0
Fork 0
forked from suyu/suyu

Add OGLTextureView

This commit is contained in:
Fernando Sahmkow 2019-05-07 10:55:44 -04:00 committed by ReinUsesLisp
parent 6b0695b3cd
commit 3b26206dbd
2 changed files with 43 additions and 0 deletions

View file

@ -33,6 +33,24 @@ void OGLTexture::Release() {
handle = 0; handle = 0;
} }
void OGLTextureView::Create() {
if (handle != 0)
return;
MICROPROFILE_SCOPE(OpenGL_ResourceCreation);
glGenTextures(1, &handle);
}
void OGLTextureView::Release() {
if (handle == 0)
return;
MICROPROFILE_SCOPE(OpenGL_ResourceDeletion);
glDeleteTextures(1, &handle);
OpenGLState::GetCurState().UnbindTexture(handle).Apply();
handle = 0;
}
void OGLSampler::Create() { void OGLSampler::Create() {
if (handle != 0) if (handle != 0)
return; return;

View file

@ -36,6 +36,31 @@ public:
GLuint handle = 0; GLuint handle = 0;
}; };
class OGLTextureView : private NonCopyable {
public:
OGLTextureView() = default;
OGLTextureView(OGLTextureView&& o) noexcept : handle(std::exchange(o.handle, 0)) {}
~OGLTextureView() {
Release();
}
OGLTextureView& operator=(OGLTextureView&& o) noexcept {
Release();
handle = std::exchange(o.handle, 0);
return *this;
}
/// Creates a new internal OpenGL resource and stores the handle
void Create();
/// Deletes the internal OpenGL resource
void Release();
GLuint handle = 0;
};
class OGLSampler : private NonCopyable { class OGLSampler : private NonCopyable {
public: public:
OGLSampler() = default; OGLSampler() = default;