virtual void OnInit()
{
glewInit();
glClearColor(0.5f, 0.5f, 1.0f, 0.0f);
// load (and compile, link) from file
shader = SM.loadfromFile("vertexshader.txt","fragmentshader.txt");
if (shaderRGB2YUV==0)
std::cout << "Error Loading, compiling or linking shader
";
glGenTextures(1, &tempTex);
glBindTexture(GL_TEXTURE_2D, tempTex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 480, 0, GL_RGBA, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, 0);
glGenFramebuffersEXT(1, &Fbo);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,Fbo);
glFramebufferTextureEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,tempTex,0);
if(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT) != GL_FRAMEBUFFER_COMPLETE_EXT)
return ;
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0);
glEnable(GL_TEXTURE_2D);
}
virtual void OnResize(int w, int h)
{
if(h == 0) h = 1;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
virtual void OnRender(void)
{
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, Fbo);
shader->begin();
glBegin(GL_QUADS);
glVertex2d(-1.0, -1.0);
glVertex2d(1.0, -1.0);
glVertex2d(1.0, 1.0);
glVertex2d(-1.0, 1.0);
glEnd();
shader->end();
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0);
glBindTexture(GL_TEXTURE_2D, tempTex);
glBegin(GL_QUADS);
glTexCoord2f(0.0,0.0); glVertex2d(-1.0, -1.0);
glTexCoord2f(1.0,0.0); glVertex2d(1.0, -1.0);
glTexCoord2f(1.0,1.0); glVertex2d(1.0, 1.0);
glTexCoord2f(0.0,1.0); glVertex2d(-1.0, 1.0);
glEnd();
glutSwapBuffers();
}