windows port
[miniglut] / README.md
1 MiniGLUT
2 ========
3 MiniGLUT is a subset of GLUT (or more precisely a subset of FreeGLUT)
4 implemented in a single C source file, without any non-essential dependencies,
5 not even the C library.
6
7 You can use MiniGLUT by simply dropping two files: `miniglut.h` and `miniglut.c`
8 into your project source tree, or by building MiniGLUT as a static library and
9 linking with it.
10
11 MiniGLUT does not intend to replace a proper GLUT library like FreeGLUT for
12 hacking OpenGL experiments and small programs. The purpose of MiniGLUT is to
13 replace a proper GLUT library when it's time for release, in order to minimize
14 runtime dependencies of the resulting binary.
15
16 A second reason is for porting UNIX OpenGL programs to Windows, especially when
17 using the microsoft compiler, where setting up and linking with a proper
18 3rd-party library like FreeGLUT is an ordeal in itself. Even more so if you
19 decide to statically link, at which point you need to deal with the whole "MSVC
20 runtime" chaos. Since MiniGLUT does not call any C library functions, even if
21 you decide to link it as a static library, it will not affect your choice of
22 MSVC runtime library.
23
24 Missing features
25 ----------------
26 MiniGLUT being a subset of GLUT, is missing a number of features. Some of them
27 on purpose to keep it minimal, and some of them because I didn't happen to use
28 them in a program I wanted to link with MiniGLUT yet.
29
30 Missing GLUT features:
31  - Only supported systems are UNIX with X11 (GLX) and Windows (WGL).
32  - Indexed color contexts.
33  - Multiple windows.
34  - Subwindows.
35  - Overlays.
36  - Game mode (video mode switching).
37  - Menus.
38  - Font rendering.
39  - Some of the primitives.
40  - Buttons and Dials callbacks.
41  - Tablet callbacks.
42  - Spaceball callbacks are only implemented on UNIX/X11.
43  - Timer callback.
44
45 Missing FreeGLUT features:
46  - Mobile callbacks.
47  - Context version and profile selection and other context flags.
48  - Window close actions.
49  - Multi-touch/multi-pointer callbacks.
50  - User-pointer callbacks.
51  - Joystick callbacks.
52  - More missing primitives.
53
54 If wish to let me know how much you need one of the missing features, or even
55 better if you are volunteering to implement it yourself, contact me through
56 through email at: nuclear@member.fsf.org
57
58 Only plain-text emails, hard-wrapped at 72 columns will be accepted.
59
60 License
61 -------
62 Copyright (C) 2020 John Tsiombikas <nuclear@member.fsf.org>
63
64 MiniGLUT is free software. Feel free to use, modify and/or redistribute it,
65 under the terms of the GNU General Public License v3, or at your option any
66 newer version published by the Free Software Foundation. See COPYING for
67 details.
68
69 The intention is not to dictate a specific free software license (GPL) but to
70 shut the door to proprietary programs. If you want to use MiniGLUT in a free
71 software project with an incompatible free software license, contact me, and we
72 will figure out a way to enable that. Usually only other copyleft licenses are
73 incompatible with the GPL. There's no issue with combining GPL code with code
74 using other non-copyleft free software licenses like MIT/X11, 3-clause BSD, and
75 so on.
76 See: https://www.gnu.org/licenses/license-list.en.html#GPLIncompatibleLicenses