mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 08:00:14 +00:00
51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
#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
|