#include <msp/gl/extensions/arb_texture_swizzle.h>
#include <msp/gl/extensions/ext_framebuffer_object.h>
#include <msp/gl/extensions/khr_debug.h>
+#include "device.h"
#include "gl.h"
#include "error.h"
#include "texture.h"
namespace Msp {
namespace GL {
-OpenGLTexture *OpenGLTexture::scratch_binding = 0;
-
OpenGLTexture::OpenGLTexture(unsigned t):
target(t)
{
}
}
+OpenGLTexture::OpenGLTexture(OpenGLTexture &&other):
+ id(other.id),
+ target(other.target),
+ debug_name(move(other.debug_name))
+{
+ other.id = 0;
+}
+
OpenGLTexture::~OpenGLTexture()
{
- if(this==scratch_binding)
+ if(this==Device::get_current().get_state().scratch_texture)
unbind_scratch();
if(id)
glDeleteTextures(1, &id);
void OpenGLTexture::bind_scratch()
{
+ const OpenGLTexture *&scratch_binding = Device::get_current().get_state().scratch_texture;
if(!scratch_binding)
glActiveTexture(GL_TEXTURE0);
if(scratch_binding!=this)
void OpenGLTexture::unbind_scratch()
{
+ const OpenGLTexture *&scratch_binding = Device::get_current().get_state().scratch_texture;
if(scratch_binding)
{
glBindTexture(scratch_binding->target, 0);