glGenTextures(3, texFloat);
glBindTexture(GL_TEXTURE_2D, texFloat[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, 4, 4, 0,
GL_RED, GL_FLOAT, matrix);
glBindTexture(GL_TEXTURE_2D, texFloat[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, 4, 4, 0,
GL_RED, GL_FLOAT, matrix2);
glBindTexture(GL_TEXTURE_2D, texFloat[2]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, 4, 4, 0,
GL_RED, GL_FLOAT, out);
glGenFramebuffers(1, &gp_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER_EXT, gp_framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
GL_TEXTURE_2D, texFloat[2], 0);
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
glClampColor(GL_CLAMP_VERTEX_COLOR_ARB, GL_FALSE);
glClampColor(GL_CLAMP_FRAGMENT_COLOR_ARB, GL_FALSE);
glClampColor(GL_CLAMP_READ_COLOR_ARB, GL_FALSE);
vert_sh = glCreateShader(GL_VERTEX_SHADER);
frag_sh = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(vert_sh, 1, &vert_src, NULL);
glShaderSource(frag_sh, 1, &frag_src, NULL);
glCompileShader(vert_sh);
glCompileShader(frag_sh);
prog = glCreateProgram();
glAttachShader(prog, vert_sh);
glAttachShader(prog, frag_sh);
glLinkProgram(prog);
location[0] = glGetUniformLocation(prog, "tex");
location[1] = glGetUniformLocation(prog, "old");
glUniform1i(location[0], GL_TEXTURE0);
glUniform1i(location[1], GL_TEXTURE1);
glUseProgram(prog);