#include #include #include #include #include #define WINDSIZEX 100 #define WINDSIZEY 100 #define TEXSIZE 2 void init (void) { int i; GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; glClearColor (0.0, 0.0, 0.0, 1.0); glColor4fv (white); glDisable (GL_DITHER); // Check if GL_EXT_framebuffer_object is supported if (!strstr (glGetString (GL_EXTENSIONS), "GL_EXT_framebuffer_object")) { printf ("GL_EXT_framebuffer_object is not supported\n"); exit(0); } else { printf ("GL_EXT_framebuffer_object is supported\n"); } } #define CHECK_FRAMEBUFFER_STATUS() \ { \ GLenum status; \ status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); \ switch(status) { \ case GL_FRAMEBUFFER_COMPLETE_EXT: \ printf("GL_FRAMEBUFFER_COMPLETE_EXT\n"); \ break; \ case GL_FRAMEBUFFER_UNSUPPORTED_EXT: \ printf("GL_FRAMEBUFFER_UNSUPPORTED_EXT\n"); \ /* choose different formats */ \ break; \ case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: \ printf("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\n"); \ break; \ case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: \ printf("GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\n"); \ break; \ case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: \ printf("GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\n"); \ break; \ case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: \ printf("%d:GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\n", __LINE__);\ break; \ case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: \ printf("GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\n");\ break; \ default: \ /* programming error; will fail on all hardware */ \ printf("programming error\n"); \ break; \ } \ } static void test (void) { GLfloat red[] = { 1.0, 0.0, 0.0, 1.0 }; GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; GLfloat green[] = { 0.0, 1.0, 0.0, 1.0 }; GLuint fbs[8]; GLuint textures[8]; GLint t[TEXSIZE * TEXSIZE * 3]; int i, j; int maxColorAttachment; glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS_EXT, &maxColorAttachment); printf("maxColorAttachment = %d\n", maxColorAttachment); glGenFramebuffersEXT (1, fbs); glGenTextures (1, textures); glBindTexture (GL_TEXTURE_2D, textures[0]); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, TEXSIZE, TEXSIZE, 0, GL_RGB, GL_INT, NULL); printf ("%s\n", gluErrorString (glGetError ())); for (i=0; i