From 0bf4ad9e4a9e1c97e92aa23a365405dfef89bd7c Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 17 Jan 2021 19:36:30 +0000 Subject: Big reshuffle Fixes code quality warnings now picked up. --- gfx/models/texture.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 gfx/models/texture.cpp (limited to 'gfx/models/texture.cpp') diff --git a/gfx/models/texture.cpp b/gfx/models/texture.cpp new file mode 100644 index 0000000..a388b32 --- /dev/null +++ b/gfx/models/texture.cpp @@ -0,0 +1,35 @@ +#include "texture.h" +#include "stb_image.h" +#include + +Texture::Texture(const std::string & fileName) : m_texture {} +{ + int width, height, numComponents; + unsigned char * data = stbi_load((fileName).c_str(), &width, &height, &numComponents, 4); + + if (!data) { + throw std::runtime_error {"Unable to load texture: " + fileName}; + } + + glGenTextures(1, &m_texture); + glBindTexture(GL_TEXTURE_2D, m_texture); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); + stbi_image_free(data); +} + +Texture::~Texture() +{ + glDeleteTextures(1, &m_texture); +} + +void +Texture::Bind() const +{ + glBindTexture(GL_TEXTURE_2D, m_texture); +} -- cgit v1.2.3