//#################### PRIVATE METHODS #################### void RGBA32ImageTexture::reload_image() const { typedef itk::VectorLinearInterpolateImageFunction<Image> Interpolator; typedef itk::VectorResampleImageFilter<Image,Image> Resampler; ImagePointer input = input_image<Resampler,Interpolator>(50); const RGBA32 *const pixels = input->GetBufferPointer(); itk::Size<2> size = input->GetLargestPossibleRegion().GetSize(); int pixelCount = size[0] * size[1]; std::vector<unsigned char> data(pixelCount * 4); for(int i=0; i<pixelCount; ++i) { data[i*4] = pixels[i][0]; data[i*4+1] = pixels[i][1]; data[i*4+2] = pixels[i][2]; data[i*4+3] = pixels[i][3]; } glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size[0], size[1], 0, GL_RGBA, GL_UNSIGNED_BYTE, &data[0]); }
//#################### PRIVATE METHODS #################### void Greyscale8ImageTexture::reload_image() const { typedef itk::LinearInterpolateImageFunction<Image> Interpolator; typedef itk::ResampleImageFilter<Image,Image> Resampler; ImagePointer input = input_image<Resampler,Interpolator>(50); itk::Size<2> size = input->GetLargestPossibleRegion().GetSize(); glTexImage2D(GL_TEXTURE_2D, 0, 1, size[0], size[1], 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, input->GetBufferPointer()); }