#include "deform_texture.hpp" #include gfx::DeformTexture::DeformTexture(const DeformGridInfo& info) : info_(info) { glGenTextures(1, &id_); if (!id_) throw std::runtime_error("Nelze vytvorit texturu!"); glBindTexture(GL_TEXTURE_3D, id_); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); glBindTexture(GL_TEXTURE_3D, 0); } void gfx::DeformTexture::SetData(std::span data) { glBindTexture(GL_TEXTURE_3D, id_); glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB8_SNORM, info_.res.x, info_.res.y, info_.res.z, 0, GL_RGB, GL_BYTE, data.data()); } gfx::DeformTexture::~DeformTexture() { glDeleteTextures(1, &id_); }