nuclear@72: #include nuclear@72: #include "opengl.h" nuclear@72: #include "colgrade.h" nuclear@72: nuclear@72: GradePalette::GradePalette() nuclear@72: { nuclear@72: tex = 0; nuclear@72: } nuclear@72: nuclear@72: GradePalette::~GradePalette() nuclear@72: { nuclear@72: destroy(); nuclear@72: } nuclear@72: nuclear@72: bool GradePalette::create(int sz) nuclear@72: { nuclear@72: unsigned int clamp = GLEW_ARB_texture_border_clamp ? GL_CLAMP_TO_EDGE : GL_CLAMP; nuclear@72: nuclear@72: destroy(); nuclear@72: nuclear@72: glGenTextures(1, &tex); nuclear@72: glBindTexture(GL_TEXTURE_3D, tex); nuclear@72: glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); nuclear@72: glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); nuclear@72: glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, clamp); nuclear@72: glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, clamp); nuclear@72: glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, clamp); nuclear@72: glTexImage3D(GL_TEXTURE_3D, 0, GL_RGB, sz, sz, sz, 0, GL_RGB, GL_UNSIGNED_BYTE, 0); nuclear@72: nuclear@72: unsigned char *scanline = new unsigned char[sz * 3]; nuclear@72: nuclear@72: size = sz; nuclear@72: for(int i=0; i