Why wouldn't you *just* support raw mouse input?

Started by
2 comments, last by 21st Century Moose 9 years, 11 months ago

Hey guys,

I just asked myself the question why some games (especially the older ones like quake and half life) gave the user the option whether to use raw mouse input or not (probably WM_INPUT vs WM_MOUSEMOVE).

I wondered why they would even give the user the option instead of using raw mouse input by default?

This may be a trivial question but I'm really wondering.

Visit my blog, follow me on twitter or check out my bitbucket repositories.

Advertisement

Provided that they both have the same support, it can be desirable for some users to have the option to depend on control panel settings for mouse movement and smoothing.

makes sense. Thanks ;)

Visit my blog, follow me on twitter or check out my bitbucket repositories.

Older games generally supported either DirectInput or Windows messaging. Raw input wasn't available as an option until Windows XP.

As for the reason why, at the time DirectX was new and risky technology. It had only recently become available (the first version of DirectInput dates to 1995, Quake dates to 1996), and driver support (for everything, not just input devices) was absolutely dreadful back then. Particularly under Windows 9x, it was perfectly possible for a misbehaving driver to blue-screen the OS. There was no WHQL, no WER, no real certification process, patchy support, and device capabilities were all over the map.

Providing Windows messaging as a fallback option (or even as the default with DirectInput being for those who like to live dangerously) made total sense: at least there would be an option that worked! The alternative was input possibly not working at all, or potentially even crashing your OS.

This all seems like ancient history nowadays, and everything has moved on a lot since then: technology isn't static, and improvements do come in with newer software revisions. The cult of "older = better" is sometimes right, but more often wrong.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement