FrameBufferGLUT.cc

Go to the documentation of this file.
00001 #include <gra/framebuffer/FrameBufferGLUT.h>
00002 #include <GL/gl.h>
00003 
00004 #ifdef HAVE_FREE_GLUT
00005 #include <GL/freeglut.h>
00006 #else
00007 #include <GL/glut.h>
00008 #endif
00009 
00010 using namespace gra;
00011 
00012 FrameBufferGLUT::FrameBufferGLUT(unsigned mode,
00013                                  char*    label,
00014                                  int      width,
00015                                  int      height)
00016     : FrameBufferGL(width, height, mode)
00017 {
00018     unsigned glutMode = 0;
00019     if (_fbMode & FB_RGBA)   glutMode |= GLUT_RGBA;
00020     if (_fbMode & FB_INDEX)  glutMode |= GLUT_INDEX;
00021     if (_fbMode & FB_SINGLE) glutMode |= GLUT_SINGLE;
00022     if (_fbMode & FB_DOUBLE) glutMode |= GLUT_DOUBLE;
00023     if (_fbMode & FB_DEPTH)  glutMode |= GLUT_DEPTH;
00024     
00025     glutInitDisplayMode(glutMode);
00026     glutInitWindowSize(width, height);
00027     _id = glutCreateWindow(label);
00028     if (_id) {
00029         glutReshapeWindow(width, height);
00030         glMatrixMode(GL_MODELVIEW);
00031         glLoadIdentity();
00032     }
00033 
00034     glMatrixMode(GL_PROJECTION);
00035     glLoadIdentity();
00036     glOrtho(0, width, 0, height, -1, 1);
00037     glDisable(GL_LIGHTING);
00038     glMatrixMode(GL_MODELVIEW);
00039 }
00040 
00041 FrameBufferGLUT::FrameBufferGLUT(unsigned mode,
00042                                  int      id,
00043                                  int      x,
00044                                  int      y,
00045                                  int      width,
00046                                  int      height)
00047     : FrameBufferGL(width, height, mode)
00048 {
00049     unsigned glutMode = 0;
00050     if (_fbMode & FB_RGBA)   glutMode |= GLUT_RGBA;
00051     if (_fbMode & FB_INDEX)  glutMode |= GLUT_INDEX;
00052     if (_fbMode & FB_SINGLE) glutMode |= GLUT_SINGLE;
00053     if (_fbMode & FB_DOUBLE) glutMode |= GLUT_DOUBLE;
00054     if (_fbMode & FB_DEPTH)  glutMode |= GLUT_DEPTH;
00055 
00056     glutInitDisplayMode(glutMode);  
00057     _id = glutCreateSubWindow(id, x, y, width, height);
00058     if (_id) {
00059         glutReshapeWindow(width, height);
00060         glMatrixMode(GL_MODELVIEW);
00061         glLoadIdentity();
00062     }
00063 
00064     glMatrixMode(GL_PROJECTION);
00065     glLoadIdentity();
00066     glOrtho(0, width, 0, height, -1, 1);
00067     glDisable(GL_LIGHTING);
00068     glMatrixMode(GL_MODELVIEW);
00069 }
00070 
00071 void FrameBufferGLUT::showContent()
00072 {
00073     if (_fbMode & FB_DOUBLE) glutSwapBuffers();
00074 }
00075 
00076 #if 0
00077 unsigned FrameBufferGLUT::getWidth() const
00078 {
00079     return glutGet((GLenum)GLUT_WINDOW_WIDTH);
00080 }
00081 
00082 unsigned FrameBufferGLUT::getHeight() const
00083 {
00084     return glutGet((GLenum)GLUT_WINDOW_HEIGHT);
00085 }
00086 
00087 void FrameBufferGLUT::setWidth(unsigned w)
00088 {
00089     glutReshapeWindow(w, glutGet((GLenum)GLUT_WINDOW_HEIGHT));
00090 }
00091 
00092 void FrameBufferGLUT::setHeight(unsigned h)
00093 {
00094     glutReshapeWindow(glutGet((GLenum)GLUT_WINDOW_WIDTH), h);
00095 }
00096 #endif
00097 
00098 /*
00099 int FrameBufferGLUT::setActive()
00100 {
00101     glutSetWindow(_id);
00102     return 1;
00103 }
00104 */

Generated on Tue Nov 21 15:11:42 2006 for gra by  doxygen 1.4.6