Thanks for great work, this is my go-to environment for
as-portable-as-I-know-how-to-make-it C++ code. You sort of buried the
lead :) waiting until the end to mention the very cool Asteroids demo!
This will be a nice dependency-less OpenGL and sound tutorial for me.
I did encounter an error trying to run this, complaining about a
missing xinput1_3.dll; but changing the LDLIBS to use xinput1_4
instead worked fine.
> You sort of buried the lead :) waiting until the end to mention the very
> cool Asteroids demo!
Heh, given your comment I've decided to move the video to the top of the
article so that hopefully it more quickly grabs attention.
> This will be a nice dependency-less OpenGL and sound tutorial for me.
Note that it's OpenGL 1.1 since I wanted to keep it really simple. It's
good enough for some things, like an Asteroids clone, but not everything.
This is the last version of OpenGL directly supported by Windows, and so
it's very easy to use. Later versions require accessing extensions,
creating multiple OpenGL contexts, and using an OpenGL loader. I've worked
all that out, too, in large part thanks to the OpenGL wiki, and I should
probably publish it in some form.
> I did encounter an error trying to run this, complaining about a missing
> xinput1_3.dll; but changing the LDLIBS to use xinput1_4 instead worked
> fine.
Hmm, I've updated the Makefile, but that's actually a little irritating
that this came up. I use my previous projects as notes for what I've
already figured out, and the gamepad support here arose from my Emacs
joystick project back in 2016. It seems things have changed a bit over the
past 5 years, though hopefully for the better.
https://docs.microsoft.com/en-us/windows/win32/xinput/xinput-versions
It looks like XInput 1.4 is officially supported by Windows 8 and later,
so that's what I should be using. If I understand correctly, XInput 1.3
was actually part DirectX, and so wouldn't be available without installing
DirectX. It probably worked on my Windows system since I've installed some
older games that installed XInput 1.3 as part of some older DirectX
release. (Wine always provides XInput 1.3, so this will never be an issue
there.)