【发布时间】:2015-02-19 06:50:40
【问题描述】:
如何在 OpenGL 中捕捉/复制/抓取当前显示的屏幕并将其读入 GLuint 纹理,以便在下一帧中再次将其用作纹理?
// Set random seed
program.setUniformValue("seed", ((float)qrand()/RAND_MAX));
//Set number of alredy rendered passes
program.setUniformValue("numRenderPass",mRenderPasses);
//Bind last rendered Image
//pixelsRenderedImage = bindTexture(*renderedImage);
//Load Identity
glLoadIdentity();
//Move to rendering point
glTranslatef( -1.0, -1.0, 0.0f );
glEnable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, pixelsScene);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, pixelsRenderedImage);
// Draw geometry
//Render textured quad
glBegin( GL_QUADS );
glTexCoord2f( 0.f, 0.f ); glVertex2f( 0, 0);
glTexCoord2f( 1.f, 0.f ); glVertex2f( 2.0, 0);
glTexCoord2f( 1.f, 1.f ); glVertex2f( 2.0, 2.0);
glTexCoord2f( 0.f, 1.f ); glVertex2f( 0, 2.0);
glEnd();
//PseudoCode
Read_Back_screen_to -> pixelsRenderedImage
我想绕过 glReadPixels(CPU)来加速渲染“一点点”;-)。
【问题讨论】:
-
你认为这个问题应该以什么方式标记
qt?