During my studies I had to implement functinalities and algorithms for courses about graphics programming and virtual worlds etc. To easier implement or test methods or algorithms I thought about a simple framework, so I can avoid creating a full OpenGL stack and I/O functions etc. every time I was prototyping something or implementing stuff.
So I created a simple and lightweight OpenGL framework named NoWork. It was designed to be as simple as possible but still provide all neccessary functions to create a prototype or implement methods in either rendering or gameplay.
The following features are currently implemented:
- Modern OpenGL 4.0+ render pipeline (no static pipeline)
- Mesh loading using assimp
- Sprite system including spritesheet animation
- Font rendering
- Framebuffer abstraction
- Shaders with preprocessor features
- HDR Textures
- Asynchronous loading / multithreading support
- OpenGL abstraction
All OpenGL functions are abstracted into an object oriented class system, so you don’t have to call OpenGL functions by yourself. This also provides thread safety using a jobhandler system, so multitreading is supported.
The framework itself can be either used as static or dynamic library. All you have to do is derive a class from GameBase class and register it to the framework object. For more infos have a look at the example project
The project is open source and published under the GNU 3.0 license. You can find the project at GitHub. Feel free to fork the project and contribute to it.
P.S.: The article picture above is rendered using NoWork and a physically based shader using a GGX-Smith-Schlick specular term and Lambert diffuse term.