I was going to reply with this:
“If anyone wants to implement this, I think the way to do it is to put the mouse cursor randomly on the edge of a circle whose radius is a few hundred pixels. The randomness is important, though I’m not sure it would be possible to count how many cursors there are.”
And then I realized that doesn’t work, for a few reasons.
One is that you won’t be able to count how many cursors appear during one second. It’ll all look like a jumble.
That leads to the argument that you should place the cursors at a consistent spacing, and the spacing needs to make it so that the cursors stay at the same spot on the screen each loop around the circle.
Unfortunately that doesn’t work either, because you’ll end up seeing a trail of cursors going around a circle once per second, and counting the cursors is hopeless.
So I think you’d need to make a list of the spots on the circle where the cursors should go, then randomly select from them as quickly as possible. That will let each cursor be perceptible because they’ll be spread out over time; the next cursor won’t be just one pixel apart, so this eliminates the “trail of cursors” problem.
I’m still a bit skeptical this could work, but I admit I can’t think of a reason it wouldn’t. You’ll need to be careful, because it’s really easy to fool yourself that you’ve done it correctly when you haven’t.
It would be interesting to make a WebGL canvas and try this out for real. Or maybe just reposition the mouse cursor with Python instead of doing anything graphical.
It seems important to reposition the mouse cursor rather than use WebGL to draw frames, but I think both could work. Actually, the WebGL route would be more faithful to the question of whether gamers specifically can notice 240Hz; there are all kinds of reasons why repositioning the mouse cursor wouldn’t really tell you that. Vice-versa too, because it might be possible to notice when repositioning cursors but not when using WebGL, though I can’t think of why that would be the case.
Neat idea. Thanks.