Home

Programming tutorials, legacy graphics and newer development musings

Welcome to Swiftless Tutorials. Somehow this site has now been on the internet for the better part of 20 years, which is equal parts cool and mildly terrifying.

Swiftless started as a place for me to write down the programming and computer graphics things I was learning, usually because I had just spent far too long figuring something out and thought somebody else might appreciate not having to do the same thing. That part has not really changed.

What is here?

  • OpenGL 2.x and terrain tutorials – classic fixed-function OpenGL, including the basics, cameras, lighting, textures, VBOs and terrain generation.
  • GLSL and early modern OpenGL – shaders, VAOs, VBOs, matrices and the move away from the fixed-function pipeline.
  • WebGL – a smaller introduction to getting OpenGL-style rendering running in the browser.
  • Maths and PhysX – some of the supporting maths I found useful when learning graphics, plus the original AGEIA PhysX 2.7 tutorials preserved as historical material.
  • The blog – newer development notes covering things I run into in the real world: .NET, Blazor, Azure, AI agents, automation, web development and whatever problem has annoyed me enough that I think it deserves a write-up.

Old code does not have to mean bad code

A lot of the graphics tutorials here are old. I do not want to pretend a tutorial originally written around 2008 was secretly written for 2026, because that removes a lot of the context that makes the site useful. Instead, I am working through the old material, fixing genuine bugs, cleaning up the source so it is copy/paste friendly, improving the explanations and clearly marking compatibility or historical information where it matters.

So yes, you will still find fixed-function OpenGL here. You will also find code that has been reviewed rather than simply abandoned. If you are maintaining something old, learning how the pipeline works underneath the newer APIs, or you are just curious about how we used to do things, there is still plenty worth learning from it.

What am I doing these days?

I am a Senior Software Developer in Adelaide, currently working at RDI Partners on AI agents, automation and web systems. My day-to-day work is a long way from the spinning OpenGL cubes that originally filled this site, but the thing I enjoy has stayed pretty consistent: understanding how something works, getting rid of unnecessary manual work and building software that makes somebody’s day easier.

Most of my recent development work has been around .NET, Blazor, Azure, SQL, APIs and web applications. In 2023 I also gave my first ever presentation at ADNUG (Adelaide .NET User Group), talking about moving an online retail platform to Blazor. I went way over time, naturally:

Legacy OpenGL in C#? Apparently, yes.

I have also been getting the original OpenGL tutorials running in .NET. There are wrappers for OpenGL, of course, but finding examples of the old fixed-function pipeline from C# was surprisingly painful. So after the usual amount of trial, error and wondering why I was doing this to myself, I put the working examples on GitHub:

Swiftless OpenGL Legacy C# examples on GitHub

Have a look around, break something, figure out why it broke, and hopefully learn something useful along the way.

Good luck coding!
Swiftless