#include "PrecompiledHeader.h"
#include "Texture.h"

Texture::Texture(std::string path)
{
	Load(path);
}

void Texture::Load(std::string path)
{
	auto cachedTexture = m_TextureCache.find(path);
	if (cachedTexture == m_TextureCache.end())
	{
		m_TextureCache[path] = SOIL_load_OGL_texture(path.c_str(), 0, 0, SOIL_FLAG_INVERT_Y);
	}

	m_Texture = m_TextureCache[path];
	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);
}

void Texture::Bind()
{
	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, m_Texture);
}

Texture::~Texture()
{
	glDeleteTextures(1, &m_Texture);
}


