class glw::Texture2D

Overview

Two dimensional texture. Used mostly to store color images or results of internal rendering. More…

#include <Texture.h>

class Texture2D: public glw::Texture {
public:
    // construction

    Texture2D(const uint32_t width, const uint32_t height, const gl::GLenum internal_format = gl::GLenum::GL_RGBA8);
    Texture2D(const uint32_t width, const uint32_t height, const uint32_t layer_count, const gl::GLenum internal_format);
    virtual ~Texture2D();

    // methods

    static PTexture2D Create(const uint32_t width, const uint32_t height, const gl::GLenum internal_format = gl::GLenum::GL_RGBA8);
    static PTexture2D CreateLayered(const uint32_t width, const uint32_t height, const uint32_t layer_count, const gl::GLenum internal_format = gl::GLenum::GL_RGBA8);
    static PTexture2D CreateFromFile(const std::string& image_file_name, const bool load_as_float = false);
    uint32_t GetWidth();
    uint32_t GetHeight();
    glm::uvec2 GetResolution();
    uint32_t GetLayerCount();
    void SetData(const gl::GLenum data_format, const gl::GLenum data_type, const void* data_ptr);
    void SetDataLayer(const uint32_t layer, const gl::GLenum data_format, const gl::GLenum data_type, const void* data_ptr);
    bool SaveToFile(const std::string& image_file_name);

protected:
    // methods

    virtual gl::GLenum GetTarget();
    virtual void ReserveMemory();
};

Inherited Members

public:
    // methods

    void Initialize(const gl::GLenum internal_format);
    void Enable();
    void Disable();
    void Unbind();
    void Bind();
    void Bind(const uint8_t binding_unit);
    gl::GLuint GetID();
    gl::GLenum GetInternalFormat();
    void SetFiltering(const Filtering mag_min);
    virtual void SetFiltering(const Filtering mag, const Filtering min);
    void SetWrapping(const Wrapping wrap_st);
    virtual void SetWrapping(const Wrapping wrap_s, const Wrapping wrap_t);
    virtual void SetParameteri(const gl::GLenum pname, const gl::GLint param);
    void SetParameterfv(const gl::GLenum pname, const gl::GLfloat* param);

protected:
    // methods

    virtual gl::GLenum GetTarget() = 0;
    virtual void ReserveMemory() = 0;

Detailed Documentation

Two dimensional texture. Used mostly to store color images or results of internal rendering.

Construction

Texture2D(const uint32_t width, const uint32_t height, const gl::GLenum internal_format = gl::GLenum::GL_RGBA8)

Creates a single 2D texture.

Texture2D(const uint32_t width, const uint32_t height, const uint32_t layer_count, const gl::GLenum internal_format)

Creates array of 2D textures, represented as layers.