aboutsummaryrefslogtreecommitdiffstats
path: root/dev/MinGfx/src/texture2d.h
diff options
context:
space:
mode:
Diffstat (limited to 'dev/MinGfx/src/texture2d.h')
-rw-r--r--dev/MinGfx/src/texture2d.h276
1 files changed, 138 insertions, 138 deletions
diff --git a/dev/MinGfx/src/texture2d.h b/dev/MinGfx/src/texture2d.h
index a07d80f..5d02ffa 100644
--- a/dev/MinGfx/src/texture2d.h
+++ b/dev/MinGfx/src/texture2d.h
@@ -1,139 +1,139 @@
-/*
- This file is part of the MinGfx Project.
-
- Copyright (c) 2017,2018 Regents of the University of Minnesota.
- All Rights Reserved.
-
- Original Author(s) of this File:
- Dan Keefe, 2018, University of Minnesota
-
- Author(s) of Significant Updates/Modifications to the File:
- ...
- */
-
-#ifndef SRC_TEXTURE2D_H_
-#define SRC_TEXTURE2D_H_
-
-
-#include "opengl_headers.h"
-#include "color.h"
-
-#include <string>
-
-
-namespace mingfx {
-
-/** A wrapper around a 2D texture that supports loading images from files or
- setting texture color data directly. Example:
- ~~~
- Texture2D tex1;
- Texture2D tex2(GL_CLAMP_TO_EDGE);
-
- void MyGraphicsApp::InitOpenGL() {
- std::vector<std::string> search_path;
- search_path.push_back(".");
- search_path.push_back("./data");
- search_path.push_back("./shaders");
- tex1.InitFromFile(Platform::FindFile("earth-2k.png", search_path));
- tex2.InitFromFile(Platform::FindFile("toon-ramp.png", search_path));
- }
- ~~~
- */
-class Texture2D {
-public:
-
- /// Creates an empty texture. Optional parameters can be provided to set
- /// the texture wrap mode and filter mode.
- Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR);
- virtual ~Texture2D();
-
-
- /// Call this from within the InitOpenGL() function since it will initialize
- /// not just the Texture2D's internal data but also an OpenGL texture to be
- /// stored on the graphics card. Internally, this uses the stbi library to
- /// load images. It supports png, jpg, bmp, and other file formats.
- bool InitFromFile(const std::string &filename);
-
- /// Call this from within the InitOpenGL() function since it will initialize
- /// not just the Texture2D's internal data but also an OpenGL texture to be
- /// stored on the graphics card.
- /// With this version of Init, you may pass in your own pointer to color data.
- /// The data argument must point to an array of 4-channel color data stored as
- /// unsigned chars in RGBA format. You are responsible for managing the memory
- /// for this array. If you will never call Pixel(), then it is safe to free
- /// data as soon as this function returns. Otherwise, you need to make sure
- /// data does not change in memory until you destroy the Texture2D object.
- bool InitFromBytes(int width, int height, const unsigned char * data);
-
- /// Call this from within the InitOpenGL() function since it will initialize
- /// not just the Texture2D's internal data but also an OpenGL texture to be
- /// stored on the graphics card.
- /// With this version of Init, you may pass in your own pointer to color data.
- /// The data argument must point to an array of 4-channel color data stored as
- /// floats in RGBA format. You are responsible for managing the memory
- /// for this array. If you will never call Pixel(), then it is safe to free
- /// data as soon as this function returns. Otherwise, you need to make sure
- /// data does not change in memory until you destroy the Texture2D object.
- bool InitFromFloats(int width, int height, const float * data);
-
-
- /// This function may be called to re-read the texture data from an array
- /// formated the same as in InitFromBytes. The width and height of the
- /// texture must remain the same.
- bool UpdateFromBytes(const unsigned char * data);
-
- /// This function may be called to re-read the texture data from an array
- /// formated the same as in InitFromFloats. The width and height of the
- /// texture must remain the same.
- bool UpdateFromFloats(const float * data);
-
-
- /// Returns true if the texture data has been successfully transferred to OpenGL.
- bool initialized() const;
-
- /// Returns the width in pixels of the texture.
- int width() const;
-
- /// Returns the height in pixels of the texture.
- int height() const;
-
- /// Returns the unsigned int used as the texture handle by OpenGL
- GLuint opengl_id() const;
-
- /// Returns an enumerated constant for the OpenGL wrap mode used by the texture.
- GLenum wrap_mode() const;
-
- /// Returns an enumerated constant for the OpenGL filter mode used by the texture.
- GLenum filter_mode() const;
-
- /// Uses the OpenGL texture wrap mode arguments
- void set_wrap_mode(GLenum wrapMode);
-
- /// Uses the OpenGL texture filter mode arguments
- void set_filter_mode(GLenum filterMode);
-
- /// Returns the color at the specified pixel. The top left corner of the
- /// image is (0,0) and the bottom right is (width()-1, height()-1).
- Color Pixel(int x, int y) const;
-
-private:
-
- bool InitOpenGL();
-
- GLenum dataType_; // GL_UNSIGNED_BYTE or GL_FLOAT
- const unsigned char * data_ubyte_;
- const float * data_float_;
-
- int width_;
- int height_;
- bool handleMemInternally_;
-
- GLuint texID_;
- GLenum wrapMode_;
- GLenum filterMode_;
-};
-
-
-} // end namespace
-
+/*
+ This file is part of the MinGfx Project.
+
+ Copyright (c) 2017,2018 Regents of the University of Minnesota.
+ All Rights Reserved.
+
+ Original Author(s) of this File:
+ Dan Keefe, 2018, University of Minnesota
+
+ Author(s) of Significant Updates/Modifications to the File:
+ ...
+ */
+
+#ifndef SRC_TEXTURE2D_H_
+#define SRC_TEXTURE2D_H_
+
+
+#include "opengl_headers.h"
+#include "color.h"
+
+#include <string>
+
+
+namespace mingfx {
+
+/** A wrapper around a 2D texture that supports loading images from files or
+ setting texture color data directly. Example:
+ ~~~
+ Texture2D tex1;
+ Texture2D tex2(GL_CLAMP_TO_EDGE);
+
+ void MyGraphicsApp::InitOpenGL() {
+ std::vector<std::string> search_path;
+ search_path.push_back(".");
+ search_path.push_back("./data");
+ search_path.push_back("./shaders");
+ tex1.InitFromFile(Platform::FindFile("earth-2k.png", search_path));
+ tex2.InitFromFile(Platform::FindFile("toon-ramp.png", search_path));
+ }
+ ~~~
+ */
+class Texture2D {
+public:
+
+ /// Creates an empty texture. Optional parameters can be provided to set
+ /// the texture wrap mode and filter mode.
+ Texture2D(GLenum wrapMode=GL_REPEAT, GLenum filterMode=GL_LINEAR);
+ virtual ~Texture2D();
+
+
+ /// Call this from within the InitOpenGL() function since it will initialize
+ /// not just the Texture2D's internal data but also an OpenGL texture to be
+ /// stored on the graphics card. Internally, this uses the stbi library to
+ /// load images. It supports png, jpg, bmp, and other file formats.
+ bool InitFromFile(const std::string &filename);
+
+ /// Call this from within the InitOpenGL() function since it will initialize
+ /// not just the Texture2D's internal data but also an OpenGL texture to be
+ /// stored on the graphics card.
+ /// With this version of Init, you may pass in your own pointer to color data.
+ /// The data argument must point to an array of 4-channel color data stored as
+ /// unsigned chars in RGBA format. You are responsible for managing the memory
+ /// for this array. If you will never call Pixel(), then it is safe to free
+ /// data as soon as this function returns. Otherwise, you need to make sure
+ /// data does not change in memory until you destroy the Texture2D object.
+ bool InitFromBytes(int width, int height, const unsigned char * data);
+
+ /// Call this from within the InitOpenGL() function since it will initialize
+ /// not just the Texture2D's internal data but also an OpenGL texture to be
+ /// stored on the graphics card.
+ /// With this version of Init, you may pass in your own pointer to color data.
+ /// The data argument must point to an array of 4-channel color data stored as
+ /// floats in RGBA format. You are responsible for managing the memory
+ /// for this array. If you will never call Pixel(), then it is safe to free
+ /// data as soon as this function returns. Otherwise, you need to make sure
+ /// data does not change in memory until you destroy the Texture2D object.
+ bool InitFromFloats(int width, int height, const float * data);
+
+
+ /// This function may be called to re-read the texture data from an array
+ /// formated the same as in InitFromBytes. The width and height of the
+ /// texture must remain the same.
+ bool UpdateFromBytes(const unsigned char * data);
+
+ /// This function may be called to re-read the texture data from an array
+ /// formated the same as in InitFromFloats. The width and height of the
+ /// texture must remain the same.
+ bool UpdateFromFloats(const float * data);
+
+
+ /// Returns true if the texture data has been successfully transferred to OpenGL.
+ bool initialized() const;
+
+ /// Returns the width in pixels of the texture.
+ int width() const;
+
+ /// Returns the height in pixels of the texture.
+ int height() const;
+
+ /// Returns the unsigned int used as the texture handle by OpenGL
+ GLuint opengl_id() const;
+
+ /// Returns an enumerated constant for the OpenGL wrap mode used by the texture.
+ GLenum wrap_mode() const;
+
+ /// Returns an enumerated constant for the OpenGL filter mode used by the texture.
+ GLenum filter_mode() const;
+
+ /// Uses the OpenGL texture wrap mode arguments
+ void set_wrap_mode(GLenum wrapMode);
+
+ /// Uses the OpenGL texture filter mode arguments
+ void set_filter_mode(GLenum filterMode);
+
+ /// Returns the color at the specified pixel. The top left corner of the
+ /// image is (0,0) and the bottom right is (width()-1, height()-1).
+ Color Pixel(int x, int y) const;
+
+private:
+
+ bool InitOpenGL();
+
+ GLenum dataType_; // GL_UNSIGNED_BYTE or GL_FLOAT
+ const unsigned char * data_ubyte_;
+ const float * data_float_;
+
+ int width_;
+ int height_;
+ bool handleMemInternally_;
+
+ GLuint texID_;
+ GLenum wrapMode_;
+ GLenum filterMode_;
+};
+
+
+} // end namespace
+
#endif \ No newline at end of file