progs/tests: add additional FBO->window test paths (disabled)
Normally use glReadPixels + glDrawPixels. Add debug/test paths for glCopyPixels and glBlitFramebuffer.
This commit is contained in:
@@ -33,7 +33,8 @@ CheckError(int line)
|
|||||||
static void
|
static void
|
||||||
Display( void )
|
Display( void )
|
||||||
{
|
{
|
||||||
GLubyte *buffer = malloc(Width * Height * 4);
|
GLboolean copyPix = GL_FALSE;
|
||||||
|
GLboolean blitPix = GL_FALSE;
|
||||||
GLenum status;
|
GLenum status;
|
||||||
|
|
||||||
CheckError(__LINE__);
|
CheckError(__LINE__);
|
||||||
@@ -63,6 +64,31 @@ Display( void )
|
|||||||
glutSolidTeapot(2.0);
|
glutSolidTeapot(2.0);
|
||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
|
|
||||||
|
if (copyPix) {
|
||||||
|
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, MyFB);
|
||||||
|
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
|
||||||
|
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0);
|
||||||
|
glDrawBuffer(GL_BACK);
|
||||||
|
|
||||||
|
glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */
|
||||||
|
|
||||||
|
glWindowPos2iARB(0, 0);
|
||||||
|
glCopyPixels(0, 0, Width, Height, GL_COLOR);
|
||||||
|
}
|
||||||
|
else if (blitPix) {
|
||||||
|
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, MyFB);
|
||||||
|
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
|
||||||
|
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0);
|
||||||
|
glDrawBuffer(GL_BACK);
|
||||||
|
|
||||||
|
glDisable(GL_DEPTH_TEST); /* in case window has depth buffer */
|
||||||
|
|
||||||
|
glBlitFramebufferEXT(0, 0, Width, Height,
|
||||||
|
0, 0, Width, Height,
|
||||||
|
GL_COLOR_BUFFER_BIT, GL_NEAREST);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GLubyte *buffer = malloc(Width * Height * 4);
|
||||||
/* read from user framebuffer */
|
/* read from user framebuffer */
|
||||||
glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
glReadPixels(0, 0, Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
||||||
|
|
||||||
@@ -73,6 +99,8 @@ Display( void )
|
|||||||
glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
glDrawPixels(Width, Height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
CheckError(__LINE__);
|
CheckError(__LINE__);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user