How to catch input on the canvas without a draw call?

Synopsis: Is there a way to catch input without costing a draw call?

I have a neat class for measuring inputs to my canvas, catching events like IPointerDownHandler etc and interpreting complex gestures from them.

For it to work, I need a blocking object on the canvas such as an image.

I want to use it on a big empty area of the screen to measure input to the world behind. Normally I do this by putting a big empty image over the area with an alpha of 0.

However, this is needlessly expensive for the GPU to draw this invisible object.

Is there a way to catch input without the draw call?

Without seeing the actual code from your class I can only speak in general terms.

  1. It seems weird that you’d need an image to capture input. Unity’s Input class can do that just fine with nothing in the scene to render.

  2. It might be that you just need a collider, not an actual image.

  3. I wouldn’t lose too much sleep over one draw call.