#include "rendering/texture.hpp" #include "core/logger.hpp" // Stub implementation - would use stb_image or similar namespace wowee { namespace rendering { Texture::~Texture() { if (textureID) { glDeleteTextures(1, &textureID); } } bool Texture::loadFromFile(const std::string& path) { // TODO: Implement with stb_image or BLP loader LOG_WARNING("Texture loading not yet implemented: ", path); return false; } bool Texture::loadFromMemory(const unsigned char* data, int w, int h, int channels) { width = w; height = h; glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_2D, textureID); GLenum format = (channels == 4) ? GL_RGBA : GL_RGB; glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, GL_UNSIGNED_BYTE, data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glGenerateMipmap(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, 0); return true; } void Texture::bind(GLuint unit) const { glActiveTexture(GL_TEXTURE0 + unit); glBindTexture(GL_TEXTURE_2D, textureID); } void Texture::unbind() const { glBindTexture(GL_TEXTURE_2D, 0); } } // namespace rendering } // namespace wowee