#include "texture.hpp" #include "shader.hpp" #include void texture::genTexureGpu(GLfloat pixels[], int width, int height, GLenum texUnit) { glActiveTexture(texUnit); glGenTextures(1, &ref); glBindTexture(GL_TEXTURE_2D, ref); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 3, 0, GL_RGB, GL_FLOAT, pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, settings.s_wraping); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, settings.t_wraping); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, settings.mag_min); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, settings.mag_max); } void texture::genTexureGpu(GLfloat pixels[], int width, int height, textureSettings settings, GLenum texUnit) { this->settings=settings; genTexureGpu(pixels,width,height,texUnit); } void texture::loadFromPath(std::string path, GLenum texUnit) { glActiveTexture(texUnit); glGenTextures(1, &ref); glBindTexture(GL_TEXTURE_2D, ref); unsigned char *image = SOIL_load_image(path.c_str(), &width, &height, 0, SOIL_LOAD_RGB); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); SOIL_free_image_data(image); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, settings.s_wraping); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, settings.t_wraping); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, settings.mag_min); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, settings.mag_max); } void texture::loadFromPath(std::string path, textureSettings settings, GLenum texUnit) { this->settings=settings; loadFromPath(path,texUnit); } textureSettings VELAGE_generateTextureSettings(GLenum s_wraping, GLenum t_wraping, GLenum mag_min, GLenum mag_max){ textureSettings settings; settings.s_wraping=s_wraping; settings.t_wraping=t_wraping; settings.mag_min=mag_min; settings.mag_max=mag_max; return settings; } textureSettings VELAGE_generateTextureSettings(GLenum wraping, GLenum mag){ textureSettings settings; settings.s_wraping=wraping; settings.t_wraping=wraping; settings.mag_min=mag; settings.mag_max=mag; return settings; } void texture::setTexUniformLocation(std::string name, GLint id, shader *program){ // std::cout<getUniformId(name); glUniform1i(program->getUniformId(name), id); }