63 lines
2.3 KiB
C++
63 lines
2.3 KiB
C++
#include "texture.hpp"
|
|
#include "shader.hpp"
|
|
#include <iostream>
|
|
|
|
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<<program->getUniformId(name);
|
|
glUniform1i(program->getUniformId(name), id);
|
|
}
|