I have been using freeglut for some years and I now compile freeglut from source and statically link to a library. This is all on Linux so I'm not now using the portability of freeglut to any degree.

My next project is to do some basic image processing (decimation, filtering etc.) that I want to do on the GPU rather than the CPU. I have a multi-threaded set of image processing code running on the CPU which I have discovered is CPU bus bandwidth limited -- more cores makes no difference.

My first thought was that I should start with OpenCL but there are posts on the web that suggest this isn't really ready for easy everyday use. In addition there is a whole new learning curve for me!

The broad sequence I want to execute is:

  1. Load an image and texturize it
  2. Compile a fragment shader
  3. Open a  Frame Buffer Object
  4. Render the texture to the FBO with the shader
  5. Save an image from the FBO

I have each of these aspects working within various freeglut/OpenGL contexts, though not yet in an integrated form.

So my question is: do I need to call glutCreateWindow() if I'm just using an FBO?

The general sequence of things would be:

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
        glutIdleFunc(glut_OpenGL_idle);
  // no other call backs are defined      
// no window is defined
glutMainLoopEvent();

Perhaps this is a hopeless perversion of the concept of freeglut and perhaps I should just bite the bullet and create my own OpenGL context?

Any comments welcome.
Clive McCarthy.