aboutsummaryrefslogtreecommitdiffstats
path: root/include/Texture.hpp
diff options
context:
space:
mode:
authordrumsetmonkey <abelleisle@roadrunner.com>2016-03-30 08:41:16 -0400
committerdrumsetmonkey <abelleisle@roadrunner.com>2016-03-30 08:41:16 -0400
commitc35571e37bdd6d2fe9b95e4265c150265585f3a9 (patch)
tree31478f777e27f345cc20f2eaf796a176b55cb4fe /include/Texture.hpp
parent82c178d797b9a23c31d7dad1cc8cac29d27c6eb1 (diff)
Inv and textures
Diffstat (limited to 'include/Texture.hpp')
-rw-r--r--include/Texture.hpp103
1 files changed, 103 insertions, 0 deletions
diff --git a/include/Texture.hpp b/include/Texture.hpp
new file mode 100644
index 0000000..4202043
--- /dev/null
+++ b/include/Texture.hpp
@@ -0,0 +1,103 @@
+/** @file Texture.h
+ * @brief Defines a method for loading textures.
+ *
+ * This file gives facilities for easily loading and binding textures.
+ */
+
+#ifndef TEXTURE_H
+#define TEXTURE_H
+
+#include <common.hpp>
+
+/**
+ * When defined, DEBUG allows extra messages to be printed to the terminal for
+ * debugging purposes.
+ */
+
+#define DEBUG
+
+/**
+ * Texture functions are given a namespace for better organization.
+ */
+
+namespace Texture {
+
+ /**
+ * Loads a texture from the given file name, returning the GLuint used for
+ * later referencing of the texture.
+ */
+
+ GLuint loadTexture(std::string fileName);
+
+ void freeTextures(void);
+
+ void initColorIndex();
+ vec2 getIndex(Color c);
+ dim2 imageDim(std::string fileName);
+}
+
+/**
+ * The Texturec class.
+ *
+ * This class can handle an array of textures and allows easy binding of those
+ * textures.
+ */
+
+class Texturec{
+private:
+
+ /**
+ * Contains the index in the image array of the currently loaded texture.
+ */
+
+ unsigned int texState;
+
+public:
+
+ /**
+ * Contains an array of the GLuints returned from Texture::loadTexture().
+ */
+
+ std::vector<GLuint> image;
+
+ /**
+ * Populates the image array from a list of strings, with each string as a
+ * separate argument.
+ */
+
+ Texturec(uint amt, ...);
+
+ /**
+ * Populates the image array from an array of strings.
+ */
+
+ Texturec(uint amt,const char **paths);
+ Texturec(std::vector<std::string>vec);
+ Texturec( std::initializer_list<std::string> l );
+
+ /**
+ * Frees memory taken by the image array.
+ */
+
+ ~Texturec();
+
+ /**
+ * Binds the next texture in the array, incrementing texState.
+ */
+
+ void bindNext();
+
+ /**
+ * Binds the previous texture in the array, decrementing texState.
+ */
+
+ void bindPrev();
+
+ /**
+ * Binds the texture with the provided index.
+ */
+
+ void bind(unsigned int);
+};
+
+#endif //TEXTURE_H