Rapid taps on an OpenGL ES app introducing input delay
- by Tim R.
I am starting out writing a 2D game in OpenGL ES, and I have encountered an odd problem: if I rapidly tap the touchscreen, the input starts lagging behind the display. The more times I tap, the more delay it causes between the input and any indication of that input onscreen.
It only happens if I intentionally tap very rapidly, but not from tapping and dragging with any number of fingers.
What could be causing this?
Excessive details follow:
Both accelerometer input and taps are delayed by just tapping.
The only events I am responding to are touchesBegan (below) in my EAGLView and accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration in my Game object.
There doesn't seem to be any upper limit to the amount of delay: I've gotten up to 12 seconds of delay by tapping rapidly with five fingers.
I have not seen any drops in framerate (it stays constantly at 60 fps) in the OpenGL ES tool in Instruments or by taking 1/the time between updates.
Possibly relevant code:
- (void) drawView:(id) sender
{
[game update:allTouches];
[renderer render:game];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
allTouches = [event allTouches];
}
allTouches is a pointer that gets passed to my Game every update, which passes it to each GameObject in their update methods.