Welcome to David Henry's homepage!
About this page
This is my personnal homepage. You'll find on this page some of my own programs, generally
OpenGL demos, sometimes accompanied by an article in french and/or in english (a tutorial, a
file format specification, etc.). All my works are Open Source, because first, Open Source
rocks, and then, because their primary purpose are for education and they would be completely
useless if they were closed source.
You can contact me by mail at tfc.duke on gmail.com
(french/english).
USB PICkit™ Programmer
usb_pickit 1.6 is a PIC programmer for use with Microchip's PICkit™ 1 Flash Starter Kit. This
little low cost development board allow you to program some 8-bits PIC microcontrollers (8 and
14 pins) like 12F675 and 16F684 devices.
This programmer is based on the 1.5 verion by Jeff Boly, has some improvements and a big code
rewriting. It works on GNU/Linux and Windows. More informations and
download...
Demos and programs
All these programs are Open Source. Some old works haven't been tagged yet with a licence. I
assume they are licensed under the
MIT-license, like a majority of
my other works.
My programs are compiled with GCC
under GNU/Linux. I try to make them portable, at least buildable under Windows with
MinGW. Not all demos are
distributed with compiled binaries. I try to keep them minimalistic, with less bloat as possible,
so that it's easy to understand the feature they are illustrating (loading a model, an image, etc.)
From time to time, I rework one of them and update it. So none of them is in final version.
Programs written in C
-
Simple GLUT window, (aug. 14, 2007), for OpenGL.
Code base for a GLUT based application. Create an OpenGL window and handle keyboard
and mouse input, and time.
- Libraries: OpenGL, GLU, GLUT.
- Files:
glutbase.c (7.2 KB).
-
Simple SDL window with OpenGL, (aug. 14, 2007), for OpenGL.
Code base for an SDL based application. Create an OpenGL window and handle keyboard
and mouse input, and time.
- Libraries: OpenGL, GLU, SDL.
- Files:
sdlbase.c (7.3 KB).
-
Simple GLX window, (aug. 14, 2007), for OpenGL.
A simple OpenGL window created with the GLX API. Just to see how it's boring not using
a portable framework.
- Libraries: OpenGL, GLU, X11.
- Files:
glx.c (9.9 KB).
-
TGA (Truevision TARGA, *.tga) Texture Loader, (aug. 14, 2007), for OpenGL.
Loads 8, 16, 24 and 32 bits paletted, grayscale and truecolor TGA images. RLE compression is
supported.
Reads everything I can export with The Gimp.
- Libraries: OpenGL, GLU, GLUT.
- Files:
- Detailed article:
français.
-
DDS (DirectDraw Surface, *.dds) Texture Loader, (aug. 14, 2007), for OpenGL.
Loads compressed DDS images. Supports only DXT1, DXT3 and DXT5 compression formats.
- Libraries: OpenGL, GLU, GLUT.
- Files:
dds.c (9 KB).
-
PNG (Portable Network Graphics, *.png) Texture Loader, (sep. 22, 2012), for
OpenGL.
Loads paletted, grayscale and truecolor PNG images. In theory, any type of PNG image should be
supported.
Depends on libpng and zlib.
- Libraries: OpenGL, GLU, GLUT, libpng, zlib.
- Files:
- Detailed article:
français.
-
JPEG (Joint Photographic Experts Group, *.jpg) Texture Loader, (sep. 22, 2012),
for OpenGL.
Loads every JPEG image. Depends on libjpeg.
- Libraries: OpenGL, GLU, GLUT, libjpeg.
- Files:
-
PCX (ZSoft PCX, *.pcx) Texture Loader, (aug. 14, 2007), for OpenGL.
Loads 1, 4, 8 and 24 bits paletted and truecolor PCX images.
Useful when dealing with old
data such as Quake 2's models.
- Libraries: OpenGL, GLU, GLUT.
- Files:
pcx.c (11 KB).
-
BMP (Windows/OS2 Bitmap, *.bmp) Texture Loader, (mar. 26, 2023), for OpenGL.
Loads 1, 4, 8, 24 and 32 bits paletted and truecolor BMP images. Bitfields and RLE compression are supported.
- Libraries: OpenGL, GLU, GLUT.
- Files:
bmp.c (19 KB).
-
OBJ (Alias|Wavefront Object, *.obj) Model Loader, (apr. 2, 2011), for OpenGL.
Load OBJ meshes. MTL files, NURBS and curves are not supported. This is a minimal loader.
I don't remember why I have written it.
- Libraries: OpenGL, GLU, GLUT.
- Files:
obj.c (13 KB).
-
GL_ARB_texture_compression demo (using TGA texture loader), (aug. 14, 2007)
This is a demonstration of the GL_ARB_texture_compression
extension usage.
It shows two textures created from the same source image, one with S3 compression, the other without.
It's really simple. It uses the TGA texture loader.
-
Reflective environment mapping demo, (jan. 21, 2007)
A cool looking demo of reflective environment mapping.
It can use three rendering modes: standard way through fixed pipeline, through programmable pipeline with ARB
vertex and fragment programs, or with GLSL shaders (requires OpenGL 2.0).
It uses the TGA loader. Includes binaries for Linux (x86) and Windows.
- Libraries: OpenGL, GLU, GLUT, GLEW.
- Files:
envmap.zip (1.7 MB).
-
Object outlining demo, (aug. 14, 2007)
This demo illustrates four polygon outlining techniques.
- Libraries: OpenGL, GLU, GLUT.
- Files:
outline.c (11.0 KB).
-
Quake's MDL Viewer (*.mdl), (mar. 21, 2015)
A simple MDL model viewer, with lighting, texture mapping and animation.
-
Quake 2's MD2 Viewer (*.mdl), (aug. 14, 2007)
A simple MD2 model viewer, with lighting and animation. No texture mapping.
-
Doom 3's MD5 Viewer (*.md5mesh, *.md5anim), (aug. 14, 2007)
A simple MD5 model viewer, with animation support. No texture mapping. No lighting.
Less than 1300 lines of code.
-
Doom 3's Ultralight MD5 Viewer (*.md5mesh, *.md5anim), (feb. 1, 2006)
An ultralight version of the MD5 model viewer. No animation, No texture mapping. No lighting.
Fits in less than 650 lines of code.
- Libraries: OpenGL, GLU, GLUT.
- Files:
md5.c (14 KB).
- MD5 file format specifications:
english,
français.
Programs written in C++
-
3D Math library (Vector, Matrix, Quaternion), (feb. 19, 2006), for OpenGL.
This is my own 3D math library I use in some of my projects.
This package includes a test
program (Main.cpp).
-
Texture loaders, (may 19, 2006). Some OpenGL texture class loaders.
Supports 2D, rectangle and cube map textures. Can load TGA, PNG, JPEG, DDS and PCX images
files.
This package includes a test program (Main.cpp).
- Libraries: OpenGL, GLU, GLEW, boost, libjpeg, libpng, zlib.
- Files:
Texture.zip (58 KB)
-
Shader library, (july. 13, 2007). GLSL shader classes.
This package includes some shader samples and Linux and Windows binaries.
- Libraries: OpenGL, GLEW.
- Files:
Shader.zip (515.9 KB)
-
DataManager, (feb. 25, 2006). This is a template data manager class.
It allows to register some objects in order to prevent duplicates (this is useful for textures,
models, sounds, etc.).
-
GlErrors, (jan. 24, 2007). This is a simple OpenGL error checker function.
It checks if an OpenGL error has occured and print it to the standard output. Nothing
extraordinary but extremely useful for development :-)
-
Doom 3's MD5 Viewer, (jan. 28, 2007). Still in development
Source code is under MIT-license (not all files are license-tagged).
Supports bump mapping with GLSL and ARB vertex and fragment programs. It includes
two models from the Doom 3 demo (I'm not sure I can redistribute them...). See the
readme file for how to use it.
- Libraries: OpenGL, GLU, GLEW, SDL, SDL_ttf, libjpeg, libpng, zlib, boost.
- Files:
md5loader-09.tar.bz2 (8.3 MB)
-
Quake 3's MD3 Viewer (april 2, 2011), loads and displays a player and a weapon.
Supports lighting, texture mapping and animation.
Includes a sample player model with weapon. See README for how to use it.
Note (1): it uses the POSIX opendir
/readdir
functions, which are not
implemented in all compilers under Windows (MinGW supports them).
Note (2): This demo works on little endian architectures only.
- Libraries: OpenGL, GLU, GLUT, boost, libjpeg.
- Files:
md3loader.zip (2.4 MB);
-
Quake 2's MD2 Viewer (july 13, 2007), loads and displays a player and a weapon.
Supports lighting, texture mapping and animation.
Includes a sample player model with weapon. See README for how to use it.
Note (1): it uses the POSIX opendir
/readdir
functions, which are not
implemented in all compilers under Windows (MinGW supports them).
Note (2): This demo works on little endian architectures only.
-
Quake 2's MD2 Viewer + ARB Bump Mapping (old). This is the MD2 Viewer demo with
simple DOT3 bump mapping, using ARB extensions (that is to say, the most basic bump mapping
which works with old graphic cards).
Includes a sample model with its normal map.
Linux package depends on libSDL; Windows packages are self-sufficient.
Note: This demo works on little endian architectures only.
-
Quake's MDL Viewer (july 13, 2007), for nostalgy.
Supports lighting, texture mapping and animation.
Includes a sample model with multiple skins.
Note: This demo works on little endian architectures only.
-
Particle Fountain (feb. 9, 2006), a cool looking particle fountain.
It can render particles as quads or as points with GL_ARB_point_sprite
and
GL_ARB_point_parameters
extensions.
-
Texture Manager (PNG, JPEG, TGA, BMP, PCX) (stone age), an antique texture manager.
One day I will completely erase it. *aouch* ugly.
Linux package depends on libSDL, libpng, zlib and libjpeg; Windows packages are self-sufficient.
- Libraries: OpenGL, GLU, SDL, libjpeg, libpng, zlib.
- Files:
- Detailed article:
français.
Articles (in english)
OpenGL/Game programming:
Articles (in french)
Articles programmation/OpenGL/jeux vidéos :
Articles programmation SDK d'Half-Life 1 :
Precompiled Win32 libraries
Here are some libraries I use in my programs, compiled for windows (under GNU/Linux, use the
package system of your distro). Although it is present in the table, I no longer supports MS
Visual Studio 6.0 (too old, too bad).
Subliminal message: Vi sucks! Emacs rocks!