From 9bf6f43a4e3f9d2b979f4f6f1b56c0fa59c5f7ae Mon Sep 17 00:00:00 2001 From: Bart van Strien Date: Tue, 10 Jan 2012 15:39:44 +0100 Subject: [PATCH] Adding the files is a crucial step, you know And I so blame slime73 for his incorrect diff --- src/modules/graphics/opengl/OpenGL.cpp | 56 ++++++++++++++++++++++++++ src/modules/graphics/opengl/OpenGL.h | 55 +++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 src/modules/graphics/opengl/OpenGL.cpp create mode 100644 src/modules/graphics/opengl/OpenGL.h diff --git a/src/modules/graphics/opengl/OpenGL.cpp b/src/modules/graphics/opengl/OpenGL.cpp new file mode 100644 index 000000000..286850494 --- /dev/null +++ b/src/modules/graphics/opengl/OpenGL.cpp @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2006-2012 LOVE Development Team + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + **/ + +#include "OpenGL.h" + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + static GLuint boundTexture = 0; + + void resetBoundTexture() + { + // OpenGL might not be initialized yet, so we can't do a real reset + boundTexture = 0; + } + + void bindTexture(GLuint texture, bool override) + { + if (texture != boundTexture || texture == 0 || override) + { + boundTexture = texture; + glBindTexture(GL_TEXTURE_2D, texture); + } + } + + void deleteTexture(GLuint texture) + { + if (texture == boundTexture) + boundTexture = 0; + + glDeleteTextures(1, &texture); + } + +} // opengl +} // graphics +} // love diff --git a/src/modules/graphics/opengl/OpenGL.h b/src/modules/graphics/opengl/OpenGL.h new file mode 100644 index 000000000..954ee7a75 --- /dev/null +++ b/src/modules/graphics/opengl/OpenGL.h @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2006-2012 LOVE Development Team + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + **/ + +#ifndef LOVE_COMMON_OPENGL_H +#define LOVE_COMMON_OPENGL_H + +#include "GLee.h" + +namespace love +{ +namespace graphics +{ +namespace opengl +{ + + // resets the stored bound texture id + void resetBoundTexture(); + + /** + * Helper for binding an OpenGL texture. + * Makes sure we aren't redundantly binding textures. + * @param texture The texture to bind. + * @param override Overrides the checks to guarantee texture bind + **/ + void bindTexture(GLuint texture, bool override = false); + + /** + * Helper for deleting an OpenGL texture. + * Cleans up if the texture is currently bound. + * @param texture The texture to delete. + **/ + void deleteTexture(GLuint texture); + +} // opengl +} // graphics +} // love + +#endif