Introduction
The OpenGL Window Framework is just what it says it is, a framework for creating and controlling windows capable of holding an OpenGL rendering context in it.
You might be wondering why we need yet another method of setting up an OpenGL window and I dont blame you, between GLUT, SDL and GLFW you would think all the bases had been covered however there were numerous features of those various systems I didnt like, from the invasiveness of the GLUT framework to the C-style system of SDL and GLFW and the overly long and complex ways of setting up a context and no support for multithreading that I could find. So I looked at the problem and decided it was time for a C++ system to be born to take care of those gaps.
The OpenGL Window Framework (OGLWFW) is the fruit of that labour, the current release took approx. 8 months to come in the world, and currently forefills my aims of a simple interface as well as a more complex system, the ability to create multi-windows and ofcourse multi-thread support.
OGLWFW Features
- C++ interface via a WindowManager class
- Handles OpenGL Extension initalisation via the inclusion of GLee
- Easy to setup a window and context
- Multiple windows can be created, each with a different type of context
- More complex setup system if needed
- The ability to set a specific display mode, including refresh rate, so no more 60hz only OpenGL games!
- The ability to query and return all support OpenGL modes
- The ability to query and return all support display modes
- The ability to create a window in one thread and initalise OpenGL in another to faciltate Multi-threaded programming
- Clean WindowManager interface for cross platform coding, just link to the correct lib and you are go
- All platform dependant code in their own modules, so easy to extend for new platforms
- Boost style autolinking of libs (which can be disabled)
- licensed under the very open zlib/png license for useage by anyone for anything
The OGLWFW unlike other windowing libraries doesnt concern its self with anything beyond making and controlling windows, its up to the end user to deal with loading graphics, making sounds and other things which other libraries can supply you with.
Future Plans
While the framework is perfectly useable as it is and forefills my basic requirements work wont stop there, features I'd like to add beyond the current release are
- User configurable message system
- Full Multiple monitor support
- Linux and OSX ports of the windowing code
- Support for greater than 32bit color modes
- And any other OpenGL context enchancements which come along
Credits
This library wouldnt have been possible without some help from others
- Ben Woodhouse for the production and maintaince of GLee which is used for the initalisation of the OpenGL extensions function pointers
- Oluseyi Sonaiya for his article on Gamedev.net about Wrapping a Win32 window in class, it was a great kick start to this project
- The guys on #i-fighter for testing some inital versions
- The guys in the Trickery.net programming forums for also testing some inital versions
- Sourceforge for hosting the web page and downloads
- Finally 0beron and Heeen on the Gamedev.net OpenGL forum for reminding me to test the Multi-threading aspects by posting some problems they were having ;)
- Markus Wiegand for reporting some spelling errors in the function names.