Elevate Engine 1
Loading...
Searching...
No Matches
Elevate::OpenGLTexture Class Reference

#include <OpenGLTexture.h>

Inheritance diagram for Elevate::OpenGLTexture:
Elevate::Texture

Public Member Functions

 OpenGLTexture (unsigned char *data, TextureMetadata &meta)
 
virtual void SetDataImpl (unsigned char *data) override
 
virtual void * GetNativeHandle () const override
 
- Public Member Functions inherited from Elevate::Texture
virtual ~Texture ()=default
 
void SetData (unsigned char *data, TextureMetadata &meta)
 
bool IsTextureLoaded () const
 
bool MatchesPath (std::string pathToMatch)
 
const std::string & GetName () const
 
const std::string & GetPath () const
 
const uint32_t GetWidth () const
 
const uint32_t GetHeight () const
 
const TextureType GetUsage () const
 
const TextureMetadataGetMetadata () const
 

Additional Inherited Members

- Static Public Member Functions inherited from Elevate::Texture
static TexturePtr CreateFromFile (const std::string &path, TextureType usage=TextureType::Diffuse)
 
static TexturePtr CreateFromColor (const glm::vec3 &color, const std::string &name, uint32_t width=1, uint32_t height=1)
 
static TexturePtr CreateFromColor (const glm::vec4 &color, const std::string &name, uint32_t width=1, uint32_t height=1)
 
static TexturePtr CreateFromData (unsigned char *data, TextureMetadata &meta)
 
- Protected Member Functions inherited from Elevate::Texture
 Texture ()=default
 
 Texture (TextureMetadata meta)
 
- Protected Attributes inherited from Elevate::Texture
TextureMetadata m_meta
 

Detailed Description

Definition at line 7 of file OpenGLTexture.h.

Constructor & Destructor Documentation

◆ OpenGLTexture()

Elevate::OpenGLTexture::OpenGLTexture ( unsigned char *  data,
TextureMetadata meta 
)

Definition at line 72 of file OpenGLTexture.cpp.

73 : Texture(meta)
74 {
75 // todo get parameters for the textures
76 GLCheck(glGenTextures(1, &m_textureID));
77
78 Bind();
79 SetDataImpl(data);
80 }
#define GLCheck(x)
Definition GLDebug.h:11
virtual void SetDataImpl(unsigned char *data) override
Texture()=default

Member Function Documentation

◆ GetNativeHandle()

void * Elevate::OpenGLTexture::GetNativeHandle ( ) const
overridevirtual

Implements Elevate::Texture.

Definition at line 123 of file OpenGLTexture.cpp.

124 {
125 return reinterpret_cast<void*>((intptr_t)m_textureID);
126 }

◆ SetDataImpl()

void Elevate::OpenGLTexture::SetDataImpl ( unsigned char *  data)
overridevirtual

Implements Elevate::Texture.

Definition at line 93 of file OpenGLTexture.cpp.

94 {
95 Bind();
96
97 // set the texture wrapping parameters
98 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, ToOpenGL(m_meta.WrapS));
99 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, ToOpenGL(m_meta.WrapT));
100 // set texture filtering parameters
101 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, ToOpenGL(m_meta.MinFilter));
102 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, ToOpenGL(m_meta.MagFilter));
103
104 // Swizzle if there is only a single channnel
105#ifdef EE_SUPPORTS_DSA
107 GLint swizzleMask[] = { GL_RED, GL_RED, GL_RED, GL_ONE };
108 glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask);
109 }
110#endif
111
112 EE_CORE_INFO("Creating Texture: ID={}, Size={}x{}, Format={}", m_textureID, m_meta.Width, m_meta.Height, (int)m_meta.Format);
113
115 {
116 GLCheck(glTexImage2D(GL_TEXTURE_2D, 0, ToInternalFormat(m_meta.Format), m_meta.Width, m_meta.Height, 0, ToOpenGL(m_meta.Format), ToOpenGLType(m_meta.Format), data));
117
118 if (m_meta.Mipmaps)
119 GLCheck(glGenerateMipmap(GL_TEXTURE_2D));
120 }
121 }
TextureMetadata m_meta
Definition Texture.h:133
constexpr GLenum ToOpenGL(TextureFormat format)
constexpr GLenum ToInternalFormat(TextureFormat format)
constexpr GLenum ToOpenGLType(TextureFormat format)
TextureSource Source
Definition Texture.h:60
TextureFilter MagFilter
Definition Texture.h:65
TextureFilter MinFilter
Definition Texture.h:64
TextureFormat Format
Definition Texture.h:58

The documentation for this class was generated from the following files: