mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 22:00:13 +01:00
delete frame/renderbuffers upon exit, more error checking
This commit is contained in:
parent
547113c16c
commit
f81c78f87d
1 changed files with 29 additions and 15 deletions
|
|
@ -14,7 +14,7 @@
|
||||||
#include <GL/glut.h>
|
#include <GL/glut.h>
|
||||||
|
|
||||||
static int Width = 400, Height = 400;
|
static int Width = 400, Height = 400;
|
||||||
static GLuint MyFB;
|
static GLuint MyFB, MyRB;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -65,6 +65,7 @@ Display( void )
|
||||||
|
|
||||||
free(buffer);
|
free(buffer);
|
||||||
glutSwapBuffers();
|
glutSwapBuffers();
|
||||||
|
CheckError(__LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -91,6 +92,17 @@ Reshape( int width, int height )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
CleanUp(void)
|
||||||
|
{
|
||||||
|
glDeleteFramebuffersEXT(1, &MyFB);
|
||||||
|
glDeleteRenderbuffersEXT(1, &MyRB);
|
||||||
|
assert(!glIsFramebufferEXT(MyFB));
|
||||||
|
assert(!glIsRenderbufferEXT(MyRB));
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Key( unsigned char key, int x, int y )
|
Key( unsigned char key, int x, int y )
|
||||||
{
|
{
|
||||||
|
|
@ -98,7 +110,7 @@ Key( unsigned char key, int x, int y )
|
||||||
(void) y;
|
(void) y;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case 27:
|
case 27:
|
||||||
exit(0);
|
CleanUp();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
glutPostRedisplay();
|
glutPostRedisplay();
|
||||||
|
|
@ -108,7 +120,6 @@ Key( unsigned char key, int x, int y )
|
||||||
static void
|
static void
|
||||||
Init( void )
|
Init( void )
|
||||||
{
|
{
|
||||||
GLuint rb;
|
|
||||||
GLint i;
|
GLint i;
|
||||||
|
|
||||||
if (!glutExtensionSupported("GL_EXT_framebuffer_object")) {
|
if (!glutExtensionSupported("GL_EXT_framebuffer_object")) {
|
||||||
|
|
@ -124,29 +135,32 @@ Init( void )
|
||||||
assert(!glIsFramebufferEXT(MyFB));
|
assert(!glIsFramebufferEXT(MyFB));
|
||||||
/* Note, continue to use MyFB below */
|
/* Note, continue to use MyFB below */
|
||||||
|
|
||||||
glGenRenderbuffersEXT(1, &rb);
|
glGenRenderbuffersEXT(1, &MyRB);
|
||||||
assert(rb);
|
assert(MyRB);
|
||||||
assert(!glIsRenderbufferEXT(rb));
|
assert(!glIsRenderbufferEXT(MyRB));
|
||||||
glDeleteRenderbuffersEXT(1, &rb);
|
glDeleteRenderbuffersEXT(1, &MyRB);
|
||||||
assert(!glIsRenderbufferEXT(rb));
|
assert(!glIsRenderbufferEXT(MyRB));
|
||||||
rb = 42; /* an arbitrary ID */
|
MyRB = 42; /* an arbitrary ID */
|
||||||
|
|
||||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB);
|
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB);
|
||||||
assert(glIsFramebufferEXT(MyFB));
|
assert(glIsFramebufferEXT(MyFB));
|
||||||
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rb);
|
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, MyRB);
|
||||||
assert(glIsRenderbufferEXT(rb));
|
assert(glIsRenderbufferEXT(MyRB));
|
||||||
|
|
||||||
glGetIntegerv(GL_RENDERBUFFER_BINDING_EXT, &i);
|
glGetIntegerv(GL_RENDERBUFFER_BINDING_EXT, &i);
|
||||||
assert(i == rb);
|
assert(i == MyRB);
|
||||||
|
|
||||||
glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &i);
|
glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &i);
|
||||||
assert(i == MyFB);
|
assert(i == MyFB);
|
||||||
|
|
||||||
|
CheckError(__LINE__);
|
||||||
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT,
|
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT1_EXT,
|
||||||
GL_RENDERBUFFER_EXT, rb);
|
GL_RENDERBUFFER_EXT, MyRB);
|
||||||
|
|
||||||
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height);
|
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, Width, Height);
|
||||||
|
|
||||||
|
CheckError(__LINE__);
|
||||||
|
|
||||||
{
|
{
|
||||||
GLint r, g, b, a;
|
GLint r, g, b, a;
|
||||||
glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,
|
glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,
|
||||||
|
|
@ -157,6 +171,7 @@ Init( void )
|
||||||
GL_RENDERBUFFER_BLUE_SIZE_EXT, &b);
|
GL_RENDERBUFFER_BLUE_SIZE_EXT, &b);
|
||||||
glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,
|
glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,
|
||||||
GL_RENDERBUFFER_ALPHA_SIZE_EXT, &a);
|
GL_RENDERBUFFER_ALPHA_SIZE_EXT, &a);
|
||||||
|
CheckError(__LINE__);
|
||||||
printf("renderbuffer RGBA sizes = %d %d %d %d\n", r, g, b, a);
|
printf("renderbuffer RGBA sizes = %d %d %d %d\n", r, g, b, a);
|
||||||
|
|
||||||
glGetIntegerv(GL_RED_BITS, &r);
|
glGetIntegerv(GL_RED_BITS, &r);
|
||||||
|
|
@ -166,10 +181,9 @@ Init( void )
|
||||||
printf("Visual RGBA sizes = %d %d %d %d\n", r, g, b, a);
|
printf("Visual RGBA sizes = %d %d %d %d\n", r, g, b, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
CheckError(__LINE__);
|
|
||||||
|
|
||||||
/* restore to default */
|
/* restore to default */
|
||||||
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
|
||||||
|
CheckError(__LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue