About MicroGlut
This page is abandoned! MicroGlut will now be in my packages archive, part of the computer-graphics.se pages. Here.
MicroGlut is a stripped-down portable API for
window and event handling in OpenGL applications. As the name implies,
the API is based on the de facto standard GLUT
(OpenGL Utility Library) and its more current free clone FreeGLUT. (GLUT is
abandoned but FreeGLUT is updated and perfectly usable.) The code is,
however, not based on neither.
MicroGlut is based on the following ideas:
1) It should be small, few files, suitable for inclusion in your
projects as source, ready for editing any time you like. In this sense,
it is inspired by another small unit, named Pez, which also is intended
to plug in as source.
2) Don't change what's good. GLUT is a great API, so let's follow
that as closely as possible. The callback system is highly portable
between languages and easy to learn.
3) Ditch all that is bad, outdated or of minor importance. GLUT
includes support for a lot of obscure input devices.
It is notable that GLUT's geometry calls, like glutSolidSphere and
the Utah Teapot, are not currently included. Are they really that
important? I fear that including them would make MicroGlut too big,
make it impossible to keep it "micro" and make it into a plain FreeGlut
clone.
4) It should focus on modern OpenGL. It is usable from OpenGL 2
(currently only if you change the context initialization), but the
focus
is on OpenGL 3.2 (and better).
5) Add new features that it needs. So far, very few new calls are
introduced. New features not avaiable in GLUT:
- glutKeyIsDown. MicroGlut keeps a bitmap for all keys telling
whether they are up or down. This is very convenient when writing games.
- glutRepeatingTimer. Instead of calling a callback, this just
fires a new update.
- glutInitContextVersion. This is inherited from FreeGLUT.
- glutCheckLoop, also from FreeGlut (I think) allows one-shot calls
into the main loop. This fixes a common complaint about GLUT, that
glutMain never returns. (This doesn't currently work so consider it
planned.)
- glutToggleFullScreen. Now that is convenient!
This means that MicroGlut CAN:
- create a window with OpenGL context.
- handle window updates and resizing
- handle timers
- handle keyboard and mouse input.
- handle pop-up menus
- run full-screen (Mac, so-so on Linux)
but it can NOT
- draw the Utah Teapot, spheres, toruses etc without you loading an
external model
- draw ugly GLUT-style text
- handle exotic external devices
- handle multiple windows (yet)
These lists will change a bit over time but my ambition is to keep
it tight, much tighter than the alternatives.
Mac version
The Mac version was the first one I made. It is based on
NSOpenGL, written in Objective C. It is the most complete version, although the Linux version is catching up.
Linux version
The Linux version lacks menu support but is
otherwise pretty usable. IMHO the fixes and additions from 150205 might
be what makes it satisfactory.
Windows version
The Windows version has been available since
august 2015, when I
felt it was mature to use... with caution. By 2017, it is even more
mature, but just like the Linux version, menu support is still missing.
In 2020, I moved to MinGW and CodeBlocks which made it much better.
Downloads
The latest MicroGlut is part of my "common" archive for my computer graphics labs (link to 2017 version):
common.tar.gz
Here are some older versions:
Here is MicroGlut
source-code for Mac:
MicroGlut-mac-150424.zip
MicroGlut-mac-150205.zip
MicroGlut-mac-140213.zip
MicroGlut-mac-10-sep-2013.zip
and for Linux:
New version as of 150303: MicroGlut-linux-150303.tar.gz
New version as of 150205: MicroGlut-linux-150205.tar.gz
New version as of 140402: New MicroGlut version for Linux.
MicroGlut-linux-23-oct-2013.tar.gz
MicroGlut-linux-10-sep-2013.gz
and Windows:
First beta 150817: psychteapot+MicroGlut-Windows-b1.zip
License and such legal stuff
Considering all the problems with GLUT not having a licence that
allowed people to distribute changes (which is why it died when the
author abandoned it), what is the license for MicroGlut? Well, at this
early stage I havn't bothered much about it. It is a small package,
does it need a license? If it gets popular it will get one, and I
promise that it won't be restrictive. You will be allowed to
redistribute changes (as long as the source is clearly stated), and you
will be able to use it in commercial projects. I consider Public Domain
or something like LGPL. Probably Public Domain.