43 GLuint fbo, rout = out;
44 GLint vp[4], w, h, cpId, cfbo, ctex;
45 GLboolean dt = glIsEnabled(GL_DEPTH_TEST), bl = glIsEnabled(GL_BLEND);
48 glGetIntegerv(GL_POLYGON_MODE, polygonMode);
50 glGetIntegerv(GL_VIEWPORT, vp);
51 glGetIntegerv(GL_FRAMEBUFFER_BINDING, &cfbo);
52 glGetIntegerv(GL_TEXTURE_BINDING_2D, &ctex);
53 glGetIntegerv(GL_CURRENT_PROGRAM, &cpId);
57 (out == in1 || out == in2) )
68 glBindTexture(GL_TEXTURE_2D, rout);
69 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w);
70 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h);
71 if(!bl) glEnable(GL_BLEND);
72 if(dt) glDisable(GL_DEPTH_TEST);
74 glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
76 glViewport(0, 0, w, h);
77 glGenFramebuffers(1, &fbo);
78 glBindFramebuffer(GL_FRAMEBUFFER, fbo); {
79 glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, rout, 0);
81 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, in1);
82 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, in2);
83 glUniform1i(glGetUniformLocation(
_opPId,
"tex0"), 0);
84 glUniform1i(glGetUniformLocation(
_opPId,
"tex1"), 1);
85 glUniform1i(glGetUniformLocation(
_opPId,
"inv"), flipV);
88 glBindTexture(GL_TEXTURE_2D, 0);
89 glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, 0);
90 glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, 0);
93 glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
94 glBlitFramebuffer(0, 0, w, h, vp[0], vp[1], vp[0] + vp[2], vp[1] + vp[3], GL_COLOR_BUFFER_BIT, GL_NEAREST);
97 glViewport(vp[0], vp[1], vp[2], vp[3]);
99 glBindFramebuffer(GL_FRAMEBUFFER, cfbo);
100 glBindTexture(GL_TEXTURE_2D, ctex);
102 glPolygonMode(GL_FRONT_AND_BACK, polygonMode[0]);
104 if(!bl) glDisable(GL_BLEND);
105 if(dt) glEnable(GL_DEPTH_TEST);
106 glDeleteFramebuffers(1, &fbo);